From 5c22575a4b85764d5d7065045c8fb8f08a873fc5 Mon Sep 17 00:00:00 2001 From: Andrey_programmer Date: Fri, 29 Jun 2018 12:03:56 +0300 Subject: [PATCH 01/17] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B2=D1=82=D0=BE=D1=80=D0=BE=D0=B9=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D0=BA=D0=B8=20=D0=BF=D0=BE=20=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=D0=B5=D0=BD=D0=B4=D0=B0=D1=86=D0=B8=D1=8F=D0=BC=20?= =?UTF-8?q?=D0=98=D1=80=D0=B8=D1=88=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Andrey_portfolio-master/.babelrc | 6 - .../Andrey_portfolio-master/.gitignore | 2 - ... andrey-programmer@c10020.shared.hc.ru.xml | 24 - .../dist/bundle.8303b5be451bb869cba1.js | 12400 ---------------- .../dist/bundle.8303b5be451bb869cba1.js.map | 1 - ...er.ru.46eefeed1b9613d60bd463fa94088a19.jpg | Bin 101411 -> 0 bytes ...vicon.8db83ff7ee537763949a50974b0db481.ico | Bin 15086 -> 0 bytes .../logo.cfa6b5b41637cba602cc50c7f7ee5e74.png | Bin 95467 -> 0 bytes ...cture.77dc749c4a221f3c394fbc542b054f2c.jpg | Bin 294170 -> 0 bytes ...photo.b411654b264c7886968789f60bed3853.jpg | Bin 117946 -> 0 bytes .../Andrey_portfolio-master/dist/index.html | 516 - .../dist/style.caf6b12a0e2374fb2550.css | 4053 ----- .../dist/style.caf6b12a0e2374fb2550.css.map | 1 - .../Andrey_portfolio-master/package-lock.json | 11242 -------------- .../Andrey_portfolio-master/package.json | 37 - .../Andrey_portfolio-master/postcss.config.js | 5 - .../src/css/animate.css | 3494 ----- .../Andrey_portfolio-master/src/css/media.css | 103 - .../Andrey_portfolio-master/src/css/style.css | 29 - .../src/image/andrey_programmer.ru.jpg | Bin 101411 -> 0 bytes .../src/image/favicon.ico | Bin 15086 -> 0 bytes .../src/image/logo.png | Bin 95467 -> 0 bytes .../src/image/main_picture.jpg | Bin 294170 -> 0 bytes .../src/image/my_photo.jpg | Bin 117946 -> 0 bytes .../src/js/animation.js | 85 - .../src/js/contacts.js | 39 - .../Andrey_portfolio-master/src/js/index.js | 17 - .../src/js/main_display.js | 12 - .../Andrey_portfolio-master/src/js/media.js | 18 - .../src/js/nav-menu.js | 20 - .../src/js/parallax.min.js | 6 - .../src/js/portfolio.js | 4 - .../src/less/animate.less | 33 - .../src/less/footer.less | 57 - .../src/less/header.less | 135 - .../src/less/main.less | 349 - .../src/less/partails/params.less | 8 - .../src/less/style.less | 4 - .../Andrey_portfolio-master/src/template.html | 516 - .../Andrey_portfolio-master/webpack.config.js | 121 - dist/bundle.b9bf46aaf589fa90a085.js | 12400 ---------------- dist/bundle.b9bf46aaf589fa90a085.js.map | 1 - ...er.ru.46eefeed1b9613d60bd463fa94088a19.jpg | Bin 101411 -> 0 bytes ...vicon.8db83ff7ee537763949a50974b0db481.ico | Bin 15086 -> 0 bytes .../logo.cfa6b5b41637cba602cc50c7f7ee5e74.png | Bin 95467 -> 0 bytes ...cture.77dc749c4a221f3c394fbc542b054f2c.jpg | Bin 294170 -> 0 bytes ...photo.b411654b264c7886968789f60bed3853.jpg | Bin 117946 -> 0 bytes dist/index.html | 524 - dist/style.a23f76771d1e620ad174.css | 4053 ----- dist/style.a23f76771d1e620ad174.css.map | 1 - src/css/style.css | 4 + src/js/about_me.js | 24 + src/js/animation.js | 4 +- src/js/index.js | 1 + src/js/media.js | 4 + src/less/footer.less | 25 +- src/less/header.less | 2 +- src/less/main.less | 63 +- src/less/media.less | 35 + src/less/partails/mixins.less | 19 + src/less/partails/params.less | 2 +- src/less/style.less | 11 +- src/template.html | 32 +- 63 files changed, 148 insertions(+), 50394 deletions(-) delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/.babelrc delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/.gitignore delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/Ftp andrey-programmer@c10020.shared.hc.ru.xml delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/dist/bundle.8303b5be451bb869cba1.js delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/dist/bundle.8303b5be451bb869cba1.js.map delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/dist/image/andrey_programmer.ru.46eefeed1b9613d60bd463fa94088a19.jpg delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/dist/image/favicon.8db83ff7ee537763949a50974b0db481.ico delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/dist/image/logo.cfa6b5b41637cba602cc50c7f7ee5e74.png delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/dist/image/main_picture.77dc749c4a221f3c394fbc542b054f2c.jpg delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/dist/image/my_photo.b411654b264c7886968789f60bed3853.jpg delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/dist/index.html delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/dist/style.caf6b12a0e2374fb2550.css delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/dist/style.caf6b12a0e2374fb2550.css.map delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/package-lock.json delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/package.json delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/postcss.config.js delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/css/animate.css delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/css/media.css delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/css/style.css delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/image/andrey_programmer.ru.jpg delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/image/favicon.ico delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/image/logo.png delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/image/main_picture.jpg delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/image/my_photo.jpg delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/js/animation.js delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/js/contacts.js delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/js/index.js delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/js/main_display.js delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/js/media.js delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/js/nav-menu.js delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/js/parallax.min.js delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/js/portfolio.js delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/less/animate.less delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/less/footer.less delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/less/header.less delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/less/main.less delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/less/partails/params.less delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/less/style.less delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/src/template.html delete mode 100644 Andrey_portfolio-master/Andrey_portfolio-master/webpack.config.js delete mode 100644 dist/bundle.b9bf46aaf589fa90a085.js delete mode 100644 dist/bundle.b9bf46aaf589fa90a085.js.map delete mode 100644 dist/image/andrey_programmer.ru.46eefeed1b9613d60bd463fa94088a19.jpg delete mode 100644 dist/image/favicon.8db83ff7ee537763949a50974b0db481.ico delete mode 100644 dist/image/logo.cfa6b5b41637cba602cc50c7f7ee5e74.png delete mode 100644 dist/image/main_picture.77dc749c4a221f3c394fbc542b054f2c.jpg delete mode 100644 dist/image/my_photo.b411654b264c7886968789f60bed3853.jpg delete mode 100644 dist/index.html delete mode 100644 dist/style.a23f76771d1e620ad174.css delete mode 100644 dist/style.a23f76771d1e620ad174.css.map create mode 100644 src/js/about_me.js create mode 100644 src/less/media.less create mode 100644 src/less/partails/mixins.less diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/.babelrc b/Andrey_portfolio-master/Andrey_portfolio-master/.babelrc deleted file mode 100644 index c3f1ab2..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/.babelrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "presets": [ - "env", - "stage-3" - ] -} \ No newline at end of file diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/.gitignore b/Andrey_portfolio-master/Andrey_portfolio-master/.gitignore deleted file mode 100644 index 93d1e44..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -Materials/* -node_modules/* \ No newline at end of file diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/Ftp andrey-programmer@c10020.shared.hc.ru.xml b/Andrey_portfolio-master/Andrey_portfolio-master/Ftp andrey-programmer@c10020.shared.hc.ru.xml deleted file mode 100644 index 8e586bb..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/Ftp andrey-programmer@c10020.shared.hc.ru.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - ftp.c10020.shared.hc.ru - 21 - ftp - 0 - andrey-programmer@c10020.shared.hc.ru - 2 - 0 - MODE_DEFAULT - 0 - Auto - 0 - ftp.c10020.shared.hc.ru - - - - 0 - ftp.c10020.shared.hc.ru - - - diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/dist/bundle.8303b5be451bb869cba1.js b/Andrey_portfolio-master/Andrey_portfolio-master/dist/bundle.8303b5be451bb869cba1.js deleted file mode 100644 index 8b7868e..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/dist/bundle.8303b5be451bb869cba1.js +++ /dev/null @@ -1,12400 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ function hotDisposeChunk(chunkId) { -/******/ delete installedChunks[chunkId]; -/******/ } -/******/ var parentHotUpdateCallback = window["webpackHotUpdate"]; -/******/ window["webpackHotUpdate"] = // eslint-disable-next-line no-unused-vars -/******/ function webpackHotUpdateCallback(chunkId, moreModules) { -/******/ hotAddUpdateChunk(chunkId, moreModules); -/******/ if (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules); -/******/ } ; -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotDownloadUpdateChunk(chunkId) { -/******/ var head = document.getElementsByTagName("head")[0]; -/******/ var script = document.createElement("script"); -/******/ script.charset = "utf-8"; -/******/ script.src = __webpack_require__.p + "" + chunkId + "." + hotCurrentHash + ".hot-update.js"; -/******/ ; -/******/ head.appendChild(script); -/******/ } -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotDownloadManifest(requestTimeout) { -/******/ requestTimeout = requestTimeout || 10000; -/******/ return new Promise(function(resolve, reject) { -/******/ if (typeof XMLHttpRequest === "undefined") -/******/ return reject(new Error("No browser support")); -/******/ try { -/******/ var request = new XMLHttpRequest(); -/******/ var requestPath = __webpack_require__.p + "" + hotCurrentHash + ".hot-update.json"; -/******/ request.open("GET", requestPath, true); -/******/ request.timeout = requestTimeout; -/******/ request.send(null); -/******/ } catch (err) { -/******/ return reject(err); -/******/ } -/******/ request.onreadystatechange = function() { -/******/ if (request.readyState !== 4) return; -/******/ if (request.status === 0) { -/******/ // timeout -/******/ reject( -/******/ new Error("Manifest request to " + requestPath + " timed out.") -/******/ ); -/******/ } else if (request.status === 404) { -/******/ // no update available -/******/ resolve(); -/******/ } else if (request.status !== 200 && request.status !== 304) { -/******/ // other failure -/******/ reject(new Error("Manifest request to " + requestPath + " failed.")); -/******/ } else { -/******/ // success -/******/ try { -/******/ var update = JSON.parse(request.responseText); -/******/ } catch (e) { -/******/ reject(e); -/******/ return; -/******/ } -/******/ resolve(update); -/******/ } -/******/ }; -/******/ }); -/******/ } -/******/ -/******/ var hotApplyOnUpdate = true; -/******/ var hotCurrentHash = "8303b5be451bb869cba1"; // eslint-disable-line no-unused-vars -/******/ var hotRequestTimeout = 10000; -/******/ var hotCurrentModuleData = {}; -/******/ var hotCurrentChildModule; // eslint-disable-line no-unused-vars -/******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars -/******/ var hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotCreateRequire(moduleId) { -/******/ var me = installedModules[moduleId]; -/******/ if (!me) return __webpack_require__; -/******/ var fn = function(request) { -/******/ if (me.hot.active) { -/******/ if (installedModules[request]) { -/******/ if (installedModules[request].parents.indexOf(moduleId) === -1) -/******/ installedModules[request].parents.push(moduleId); -/******/ } else { -/******/ hotCurrentParents = [moduleId]; -/******/ hotCurrentChildModule = request; -/******/ } -/******/ if (me.children.indexOf(request) === -1) me.children.push(request); -/******/ } else { -/******/ console.warn( -/******/ "[HMR] unexpected require(" + -/******/ request + -/******/ ") from disposed module " + -/******/ moduleId -/******/ ); -/******/ hotCurrentParents = []; -/******/ } -/******/ return __webpack_require__(request); -/******/ }; -/******/ var ObjectFactory = function ObjectFactory(name) { -/******/ return { -/******/ configurable: true, -/******/ enumerable: true, -/******/ get: function() { -/******/ return __webpack_require__[name]; -/******/ }, -/******/ set: function(value) { -/******/ __webpack_require__[name] = value; -/******/ } -/******/ }; -/******/ }; -/******/ for (var name in __webpack_require__) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call(__webpack_require__, name) && -/******/ name !== "e" -/******/ ) { -/******/ Object.defineProperty(fn, name, ObjectFactory(name)); -/******/ } -/******/ } -/******/ fn.e = function(chunkId) { -/******/ if (hotStatus === "ready") hotSetStatus("prepare"); -/******/ hotChunksLoading++; -/******/ return __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) { -/******/ finishChunkLoading(); -/******/ throw err; -/******/ }); -/******/ -/******/ function finishChunkLoading() { -/******/ hotChunksLoading--; -/******/ if (hotStatus === "prepare") { -/******/ if (!hotWaitingFilesMap[chunkId]) { -/******/ hotEnsureUpdateChunk(chunkId); -/******/ } -/******/ if (hotChunksLoading === 0 && hotWaitingFiles === 0) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ } -/******/ } -/******/ }; -/******/ return fn; -/******/ } -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotCreateModule(moduleId) { -/******/ var hot = { -/******/ // private stuff -/******/ _acceptedDependencies: {}, -/******/ _declinedDependencies: {}, -/******/ _selfAccepted: false, -/******/ _selfDeclined: false, -/******/ _disposeHandlers: [], -/******/ _main: hotCurrentChildModule !== moduleId, -/******/ -/******/ // Module API -/******/ active: true, -/******/ accept: function(dep, callback) { -/******/ if (typeof dep === "undefined") hot._selfAccepted = true; -/******/ else if (typeof dep === "function") hot._selfAccepted = dep; -/******/ else if (typeof dep === "object") -/******/ for (var i = 0; i < dep.length; i++) -/******/ hot._acceptedDependencies[dep[i]] = callback || function() {}; -/******/ else hot._acceptedDependencies[dep] = callback || function() {}; -/******/ }, -/******/ decline: function(dep) { -/******/ if (typeof dep === "undefined") hot._selfDeclined = true; -/******/ else if (typeof dep === "object") -/******/ for (var i = 0; i < dep.length; i++) -/******/ hot._declinedDependencies[dep[i]] = true; -/******/ else hot._declinedDependencies[dep] = true; -/******/ }, -/******/ dispose: function(callback) { -/******/ hot._disposeHandlers.push(callback); -/******/ }, -/******/ addDisposeHandler: function(callback) { -/******/ hot._disposeHandlers.push(callback); -/******/ }, -/******/ removeDisposeHandler: function(callback) { -/******/ var idx = hot._disposeHandlers.indexOf(callback); -/******/ if (idx >= 0) hot._disposeHandlers.splice(idx, 1); -/******/ }, -/******/ -/******/ // Management API -/******/ check: hotCheck, -/******/ apply: hotApply, -/******/ status: function(l) { -/******/ if (!l) return hotStatus; -/******/ hotStatusHandlers.push(l); -/******/ }, -/******/ addStatusHandler: function(l) { -/******/ hotStatusHandlers.push(l); -/******/ }, -/******/ removeStatusHandler: function(l) { -/******/ var idx = hotStatusHandlers.indexOf(l); -/******/ if (idx >= 0) hotStatusHandlers.splice(idx, 1); -/******/ }, -/******/ -/******/ //inherit from previous dispose call -/******/ data: hotCurrentModuleData[moduleId] -/******/ }; -/******/ hotCurrentChildModule = undefined; -/******/ return hot; -/******/ } -/******/ -/******/ var hotStatusHandlers = []; -/******/ var hotStatus = "idle"; -/******/ -/******/ function hotSetStatus(newStatus) { -/******/ hotStatus = newStatus; -/******/ for (var i = 0; i < hotStatusHandlers.length; i++) -/******/ hotStatusHandlers[i].call(null, newStatus); -/******/ } -/******/ -/******/ // while downloading -/******/ var hotWaitingFiles = 0; -/******/ var hotChunksLoading = 0; -/******/ var hotWaitingFilesMap = {}; -/******/ var hotRequestedFilesMap = {}; -/******/ var hotAvailableFilesMap = {}; -/******/ var hotDeferred; -/******/ -/******/ // The update info -/******/ var hotUpdate, hotUpdateNewHash; -/******/ -/******/ function toModuleId(id) { -/******/ var isNumber = +id + "" === id; -/******/ return isNumber ? +id : id; -/******/ } -/******/ -/******/ function hotCheck(apply) { -/******/ if (hotStatus !== "idle") -/******/ throw new Error("check() is only allowed in idle status"); -/******/ hotApplyOnUpdate = apply; -/******/ hotSetStatus("check"); -/******/ return hotDownloadManifest(hotRequestTimeout).then(function(update) { -/******/ if (!update) { -/******/ hotSetStatus("idle"); -/******/ return null; -/******/ } -/******/ hotRequestedFilesMap = {}; -/******/ hotWaitingFilesMap = {}; -/******/ hotAvailableFilesMap = update.c; -/******/ hotUpdateNewHash = update.h; -/******/ -/******/ hotSetStatus("prepare"); -/******/ var promise = new Promise(function(resolve, reject) { -/******/ hotDeferred = { -/******/ resolve: resolve, -/******/ reject: reject -/******/ }; -/******/ }); -/******/ hotUpdate = {}; -/******/ var chunkId = "bundle"; -/******/ { -/******/ // eslint-disable-line no-lone-blocks -/******/ /*globals chunkId */ -/******/ hotEnsureUpdateChunk(chunkId); -/******/ } -/******/ if ( -/******/ hotStatus === "prepare" && -/******/ hotChunksLoading === 0 && -/******/ hotWaitingFiles === 0 -/******/ ) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ return promise; -/******/ }); -/******/ } -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotAddUpdateChunk(chunkId, moreModules) { -/******/ if (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId]) -/******/ return; -/******/ hotRequestedFilesMap[chunkId] = false; -/******/ for (var moduleId in moreModules) { -/******/ if (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { -/******/ hotUpdate[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if (--hotWaitingFiles === 0 && hotChunksLoading === 0) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ } -/******/ -/******/ function hotEnsureUpdateChunk(chunkId) { -/******/ if (!hotAvailableFilesMap[chunkId]) { -/******/ hotWaitingFilesMap[chunkId] = true; -/******/ } else { -/******/ hotRequestedFilesMap[chunkId] = true; -/******/ hotWaitingFiles++; -/******/ hotDownloadUpdateChunk(chunkId); -/******/ } -/******/ } -/******/ -/******/ function hotUpdateDownloaded() { -/******/ hotSetStatus("ready"); -/******/ var deferred = hotDeferred; -/******/ hotDeferred = null; -/******/ if (!deferred) return; -/******/ if (hotApplyOnUpdate) { -/******/ // Wrap deferred object in Promise to mark it as a well-handled Promise to -/******/ // avoid triggering uncaught exception warning in Chrome. -/******/ // See https://bugs.chromium.org/p/chromium/issues/detail?id=465666 -/******/ Promise.resolve() -/******/ .then(function() { -/******/ return hotApply(hotApplyOnUpdate); -/******/ }) -/******/ .then( -/******/ function(result) { -/******/ deferred.resolve(result); -/******/ }, -/******/ function(err) { -/******/ deferred.reject(err); -/******/ } -/******/ ); -/******/ } else { -/******/ var outdatedModules = []; -/******/ for (var id in hotUpdate) { -/******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) { -/******/ outdatedModules.push(toModuleId(id)); -/******/ } -/******/ } -/******/ deferred.resolve(outdatedModules); -/******/ } -/******/ } -/******/ -/******/ function hotApply(options) { -/******/ if (hotStatus !== "ready") -/******/ throw new Error("apply() is only allowed in ready status"); -/******/ options = options || {}; -/******/ -/******/ var cb; -/******/ var i; -/******/ var j; -/******/ var module; -/******/ var moduleId; -/******/ -/******/ function getAffectedStuff(updateModuleId) { -/******/ var outdatedModules = [updateModuleId]; -/******/ var outdatedDependencies = {}; -/******/ -/******/ var queue = outdatedModules.slice().map(function(id) { -/******/ return { -/******/ chain: [id], -/******/ id: id -/******/ }; -/******/ }); -/******/ while (queue.length > 0) { -/******/ var queueItem = queue.pop(); -/******/ var moduleId = queueItem.id; -/******/ var chain = queueItem.chain; -/******/ module = installedModules[moduleId]; -/******/ if (!module || module.hot._selfAccepted) continue; -/******/ if (module.hot._selfDeclined) { -/******/ return { -/******/ type: "self-declined", -/******/ chain: chain, -/******/ moduleId: moduleId -/******/ }; -/******/ } -/******/ if (module.hot._main) { -/******/ return { -/******/ type: "unaccepted", -/******/ chain: chain, -/******/ moduleId: moduleId -/******/ }; -/******/ } -/******/ for (var i = 0; i < module.parents.length; i++) { -/******/ var parentId = module.parents[i]; -/******/ var parent = installedModules[parentId]; -/******/ if (!parent) continue; -/******/ if (parent.hot._declinedDependencies[moduleId]) { -/******/ return { -/******/ type: "declined", -/******/ chain: chain.concat([parentId]), -/******/ moduleId: moduleId, -/******/ parentId: parentId -/******/ }; -/******/ } -/******/ if (outdatedModules.indexOf(parentId) !== -1) continue; -/******/ if (parent.hot._acceptedDependencies[moduleId]) { -/******/ if (!outdatedDependencies[parentId]) -/******/ outdatedDependencies[parentId] = []; -/******/ addAllToSet(outdatedDependencies[parentId], [moduleId]); -/******/ continue; -/******/ } -/******/ delete outdatedDependencies[parentId]; -/******/ outdatedModules.push(parentId); -/******/ queue.push({ -/******/ chain: chain.concat([parentId]), -/******/ id: parentId -/******/ }); -/******/ } -/******/ } -/******/ -/******/ return { -/******/ type: "accepted", -/******/ moduleId: updateModuleId, -/******/ outdatedModules: outdatedModules, -/******/ outdatedDependencies: outdatedDependencies -/******/ }; -/******/ } -/******/ -/******/ function addAllToSet(a, b) { -/******/ for (var i = 0; i < b.length; i++) { -/******/ var item = b[i]; -/******/ if (a.indexOf(item) === -1) a.push(item); -/******/ } -/******/ } -/******/ -/******/ // at begin all updates modules are outdated -/******/ // the "outdated" status can propagate to parents if they don't accept the children -/******/ var outdatedDependencies = {}; -/******/ var outdatedModules = []; -/******/ var appliedUpdate = {}; -/******/ -/******/ var warnUnexpectedRequire = function warnUnexpectedRequire() { -/******/ console.warn( -/******/ "[HMR] unexpected require(" + result.moduleId + ") to disposed module" -/******/ ); -/******/ }; -/******/ -/******/ for (var id in hotUpdate) { -/******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) { -/******/ moduleId = toModuleId(id); -/******/ /** @type {TODO} */ -/******/ var result; -/******/ if (hotUpdate[id]) { -/******/ result = getAffectedStuff(moduleId); -/******/ } else { -/******/ result = { -/******/ type: "disposed", -/******/ moduleId: id -/******/ }; -/******/ } -/******/ /** @type {Error|false} */ -/******/ var abortError = false; -/******/ var doApply = false; -/******/ var doDispose = false; -/******/ var chainInfo = ""; -/******/ if (result.chain) { -/******/ chainInfo = "\nUpdate propagation: " + result.chain.join(" -> "); -/******/ } -/******/ switch (result.type) { -/******/ case "self-declined": -/******/ if (options.onDeclined) options.onDeclined(result); -/******/ if (!options.ignoreDeclined) -/******/ abortError = new Error( -/******/ "Aborted because of self decline: " + -/******/ result.moduleId + -/******/ chainInfo -/******/ ); -/******/ break; -/******/ case "declined": -/******/ if (options.onDeclined) options.onDeclined(result); -/******/ if (!options.ignoreDeclined) -/******/ abortError = new Error( -/******/ "Aborted because of declined dependency: " + -/******/ result.moduleId + -/******/ " in " + -/******/ result.parentId + -/******/ chainInfo -/******/ ); -/******/ break; -/******/ case "unaccepted": -/******/ if (options.onUnaccepted) options.onUnaccepted(result); -/******/ if (!options.ignoreUnaccepted) -/******/ abortError = new Error( -/******/ "Aborted because " + moduleId + " is not accepted" + chainInfo -/******/ ); -/******/ break; -/******/ case "accepted": -/******/ if (options.onAccepted) options.onAccepted(result); -/******/ doApply = true; -/******/ break; -/******/ case "disposed": -/******/ if (options.onDisposed) options.onDisposed(result); -/******/ doDispose = true; -/******/ break; -/******/ default: -/******/ throw new Error("Unexception type " + result.type); -/******/ } -/******/ if (abortError) { -/******/ hotSetStatus("abort"); -/******/ return Promise.reject(abortError); -/******/ } -/******/ if (doApply) { -/******/ appliedUpdate[moduleId] = hotUpdate[moduleId]; -/******/ addAllToSet(outdatedModules, result.outdatedModules); -/******/ for (moduleId in result.outdatedDependencies) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call( -/******/ result.outdatedDependencies, -/******/ moduleId -/******/ ) -/******/ ) { -/******/ if (!outdatedDependencies[moduleId]) -/******/ outdatedDependencies[moduleId] = []; -/******/ addAllToSet( -/******/ outdatedDependencies[moduleId], -/******/ result.outdatedDependencies[moduleId] -/******/ ); -/******/ } -/******/ } -/******/ } -/******/ if (doDispose) { -/******/ addAllToSet(outdatedModules, [result.moduleId]); -/******/ appliedUpdate[moduleId] = warnUnexpectedRequire; -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Store self accepted outdated modules to require them later by the module system -/******/ var outdatedSelfAcceptedModules = []; -/******/ for (i = 0; i < outdatedModules.length; i++) { -/******/ moduleId = outdatedModules[i]; -/******/ if ( -/******/ installedModules[moduleId] && -/******/ installedModules[moduleId].hot._selfAccepted -/******/ ) -/******/ outdatedSelfAcceptedModules.push({ -/******/ module: moduleId, -/******/ errorHandler: installedModules[moduleId].hot._selfAccepted -/******/ }); -/******/ } -/******/ -/******/ // Now in "dispose" phase -/******/ hotSetStatus("dispose"); -/******/ Object.keys(hotAvailableFilesMap).forEach(function(chunkId) { -/******/ if (hotAvailableFilesMap[chunkId] === false) { -/******/ hotDisposeChunk(chunkId); -/******/ } -/******/ }); -/******/ -/******/ var idx; -/******/ var queue = outdatedModules.slice(); -/******/ while (queue.length > 0) { -/******/ moduleId = queue.pop(); -/******/ module = installedModules[moduleId]; -/******/ if (!module) continue; -/******/ -/******/ var data = {}; -/******/ -/******/ // Call dispose handlers -/******/ var disposeHandlers = module.hot._disposeHandlers; -/******/ for (j = 0; j < disposeHandlers.length; j++) { -/******/ cb = disposeHandlers[j]; -/******/ cb(data); -/******/ } -/******/ hotCurrentModuleData[moduleId] = data; -/******/ -/******/ // disable module (this disables requires from this module) -/******/ module.hot.active = false; -/******/ -/******/ // remove module from cache -/******/ delete installedModules[moduleId]; -/******/ -/******/ // when disposing there is no need to call dispose handler -/******/ delete outdatedDependencies[moduleId]; -/******/ -/******/ // remove "parents" references from all children -/******/ for (j = 0; j < module.children.length; j++) { -/******/ var child = installedModules[module.children[j]]; -/******/ if (!child) continue; -/******/ idx = child.parents.indexOf(moduleId); -/******/ if (idx >= 0) { -/******/ child.parents.splice(idx, 1); -/******/ } -/******/ } -/******/ } -/******/ -/******/ // remove outdated dependency from module children -/******/ var dependency; -/******/ var moduleOutdatedDependencies; -/******/ for (moduleId in outdatedDependencies) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId) -/******/ ) { -/******/ module = installedModules[moduleId]; -/******/ if (module) { -/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; -/******/ for (j = 0; j < moduleOutdatedDependencies.length; j++) { -/******/ dependency = moduleOutdatedDependencies[j]; -/******/ idx = module.children.indexOf(dependency); -/******/ if (idx >= 0) module.children.splice(idx, 1); -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Not in "apply" phase -/******/ hotSetStatus("apply"); -/******/ -/******/ hotCurrentHash = hotUpdateNewHash; -/******/ -/******/ // insert new code -/******/ for (moduleId in appliedUpdate) { -/******/ if (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) { -/******/ modules[moduleId] = appliedUpdate[moduleId]; -/******/ } -/******/ } -/******/ -/******/ // call accept handlers -/******/ var error = null; -/******/ for (moduleId in outdatedDependencies) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId) -/******/ ) { -/******/ module = installedModules[moduleId]; -/******/ if (module) { -/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; -/******/ var callbacks = []; -/******/ for (i = 0; i < moduleOutdatedDependencies.length; i++) { -/******/ dependency = moduleOutdatedDependencies[i]; -/******/ cb = module.hot._acceptedDependencies[dependency]; -/******/ if (cb) { -/******/ if (callbacks.indexOf(cb) !== -1) continue; -/******/ callbacks.push(cb); -/******/ } -/******/ } -/******/ for (i = 0; i < callbacks.length; i++) { -/******/ cb = callbacks[i]; -/******/ try { -/******/ cb(moduleOutdatedDependencies); -/******/ } catch (err) { -/******/ if (options.onErrored) { -/******/ options.onErrored({ -/******/ type: "accept-errored", -/******/ moduleId: moduleId, -/******/ dependencyId: moduleOutdatedDependencies[i], -/******/ error: err -/******/ }); -/******/ } -/******/ if (!options.ignoreErrored) { -/******/ if (!error) error = err; -/******/ } -/******/ } -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Load self accepted modules -/******/ for (i = 0; i < outdatedSelfAcceptedModules.length; i++) { -/******/ var item = outdatedSelfAcceptedModules[i]; -/******/ moduleId = item.module; -/******/ hotCurrentParents = [moduleId]; -/******/ try { -/******/ __webpack_require__(moduleId); -/******/ } catch (err) { -/******/ if (typeof item.errorHandler === "function") { -/******/ try { -/******/ item.errorHandler(err); -/******/ } catch (err2) { -/******/ if (options.onErrored) { -/******/ options.onErrored({ -/******/ type: "self-accept-error-handler-errored", -/******/ moduleId: moduleId, -/******/ error: err2, -/******/ originalError: err -/******/ }); -/******/ } -/******/ if (!options.ignoreErrored) { -/******/ if (!error) error = err2; -/******/ } -/******/ if (!error) error = err; -/******/ } -/******/ } else { -/******/ if (options.onErrored) { -/******/ options.onErrored({ -/******/ type: "self-accept-errored", -/******/ moduleId: moduleId, -/******/ error: err -/******/ }); -/******/ } -/******/ if (!options.ignoreErrored) { -/******/ if (!error) error = err; -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // handle errors in accept handlers and self accepted module load -/******/ if (error) { -/******/ hotSetStatus("fail"); -/******/ return Promise.reject(error); -/******/ } -/******/ -/******/ hotSetStatus("idle"); -/******/ return new Promise(function(resolve) { -/******/ resolve(outdatedModules); -/******/ }); -/******/ } -/******/ -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {}, -/******/ hot: hotCreateModule(moduleId), -/******/ parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp), -/******/ children: [] -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId)); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // __webpack_hash__ -/******/ __webpack_require__.h = function() { return hotCurrentHash; }; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return hotCreateRequire("./js/index.js")(__webpack_require__.s = "./js/index.js"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "../node_modules/jquery/dist/jquery.js": -/*!*********************************************!*\ - !*** ../node_modules/jquery/dist/jquery.js ***! - \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - * jQuery JavaScript Library v3.3.1 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2018-01-20T17:24Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var document = window.document; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - - - - var preservedScriptAttributes = { - type: true, - src: true, - noModule: true - }; - - function DOMEval( code, doc, node ) { - doc = doc || document; - - var i, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - if ( node[ i ] ) { - script[ i ] = node[ i ]; - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.3.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android <=4.0 only - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && Array.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - - /* eslint-disable no-unused-vars */ - // See https://github.com/eslint/eslint/issues/6125 - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - DOMEval( code ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android <=4.0 only - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.3 - * https://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-08-08 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - disabledAncestor = addCombinator( - function( elem ) { - return elem.disabled === true && ("form" in elem || "label" in elem); - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[i] = "#" + nid + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement("fieldset"); - - try { - return !!fn( el ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - disabledAncestor( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( preferredDoc !== document && - (subWindow = document.defaultView) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( el ) { - el.className = "i"; - return !el.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( el ) { - el.appendChild( document.createComment("") ); - return !el.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID filter and find - if ( support.getById ) { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( (elem = elems[i++]) ) { - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( el ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( el ) { - el.innerHTML = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll(":enabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll(":disabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( el ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return (sel + "").replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( (oldCache = uniqueCache[ key ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( el ) { - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( el ) { - el.innerHTML = ""; - return el.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( el ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( el ) { - return el.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -}; -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( nodeName( elem, "iframe" ) ) { - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the master Deferred - master = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return master.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); - } - - return master.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - jQuery.contains( elem.ownerDocument, elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - -var swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // Support: IE <=9 only - option: [ 1, "" ], - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] -}; - -// Support: IE <=9 only -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); -var documentElement = document.documentElement; - - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 only -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - // Make a writable jQuery.Event from the native event object - var event = jQuery.event.fix( nativeEvent ); - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - /* eslint-disable max-len */ - - // See https://github.com/eslint/eslint/issues/3229 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - - /* eslint-enable */ - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - div.style.position = "absolute"; - scrollboxSizeVal = div.offsetWidth === 36 || "absolute"; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style; - -// Return a css property mapped to a potentially vendor prefixed property -function vendorPropName( name ) { - - // Shortcut for names that are not vendor prefixed - if ( name in emptyStyle ) { - return name; - } - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a property mapped along what jQuery.cssProps suggests or to -// a vendor prefixed property. -function finalPropName( name ) { - var ret = jQuery.cssProps[ name ]; - if ( !ret ) { - ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; - } - return ret; -} - -function setPositiveNumber( elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - ) ); - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - val = curCSS( elem, dimension, styles ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox; - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - // Check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = valueIsBorderBox && - ( support.boxSizingReliable() || val === elem.style[ dimension ] ); - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - if ( val === "auto" || - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) { - - val = elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ]; - - // offsetWidth/offsetHeight provide border-box values - valueIsBorderBox = true; - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - if ( type === "number" ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra && boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ); - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && support.scrollboxSize() === styles.position ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && - ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || - jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = Date.now(); - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - - -jQuery._evalUrl = function( url ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - "throws": true - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - - - - - - - -
-
-
-
- -
-
-
- -
-
-
-

- logo Сайт-портфолио веб-разработчика

-
-

Андрей Кадочников

-

Web-разработчик /
HTML-верстальщик

-

HTML5 / CSS3 / JavaScript / ES6 / TypeScript / jQuery / LESS -
/ SASS / Gulp / Bootstrap 4 / Webpack 4 / RxJS / Git / БЭМ

-
- -
-
-
- -
-
-
-
-
-
-
-

Обо мне

- -
Познакомимся поближе
- -
-
-
-
-

Немного о себе

-
- Доброго времени суток, меня зовут Андрей. Занимаюсь вёрсткой HTML-шаблонов и front-end разработкой (программированием сайтов). - Мои Ключевые навыки: -
-
- HTML5 - - - CSS3 - - - JavaScript - - - ES6 - - - TypeScript - - - jQuery - - - LESS - - - SASS - - - Gulp - - - Bootstrap 4 - - - Webpack 4 - - - RxJS - - - Git - - - БЭМ -
-
Пользуюсь последними версиями передовых продуктов Bootstrap и Webpack, что гарантирует что Ваш - сайт будет адаптивным и отлично выглядеть на всех устройствах. Вы можете заказать у меня разработку - сайта с нуля или связаться со мной для сотрудничества. -
-
-
-

Фото

-
- Моё фото -
-
-
-

Персональная информация

-
-
Кадочников Андрей
-
-
Профессиональное создание сайтов -
(front-end developer): разработка сайтов, вёрстка адаптивных HTML-шаблонов, создание спецэффектов - с использованием JavaScript, jQuery, Bootstrap
-
День Рождения 13 февраля 1982 года
-
- - - Skype: Andrey-1302
-
- - - E-mail : andrey.programmer.1302@gmail.com
- -
-
- -
-
-
-
-
-
-
-
-

Резюме

- -
Мои знания и образование
- -
-
-
-
-

Образование

-
- - - -
-
-
Высшее
-
Южно-Уральский Государственный Университет, 2007г. Факультет технологий машиностроения. Специализация: - Автоматизация тех. процессов и производств в машиностроении. Квалификация - специалист. -
-
-
-
Дополнительные курсы и самообразование: -
-
    -
  • HTML/CSS, Wordpress - Учебный цент "Специалист" при МГТУ им. Н.Э. Баумана (есть сертификаты)
  • -
  • HTML/CSS/LESS - онлайн курсы HTML-академии
  • -
  • JavaScript, jQuery, ES6, Bootstrap, TypeScript, Gulp, Webpack, LESS/SASS - онлайн курсы и уроки - компании Webformyself
  • -
  • Чтение документации на библиотеки фреймворки и бандлеры
  • -
-
-
-
-

Знания и навыки

-
- - - -
-
-
Знания в области Web -
-
-
HTML-разметка, таблицы стилей CSS, препроцессоры LESS/SASS, язык программирования JavaScript, - его современный синтаксис ES6, библиотека jQuery, фреймворк Bootstrap, бандлеры Gulp и Webpack
-
-
-
Программы
-
Adobe Photoshop, Nodepad++, FileZilla
-
-
-
-
Ближайшие планы
-
В скором времени планирую изучение фреймворков React, Angular и Vue для разработки Web-приложений
-
-
-
-
-
-
-
-

Портфолио

- -
Здесь будут размещаться примеры моих работ -
куда я надеюсь попадёт и Ваш сайт :)
-
-
-
-
-
- Card image cap -
-
-
Andrey_programmer.ru
-

Сайт-портфолио программиста

-

- 2018 г. - -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
-
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
-
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
-
-
-
-
-
-
-
-
-
-

Контакты

- -
связаться со мной
- -
-
-
-
-
-
- - - -
-

Адрес:

-

Россия, г.Москва м.Отрадное

-
-
-
- - - -
-

E-mail:

-

andrey.programmer.1302@gmail.com

-
-
-
- - - -
-

Вконтакте

-

https://vk.com/l0vec_snov

-
-
-
-
-
- - - -
-

Веб-сайт:

-

Andrey_programmer.ru

-
-
-
- - - -
-

Skype:

-

Andrey-1302

-
-
-
- - - / - - - -
-

телефон / whatsapp

-

+7 977 4638113

-
-
-
-
-
- - - -
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/dist/style.caf6b12a0e2374fb2550.css b/Andrey_portfolio-master/Andrey_portfolio-master/dist/style.caf6b12a0e2374fb2550.css deleted file mode 100644 index dd8c134..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/dist/style.caf6b12a0e2374fb2550.css +++ /dev/null @@ -1,4053 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,400i,600,700&subset=cyrillic); -@charset "UTF-8"; - -/*! - * animate.css -http://daneden.me/animate - * Version - 3.6.0 - * Licensed under the MIT license - http://opensource.org/licenses/MIT - * - * Copyright (c) 2018 Daniel Eden - */ - -.animated { - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -.animated.infinite { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -@-webkit-keyframes bounce { - from, - 20%, - 53%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 40%, - 43% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -30px, 0); - transform: translate3d(0, -30px, 0); - } - - 70% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -15px, 0); - transform: translate3d(0, -15px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -4px, 0); - transform: translate3d(0, -4px, 0); - } -} - -@keyframes bounce { - from, - 20%, - 53%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 40%, - 43% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -30px, 0); - transform: translate3d(0, -30px, 0); - } - - 70% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -15px, 0); - transform: translate3d(0, -15px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -4px, 0); - transform: translate3d(0, -4px, 0); - } -} - -.bounce { - -webkit-animation-name: bounce; - animation-name: bounce; - -webkit-transform-origin: center bottom; - transform-origin: center bottom; -} - -@-webkit-keyframes flash { - from, - 50%, - to { - opacity: 1; - } - - 25%, - 75% { - opacity: 0; - } -} - -@keyframes flash { - from, - 50%, - to { - opacity: 1; - } - - 25%, - 75% { - opacity: 0; - } -} - -.flash { - -webkit-animation-name: flash; - animation-name: flash; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes pulse { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 50% { - -webkit-transform: scale3d(1.05, 1.05, 1.05); - transform: scale3d(1.05, 1.05, 1.05); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes pulse { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 50% { - -webkit-transform: scale3d(1.05, 1.05, 1.05); - transform: scale3d(1.05, 1.05, 1.05); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.pulse { - -webkit-animation-name: pulse; - animation-name: pulse; -} - -@-webkit-keyframes rubberBand { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 30% { - -webkit-transform: scale3d(1.25, 0.75, 1); - transform: scale3d(1.25, 0.75, 1); - } - - 40% { - -webkit-transform: scale3d(0.75, 1.25, 1); - transform: scale3d(0.75, 1.25, 1); - } - - 50% { - -webkit-transform: scale3d(1.15, 0.85, 1); - transform: scale3d(1.15, 0.85, 1); - } - - 65% { - -webkit-transform: scale3d(0.95, 1.05, 1); - transform: scale3d(0.95, 1.05, 1); - } - - 75% { - -webkit-transform: scale3d(1.05, 0.95, 1); - transform: scale3d(1.05, 0.95, 1); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes rubberBand { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 30% { - -webkit-transform: scale3d(1.25, 0.75, 1); - transform: scale3d(1.25, 0.75, 1); - } - - 40% { - -webkit-transform: scale3d(0.75, 1.25, 1); - transform: scale3d(0.75, 1.25, 1); - } - - 50% { - -webkit-transform: scale3d(1.15, 0.85, 1); - transform: scale3d(1.15, 0.85, 1); - } - - 65% { - -webkit-transform: scale3d(0.95, 1.05, 1); - transform: scale3d(0.95, 1.05, 1); - } - - 75% { - -webkit-transform: scale3d(1.05, 0.95, 1); - transform: scale3d(1.05, 0.95, 1); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.rubberBand { - -webkit-animation-name: rubberBand; - animation-name: rubberBand; -} - -@-webkit-keyframes shake { - from, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, - 30%, - 50%, - 70%, - 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, - 40%, - 60%, - 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -@keyframes shake { - from, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, - 30%, - 50%, - 70%, - 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, - 40%, - 60%, - 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -.shake { - -webkit-animation-name: shake; - animation-name: shake; -} - -@-webkit-keyframes headShake { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 6.5% { - -webkit-transform: translateX(-6px) rotateY(-9deg); - transform: translateX(-6px) rotateY(-9deg); - } - - 18.5% { - -webkit-transform: translateX(5px) rotateY(7deg); - transform: translateX(5px) rotateY(7deg); - } - - 31.5% { - -webkit-transform: translateX(-3px) rotateY(-5deg); - transform: translateX(-3px) rotateY(-5deg); - } - - 43.5% { - -webkit-transform: translateX(2px) rotateY(3deg); - transform: translateX(2px) rotateY(3deg); - } - - 50% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes headShake { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 6.5% { - -webkit-transform: translateX(-6px) rotateY(-9deg); - transform: translateX(-6px) rotateY(-9deg); - } - - 18.5% { - -webkit-transform: translateX(5px) rotateY(7deg); - transform: translateX(5px) rotateY(7deg); - } - - 31.5% { - -webkit-transform: translateX(-3px) rotateY(-5deg); - transform: translateX(-3px) rotateY(-5deg); - } - - 43.5% { - -webkit-transform: translateX(2px) rotateY(3deg); - transform: translateX(2px) rotateY(3deg); - } - - 50% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -.headShake { - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-name: headShake; - animation-name: headShake; -} - -@-webkit-keyframes swing { - 20% { - -webkit-transform: rotate3d(0, 0, 1, 15deg); - transform: rotate3d(0, 0, 1, 15deg); - } - - 40% { - -webkit-transform: rotate3d(0, 0, 1, -10deg); - transform: rotate3d(0, 0, 1, -10deg); - } - - 60% { - -webkit-transform: rotate3d(0, 0, 1, 5deg); - transform: rotate3d(0, 0, 1, 5deg); - } - - 80% { - -webkit-transform: rotate3d(0, 0, 1, -5deg); - transform: rotate3d(0, 0, 1, -5deg); - } - - to { - -webkit-transform: rotate3d(0, 0, 1, 0deg); - transform: rotate3d(0, 0, 1, 0deg); - } -} - -@keyframes swing { - 20% { - -webkit-transform: rotate3d(0, 0, 1, 15deg); - transform: rotate3d(0, 0, 1, 15deg); - } - - 40% { - -webkit-transform: rotate3d(0, 0, 1, -10deg); - transform: rotate3d(0, 0, 1, -10deg); - } - - 60% { - -webkit-transform: rotate3d(0, 0, 1, 5deg); - transform: rotate3d(0, 0, 1, 5deg); - } - - 80% { - -webkit-transform: rotate3d(0, 0, 1, -5deg); - transform: rotate3d(0, 0, 1, -5deg); - } - - to { - -webkit-transform: rotate3d(0, 0, 1, 0deg); - transform: rotate3d(0, 0, 1, 0deg); - } -} - -.swing { - -webkit-transform-origin: top center; - transform-origin: top center; - -webkit-animation-name: swing; - animation-name: swing; -} - -@-webkit-keyframes tada { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 10%, - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - } - - 30%, - 50%, - 70%, - 90% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - } - - 40%, - 60%, - 80% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes tada { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 10%, - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - } - - 30%, - 50%, - 70%, - 90% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - } - - 40%, - 60%, - 80% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.tada { - -webkit-animation-name: tada; - animation-name: tada; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes wobble { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 15% { - -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - } - - 30% { - -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - } - - 45% { - -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - } - - 60% { - -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - } - - 75% { - -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes wobble { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 15% { - -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - } - - 30% { - -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - } - - 45% { - -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - } - - 60% { - -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - } - - 75% { - -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.wobble { - -webkit-animation-name: wobble; - animation-name: wobble; -} - -@-webkit-keyframes jello { - from, - 11.1%, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 22.2% { - -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); - transform: skewX(-12.5deg) skewY(-12.5deg); - } - - 33.3% { - -webkit-transform: skewX(6.25deg) skewY(6.25deg); - transform: skewX(6.25deg) skewY(6.25deg); - } - - 44.4% { - -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); - transform: skewX(-3.125deg) skewY(-3.125deg); - } - - 55.5% { - -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); - transform: skewX(1.5625deg) skewY(1.5625deg); - } - - 66.6% { - -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); - transform: skewX(-0.78125deg) skewY(-0.78125deg); - } - - 77.7% { - -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); - transform: skewX(0.390625deg) skewY(0.390625deg); - } - - 88.8% { - -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - } -} - -@keyframes jello { - from, - 11.1%, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 22.2% { - -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); - transform: skewX(-12.5deg) skewY(-12.5deg); - } - - 33.3% { - -webkit-transform: skewX(6.25deg) skewY(6.25deg); - transform: skewX(6.25deg) skewY(6.25deg); - } - - 44.4% { - -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); - transform: skewX(-3.125deg) skewY(-3.125deg); - } - - 55.5% { - -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); - transform: skewX(1.5625deg) skewY(1.5625deg); - } - - 66.6% { - -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); - transform: skewX(-0.78125deg) skewY(-0.78125deg); - } - - 77.7% { - -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); - transform: skewX(0.390625deg) skewY(0.390625deg); - } - - 88.8% { - -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - } -} - -.jello { - -webkit-animation-name: jello; - animation-name: jello; - -webkit-transform-origin: center; - transform-origin: center; -} - -@-webkit-keyframes bounceIn { - from, - 20%, - 40%, - 60%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 20% { - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 40% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03); - } - - 80% { - -webkit-transform: scale3d(0.97, 0.97, 0.97); - transform: scale3d(0.97, 0.97, 0.97); - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes bounceIn { - from, - 20%, - 40%, - 60%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 20% { - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 40% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03); - } - - 80% { - -webkit-transform: scale3d(0.97, 0.97, 0.97); - transform: scale3d(0.97, 0.97, 0.97); - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.bounceIn { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-name: bounceIn; - animation-name: bounceIn; -} - -@-webkit-keyframes bounceInDown { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -3000px, 0); - transform: translate3d(0, -3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, 25px, 0); - transform: translate3d(0, 25px, 0); - } - - 75% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, 5px, 0); - transform: translate3d(0, 5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInDown { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -3000px, 0); - transform: translate3d(0, -3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, 25px, 0); - transform: translate3d(0, 25px, 0); - } - - 75% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, 5px, 0); - transform: translate3d(0, 5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInDown { - -webkit-animation-name: bounceInDown; - animation-name: bounceInDown; -} - -@-webkit-keyframes bounceInLeft { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(-3000px, 0, 0); - transform: translate3d(-3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(25px, 0, 0); - transform: translate3d(25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(5px, 0, 0); - transform: translate3d(5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInLeft { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(-3000px, 0, 0); - transform: translate3d(-3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(25px, 0, 0); - transform: translate3d(25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(5px, 0, 0); - transform: translate3d(5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInLeft { - -webkit-animation-name: bounceInLeft; - animation-name: bounceInLeft; -} - -@-webkit-keyframes bounceInRight { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(3000px, 0, 0); - transform: translate3d(3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(-25px, 0, 0); - transform: translate3d(-25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(-5px, 0, 0); - transform: translate3d(-5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInRight { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(3000px, 0, 0); - transform: translate3d(3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(-25px, 0, 0); - transform: translate3d(-25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(-5px, 0, 0); - transform: translate3d(-5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInRight { - -webkit-animation-name: bounceInRight; - animation-name: bounceInRight; -} - -@-webkit-keyframes bounceInUp { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(0, 3000px, 0); - transform: translate3d(0, 3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 75% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -5px, 0); - transform: translate3d(0, -5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInUp { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(0, 3000px, 0); - transform: translate3d(0, 3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 75% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -5px, 0); - transform: translate3d(0, -5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInUp { - -webkit-animation-name: bounceInUp; - animation-name: bounceInUp; -} - -@-webkit-keyframes bounceOut { - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 50%, - 55% { - opacity: 1; - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } -} - -@keyframes bounceOut { - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 50%, - 55% { - opacity: 1; - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } -} - -.bounceOut { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-name: bounceOut; - animation-name: bounceOut; -} - -@-webkit-keyframes bounceOutDown { - 20% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -@keyframes bounceOutDown { - 20% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -.bounceOutDown { - -webkit-animation-name: bounceOutDown; - animation-name: bounceOutDown; -} - -@-webkit-keyframes bounceOutLeft { - 20% { - opacity: 1; - -webkit-transform: translate3d(20px, 0, 0); - transform: translate3d(20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -@keyframes bounceOutLeft { - 20% { - opacity: 1; - -webkit-transform: translate3d(20px, 0, 0); - transform: translate3d(20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -.bounceOutLeft { - -webkit-animation-name: bounceOutLeft; - animation-name: bounceOutLeft; -} - -@-webkit-keyframes bounceOutRight { - 20% { - opacity: 1; - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -@keyframes bounceOutRight { - 20% { - opacity: 1; - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -.bounceOutRight { - -webkit-animation-name: bounceOutRight; - animation-name: bounceOutRight; -} - -@-webkit-keyframes bounceOutUp { - 20% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, 20px, 0); - transform: translate3d(0, 20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -@keyframes bounceOutUp { - 20% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, 20px, 0); - transform: translate3d(0, 20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -.bounceOutUp { - -webkit-animation-name: bounceOutUp; - animation-name: bounceOutUp; -} - -@-webkit-keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -@keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -.fadeIn { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} - -@-webkit-keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInDown { - -webkit-animation-name: fadeInDown; - animation-name: fadeInDown; -} - -@-webkit-keyframes fadeInDownBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInDownBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInDownBig { - -webkit-animation-name: fadeInDownBig; - animation-name: fadeInDownBig; -} - -@-webkit-keyframes fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInLeft { - -webkit-animation-name: fadeInLeft; - animation-name: fadeInLeft; -} - -@-webkit-keyframes fadeInLeftBig { - from { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInLeftBig { - from { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInLeftBig { - -webkit-animation-name: fadeInLeftBig; - animation-name: fadeInLeftBig; -} - -@-webkit-keyframes fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInRight { - -webkit-animation-name: fadeInRight; - animation-name: fadeInRight; -} - -@-webkit-keyframes fadeInRightBig { - from { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInRightBig { - from { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInRightBig { - -webkit-animation-name: fadeInRightBig; - animation-name: fadeInRightBig; -} - -@-webkit-keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInUp { - -webkit-animation-name: fadeInUp; - animation-name: fadeInUp; -} - -@-webkit-keyframes fadeInUpBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInUpBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInUpBig { - -webkit-animation-name: fadeInUpBig; - animation-name: fadeInUpBig; -} - -@-webkit-keyframes fadeOut { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - -@keyframes fadeOut { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - -.fadeOut { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} - -@-webkit-keyframes fadeOutDown { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes fadeOutDown { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -.fadeOutDown { - -webkit-animation-name: fadeOutDown; - animation-name: fadeOutDown; -} - -@-webkit-keyframes fadeOutDownBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -@keyframes fadeOutDownBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -.fadeOutDownBig { - -webkit-animation-name: fadeOutDownBig; - animation-name: fadeOutDownBig; -} - -@-webkit-keyframes fadeOutLeft { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes fadeOutLeft { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -.fadeOutLeft { - -webkit-animation-name: fadeOutLeft; - animation-name: fadeOutLeft; -} - -@-webkit-keyframes fadeOutLeftBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -@keyframes fadeOutLeftBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -.fadeOutLeftBig { - -webkit-animation-name: fadeOutLeftBig; - animation-name: fadeOutLeftBig; -} - -@-webkit-keyframes fadeOutRight { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -@keyframes fadeOutRight { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -.fadeOutRight { - -webkit-animation-name: fadeOutRight; - animation-name: fadeOutRight; -} - -@-webkit-keyframes fadeOutRightBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -@keyframes fadeOutRightBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -.fadeOutRightBig { - -webkit-animation-name: fadeOutRightBig; - animation-name: fadeOutRightBig; -} - -@-webkit-keyframes fadeOutUp { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes fadeOutUp { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.fadeOutUp { - -webkit-animation-name: fadeOutUp; - animation-name: fadeOutUp; -} - -@-webkit-keyframes fadeOutUpBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -@keyframes fadeOutUpBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -.fadeOutUpBig { - -webkit-animation-name: fadeOutUpBig; - animation-name: fadeOutUpBig; -} - -@-webkit-keyframes flip { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -@keyframes flip { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -.animated.flip { - -webkit-backface-visibility: visible; - backface-visibility: visible; - -webkit-animation-name: flip; - animation-name: flip; -} - -@-webkit-keyframes flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@keyframes flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -.flipInX { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInX; - animation-name: flipInX; -} - -@-webkit-keyframes flipInY { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@keyframes flipInY { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -.flipInY { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInY; - animation-name: flipInY; -} - -@-webkit-keyframes flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -@keyframes flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -.flipOutX { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-name: flipOutX; - animation-name: flipOutX; - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; -} - -@-webkit-keyframes flipOutY { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - opacity: 0; - } -} - -@keyframes flipOutY { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - opacity: 0; - } -} - -.flipOutY { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipOutY; - animation-name: flipOutY; -} - -@-webkit-keyframes lightSpeedIn { - from { - -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); - transform: translate3d(100%, 0, 0) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: skewX(20deg); - transform: skewX(20deg); - opacity: 1; - } - - 80% { - -webkit-transform: skewX(-5deg); - transform: skewX(-5deg); - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes lightSpeedIn { - from { - -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); - transform: translate3d(100%, 0, 0) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: skewX(20deg); - transform: skewX(20deg); - opacity: 1; - } - - 80% { - -webkit-transform: skewX(-5deg); - transform: skewX(-5deg); - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.lightSpeedIn { - -webkit-animation-name: lightSpeedIn; - animation-name: lightSpeedIn; - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; -} - -@-webkit-keyframes lightSpeedOut { - from { - opacity: 1; - } - - to { - -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); - transform: translate3d(100%, 0, 0) skewX(30deg); - opacity: 0; - } -} - -@keyframes lightSpeedOut { - from { - opacity: 1; - } - - to { - -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); - transform: translate3d(100%, 0, 0) skewX(30deg); - opacity: 0; - } -} - -.lightSpeedOut { - -webkit-animation-name: lightSpeedOut; - animation-name: lightSpeedOut; - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; -} - -@-webkit-keyframes rotateIn { - from { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, -200deg); - transform: rotate3d(0, 0, 1, -200deg); - opacity: 0; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateIn { - from { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, -200deg); - transform: rotate3d(0, 0, 1, -200deg); - opacity: 0; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateIn { - -webkit-animation-name: rotateIn; - animation-name: rotateIn; -} - -@-webkit-keyframes rotateInDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInDownLeft { - -webkit-animation-name: rotateInDownLeft; - animation-name: rotateInDownLeft; -} - -@-webkit-keyframes rotateInDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInDownRight { - -webkit-animation-name: rotateInDownRight; - animation-name: rotateInDownRight; -} - -@-webkit-keyframes rotateInUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInUpLeft { - -webkit-animation-name: rotateInUpLeft; - animation-name: rotateInUpLeft; -} - -@-webkit-keyframes rotateInUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -90deg); - transform: rotate3d(0, 0, 1, -90deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -90deg); - transform: rotate3d(0, 0, 1, -90deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInUpRight { - -webkit-animation-name: rotateInUpRight; - animation-name: rotateInUpRight; -} - -@-webkit-keyframes rotateOut { - from { - -webkit-transform-origin: center; - transform-origin: center; - opacity: 1; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, 200deg); - transform: rotate3d(0, 0, 1, 200deg); - opacity: 0; - } -} - -@keyframes rotateOut { - from { - -webkit-transform-origin: center; - transform-origin: center; - opacity: 1; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, 200deg); - transform: rotate3d(0, 0, 1, 200deg); - opacity: 0; - } -} - -.rotateOut { - -webkit-animation-name: rotateOut; - animation-name: rotateOut; -} - -@-webkit-keyframes rotateOutDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } -} - -@keyframes rotateOutDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } -} - -.rotateOutDownLeft { - -webkit-animation-name: rotateOutDownLeft; - animation-name: rotateOutDownLeft; -} - -@-webkit-keyframes rotateOutDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -@keyframes rotateOutDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -.rotateOutDownRight { - -webkit-animation-name: rotateOutDownRight; - animation-name: rotateOutDownRight; -} - -@-webkit-keyframes rotateOutUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -@keyframes rotateOutUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -.rotateOutUpLeft { - -webkit-animation-name: rotateOutUpLeft; - animation-name: rotateOutUpLeft; -} - -@-webkit-keyframes rotateOutUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 90deg); - transform: rotate3d(0, 0, 1, 90deg); - opacity: 0; - } -} - -@keyframes rotateOutUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 90deg); - transform: rotate3d(0, 0, 1, 90deg); - opacity: 0; - } -} - -.rotateOutUpRight { - -webkit-animation-name: rotateOutUpRight; - animation-name: rotateOutUpRight; -} - -@-webkit-keyframes hinge { - 0% { - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, - 60% { - -webkit-transform: rotate3d(0, 0, 1, 80deg); - transform: rotate3d(0, 0, 1, 80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40%, - 80% { - -webkit-transform: rotate3d(0, 0, 1, 60deg); - transform: rotate3d(0, 0, 1, 60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 700px, 0); - transform: translate3d(0, 700px, 0); - opacity: 0; - } -} - -@keyframes hinge { - 0% { - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, - 60% { - -webkit-transform: rotate3d(0, 0, 1, 80deg); - transform: rotate3d(0, 0, 1, 80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40%, - 80% { - -webkit-transform: rotate3d(0, 0, 1, 60deg); - transform: rotate3d(0, 0, 1, 60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 700px, 0); - transform: translate3d(0, 700px, 0); - opacity: 0; - } -} - -.hinge { - -webkit-animation-duration: 2s; - animation-duration: 2s; - -webkit-animation-name: hinge; - animation-name: hinge; -} - -@-webkit-keyframes jackInTheBox { - from { - opacity: 0; - -webkit-transform: scale(0.1) rotate(30deg); - transform: scale(0.1) rotate(30deg); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - } - - 50% { - -webkit-transform: rotate(-10deg); - transform: rotate(-10deg); - } - - 70% { - -webkit-transform: rotate(3deg); - transform: rotate(3deg); - } - - to { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes jackInTheBox { - from { - opacity: 0; - -webkit-transform: scale(0.1) rotate(30deg); - transform: scale(0.1) rotate(30deg); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - } - - 50% { - -webkit-transform: rotate(-10deg); - transform: rotate(-10deg); - } - - 70% { - -webkit-transform: rotate(3deg); - transform: rotate(3deg); - } - - to { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); - } -} - -.jackInTheBox { - -webkit-animation-name: jackInTheBox; - animation-name: jackInTheBox; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollIn { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes rollIn { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.rollIn { - -webkit-animation-name: rollIn; - animation-name: rollIn; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollOut { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - } -} - -@keyframes rollOut { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - } -} - -.rollOut { - -webkit-animation-name: rollOut; - animation-name: rollOut; -} - -@-webkit-keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 50% { - opacity: 1; - } -} - -@keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 50% { - opacity: 1; - } -} - -.zoomIn { - -webkit-animation-name: zoomIn; - animation-name: zoomIn; -} - -@-webkit-keyframes zoomInDown { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInDown { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInDown { - -webkit-animation-name: zoomInDown; - animation-name: zoomInDown; -} - -@-webkit-keyframes zoomInLeft { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInLeft { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInLeft { - -webkit-animation-name: zoomInLeft; - animation-name: zoomInLeft; -} - -@-webkit-keyframes zoomInRight { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInRight { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInRight { - -webkit-animation-name: zoomInRight; - animation-name: zoomInRight; -} - -@-webkit-keyframes zoomInUp { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInUp { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInUp { - -webkit-animation-name: zoomInUp; - animation-name: zoomInUp; -} - -@-webkit-keyframes zoomOut { - from { - opacity: 1; - } - - 50% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - to { - opacity: 0; - } -} - -@keyframes zoomOut { - from { - opacity: 1; - } - - 50% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - to { - opacity: 0; - } -} - -.zoomOut { - -webkit-animation-name: zoomOut; - animation-name: zoomOut; -} - -@-webkit-keyframes zoomOutDown { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomOutDown { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomOutDown { - -webkit-animation-name: zoomOutDown; - animation-name: zoomOutDown; -} - -@-webkit-keyframes zoomOutLeft { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); - transform: scale(0.1) translate3d(-2000px, 0, 0); - -webkit-transform-origin: left center; - transform-origin: left center; - } -} - -@keyframes zoomOutLeft { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); - transform: scale(0.1) translate3d(-2000px, 0, 0); - -webkit-transform-origin: left center; - transform-origin: left center; - } -} - -.zoomOutLeft { - -webkit-animation-name: zoomOutLeft; - animation-name: zoomOutLeft; -} - -@-webkit-keyframes zoomOutRight { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); - transform: scale(0.1) translate3d(2000px, 0, 0); - -webkit-transform-origin: right center; - transform-origin: right center; - } -} - -@keyframes zoomOutRight { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); - transform: scale(0.1) translate3d(2000px, 0, 0); - -webkit-transform-origin: right center; - transform-origin: right center; - } -} - -.zoomOutRight { - -webkit-animation-name: zoomOutRight; - animation-name: zoomOutRight; -} - -@-webkit-keyframes zoomOutUp { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomOutUp { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomOutUp { - -webkit-animation-name: zoomOutUp; - animation-name: zoomOutUp; -} - -@-webkit-keyframes slideInDown { - from { - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInDown { - from { - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInDown { - -webkit-animation-name: slideInDown; - animation-name: slideInDown; -} - -@-webkit-keyframes slideInLeft { - from { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInLeft { - from { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInLeft { - -webkit-animation-name: slideInLeft; - animation-name: slideInLeft; -} - -@-webkit-keyframes slideInRight { - from { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInRight { - from { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInRight { - -webkit-animation-name: slideInRight; - animation-name: slideInRight; -} - -@-webkit-keyframes slideInUp { - from { - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInUp { - from { - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInUp { - -webkit-animation-name: slideInUp; - animation-name: slideInUp; -} - -@-webkit-keyframes slideOutDown { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes slideOutDown { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -.slideOutDown { - -webkit-animation-name: slideOutDown; - animation-name: slideOutDown; -} - -@-webkit-keyframes slideOutLeft { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes slideOutLeft { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -.slideOutLeft { - -webkit-animation-name: slideOutLeft; - animation-name: slideOutLeft; -} - -@-webkit-keyframes slideOutRight { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -@keyframes slideOutRight { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -.slideOutRight { - -webkit-animation-name: slideOutRight; - animation-name: slideOutRight; -} - -@-webkit-keyframes slideOutUp { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes slideOutUp { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.slideOutUp { - -webkit-animation-name: slideOutUp; - animation-name: slideOutUp; -} - -body { - font-family: 'Open Sans', sans-serif; -} - -.main_display { - text-transform: uppercase; -} - - - -.parallax-window { - min-height: 100vh; - background-color: transparent; - text-align: center; - /* background-image: url('../image/main_picture.jpg'); */ - background-size: cover; - background-repeat: no-repeat; - background-position: center center; -} - -section { - margin-bottom: 15px; -} - -img { - max-width: 100%; -} - -/* #1ee30b; */ -header.main_display { - margin-bottom: 120px; -} -header.main_display .nav-menu { - position: fixed; - z-index: 50; - right: 0; - top: 0; - transition: background-color 1s; - width: 100%; -} -header.main_display .nav-menu.show { - height: 100%; - background-color: rgba(0, 0, 0, 0.8); -} -header.main_display .nav-menu button { - background-color: #343a40; - margin-left: auto; - margin-right: 1rem; - margin-top: 1rem; -} -header.main_display .nav-menu button .lines { - width: 30px; - height: 30px; - padding: 3px 0; - justify-content: space-between; - align-items: center; -} -header.main_display .nav-menu button .lines .line { - width: 30px; - height: 2px; - background-color: #9A9DA0; - transition: opacity 0.5s, -webkit-transform 0.5s; - transition: opacity .5s, -webkit-transform .5s; - transition: transform .5s, opacity .5s; - transition: transform .5s, opacity .5s, -webkit-transform .5s; - transition: transform 0.5s, opacity 0.5s, -webkit-transform 0.5s; -} -header.main_display .nav-menu button .lines .line-first.x { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: translateY(11px) rotate(45deg); - transform: translateY(11px) rotate(45deg); -} -header.main_display .nav-menu button .lines .line-second.x { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); -} -header.main_display .nav-menu button .lines .line-third.x { - -webkit-transform: translateY(-11px); - transform: translateY(-11px); - opacity: 0; -} -header.main_display .nav-menu .navbar ul li { - transition: all .3s; -} -header.main_display .nav-menu .navbar ul li a { - color: white; - display: block; - text-transform: uppercase; - font-size: 1rem; - letter-spacing: 5px; - position: relative; - height: 60px; - outline: none; - transition: color .5s; -} -header.main_display .nav-menu .navbar ul li:hover { - background-color: rgba(255, 255, 255, 0.3); -} -header.main_display .nav-menu .navbar ul li:hover a { - color: white; - text-decoration: underline; -} -header.main_display h1 { - font-weight: 600; - color: #072704; -} -header.main_display p { - letter-spacing: 5px; - font-weight: bold; - font-size: 15px; -} -header.main_display p.logo-line { - -webkit-transform: translateX(-2rem); - transform: translateX(-2rem); -} -header.main_display p img { - display: inline-block; - height: 5.5rem; - width: auto; -} -header.main_display .middle { - max-width: 80%; - margin: 0 auto; - background-color: rgba(255, 255, 255, 0.6); -} -header.main_display .middle .skills { - font-size: 1rem; -} -header.main_display .empty { - height: 10rem; -} -main { - padding: 15px; -} -main h1 { - margin-bottom: 100px; -} -main .about_me { - margin-bottom: 100px; -} -main .about_me h4 { - color: #072704; - margin-bottom: 25px; -} -main .about_me div { - margin-bottom: 20px; -} -main .about_me .header { - text-align: center; -} -main .about_me .header h1 { - box-shadow: 0 11px 0 white, 0 20px 20px black; -} -main .about_me .header div { - letter-spacing: 4px; - font-size: 1.2em; -} -main .about_me div { - color: #222; -} -main .about_me div.description .article { - text-align: justify; -} -main .about_me div.description .article .skills { - margin-bottom: -23px; - text-align: justify; -} -main .about_me div.description .article .skills span { - margin: 0 3px 0 2px ; - font-size: 6px; -} -main .about_me div.description .article .skills span i { - -webkit-transform: translateY(-4px); - transform: translateY(-4px); -} -main .about_me div .photo .wrapper_photo { - border-radius: 50%; - border: 1px solid black; - overflow: hidden; - max-height: 300px; - max-width: 300px; -} -main .about_me div .personal span { - margin-right: 0.6em; -} -main .about_me div .personal div { - margin-bottom: 10px; -} -main .about_me div .personal div.name { - margin-bottom: 15px; - color: #555; - letter-spacing: 2px; - font-size: 1.2em; -} -main .about_me div .personal div.skype span { - color: #00AFF0; - font-size: 1.3em; -} -main .about_me div .personal div.skype span i { - -webkit-transform: translateY(2px); - transform: translateY(2px); -} -main .about_me div .personal div.e-mail span { - color: #00AFF0; - font-size: 1.3em; -} -main .about_me div .personal div.e-mail span i { - -webkit-transform: translateY(2px); - transform: translateY(2px); -} -main .about_me div .personal div.my_site a { - color: inherit; - text-decoration: underline; -} -main .about_me div .personal div.my_site span.html { - color: #FF6347; - font-size: 1.3em; -} -main .about_me div .personal div.my_site span.html i { - -webkit-transform: translateY(2px); - transform: translateY(2px); -} -main .about_me div .personal div.my_site span.hand { - color: #00AFF0; - font-size: 1.3em; -} -main .about_me div .personal div.my_site span.hand i { - -webkit-transform: translate(-104px, 21px); - transform: translate(-104px, 21px); -} -main .resume { - margin-bottom: 150px; -} -main .resume .header { - text-align: center; -} -main .resume .header h1 { - box-shadow: 0 11px 0 white, 0 20px 20px black; -} -main .resume .header div { - letter-spacing: 4px; - font-size: 1.2em; -} -main .resume .header div.education { - text-align: justify; -} -main .resume h2 { - text-align: center; - margin-bottom: 50px; -} -main .resume .subheader { - text-align: center; - font-size: 14px; - display: inline-block; - background-color: #FF6347; - color: white; - font-weight: 600; - font-style: italic; - padding: 0 15px; - margin: 3rem 0; -} -main .resume .ico { - text-align: center; - margin: 25px 0; -} -main .resume .ico i { - color: #00AFF0; -} -main .portfolio { - background-color: #222; - padding-top: 100px; -} -main .portfolio .last-card { - margin-bottom: 8rem; -} -main .portfolio .card { - position: relative; - overflow: hidden; - color: white; - background-color: rgba(0, 0, 0, 0.8); - text-align: center; - box-shadow: 0 0 0 rgba(0, 0, 0, 0); - transition: box-shadow 0.3s; -} -main .portfolio .card .card-body { - position: absolute; - background-color: rgba(0, 0, 0, 0.6); - width: 100%; - height: 100%; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - opacity: 1; - transition: opacity .3s; -} -main .portfolio .card .card-body .card-title { - text-transform: uppercase; - font-size: 1rem; - margin-bottom: 1rem; - color: #FF6347; -} -main .portfolio .card .card-body .wrapper { - transition: -webkit-transform 0.3s; - transition: -webkit-transform .3s; - transition: transform .3s; - transition: transform .3s, -webkit-transform .3s; - transition: transform 0.3s, -webkit-transform 0.3s; -} -main .portfolio .card .card-body-2 { - position: absolute; - justify-content: center; - align-items: center; - top: 0; - bottom: 0; - left: 0; - right: 0; -} -main .portfolio .card .card-body-2 .card-look { - display: inline-block; - opacity: 0; - color: white; - -webkit-transform: translateY(-100px); - transform: translateY(-100px); - transition: opacity 0.3s, color 0.3s, -webkit-transform 0.3s; - transition: opacity .3s, color .3s, -webkit-transform .3s; - transition: opacity .3s, color .3s, transform .3s; - transition: opacity .3s, color .3s, transform .3s, -webkit-transform .3s; - transition: opacity 0.3s, color 0.3s, transform 0.3s, -webkit-transform 0.3s; - border: 3px solid #FF6347; - padding: 5px 20px; -} -main .portfolio .card .card-img-top { - opacity: .7; - -webkit-transform: scale(1.2, 1.2); - transform: scale(1.2, 1.2); - transition: -webkit-transform 0.3s; - transition: -webkit-transform .3s; - transition: transform .3s; - transition: transform .3s, -webkit-transform .3s; - transition: transform 0.3s, -webkit-transform 0.3s; -} -main .portfolio .card:hover { - cursor: pointer; - box-shadow: 0 0 30px rgba(0, 0, 0, 0.9); -} -main .portfolio .card:hover .card-body { - opacity: 0; -} -main .portfolio .card:hover .card-body .wrapper { - -webkit-transform: translateY(100px); - transform: translateY(100px); -} -main .portfolio .card:hover .card-img-top { - -webkit-transform: scale(1, 1); - transform: scale(1, 1); -} -main .portfolio .card:hover .card-look { - opacity: 1; - color: white; - -webkit-transform: translateY(0); - transform: translateY(0); -} -main .portfolio img { - width: 100%; - height: auto; -} -main .portfolio .header { - text-align: center; - color: white; -} -main .portfolio .header h1 { - padding: 5px 25px; - margin-left: auto; - margin-right: auto; - box-shadow: 0 11px 0 #222, 0 20px 20px white; -} -main .portfolio .header div { - max-width: 85%; - margin: auto; - letter-spacing: 4px; - font-size: 1.2em; -} -main .portfolio .header div.education { - text-align: justify; -} -footer h1 { - margin-bottom: 100px; -} -footer .contacts .header { - text-align: center; -} -footer .contacts .header h1 { - box-shadow: 0 11px 0 white, 0 20px 20px black; -} -footer .contacts .header div { - letter-spacing: 4px; - font-size: 1.2em; -} -footer .contacts .header div.education { - text-align: justify; -} -footer .contacts .item { - text-align: center; - margin-bottom: 2rem; -} -footer .contacts .item .ico { - margin-bottom: 1rem; -} -footer .contacts .item .ico span i { - color: #00AFF0; -} -footer .copyright { - background-color: #222; - color: white; - margin-bottom: 0; -} -footer .copyright i { - color: #FF6347; - cursor: pointer; -} - -.middle.animated { - -webkit-animation-duration: 1.5s; - animation-duration: 1.5s; -} -.animated.fadeInRight, -.animated.fadeInLeft { - -webkit-animation-duration: 1s; - animation-duration: 1s; -} -.navbar-nav .nav-item.item-4 { - -webkit-animation-duration: 1.6s; - animation-duration: 1.6s; -} -.navbar-nav .nav-item.item-3 { - -webkit-animation-duration: 1.2s; - animation-duration: 1.2s; -} -.navbar-nav .nav-item.item-2 { - -webkit-animation-duration: 0.8s; - animation-duration: 0.8s; -} -.navbar-nav .nav-item.item-1 { - -webkit-animation-duration: 0.4s; - animation-duration: 0.4s; -} - - -/* Large Devices, Wide Screens */ -@media only screen and (max-width : 1200px) { - main .about_me div .personal div.my_site span.hand i { - transform: translate(183px, -11px); - } - - header.main_display h1 { - font-size: 1.5rem; - } - - - header.main_display, - section.about_me{ - margin-bottom: 35px; - } - - header p.web_html, - header p.skills { - font-size: 14px ! important; - } - - header p.web_html { - margin-bottom: 9px; - } -} - - -@media only screen and (max-width : 954px) { - header.main_display .middle .skills{ - display: none; - } -} - - - -/* Medium Devices, Desktops */ -@media only screen and (max-width : 992px) { - - main .about_me div .personal div.my_site span.hand i { - transform: translate(-104px, 19px); - } - - footer .contacts .header h1 { - margin-bottom: 70px; - } - - main .portfolio .card .card-body .card-title { - font-size: 0.8rem; - } -} - -/* Small Devices, Tablets */ -@media only screen and (max-width : 768px) { - main .portfolio .card .card-body .card-title { - font-size: 0.7rem; - } - - main .portfolio { - padding-top: 50px; - } - - main .portfolio .header div { - font-size: 1rem; - } - - main .portfolio .header h1 { - margin-bottom: 47px; - } - -} - - -/* Small Devices, Tablets */ -@media only screen and (max-width : 576px) { - #portfolio__ .row.mb-sm-5 { - padding-left: 60px; - padding-right: 60px; - } - - main .portfolio .last-card { - margin-bottom: 4rem; - } - -} - -@media only screen and (max-width : 544px) { - main .portfolio .header div { - font-size: 0.8rem; - } -} - - -/* Extra Small Devices, Phones */ -@media only screen and (max-width : 480px) { - header.main_display p img { - transform: translateX(-106px) !important; - } - - h1{ - font-size: 1.7rem !important; - } -} - - -/*# sourceMappingURL=style.caf6b12a0e2374fb2550.css.map*/ \ No newline at end of file diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/dist/style.caf6b12a0e2374fb2550.css.map b/Andrey_portfolio-master/Andrey_portfolio-master/dist/style.caf6b12a0e2374fb2550.css.map deleted file mode 100644 index 52a1486..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/dist/style.caf6b12a0e2374fb2550.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./css/animate.css","webpack:///./css/style.css (1)","webpack:///./less/style.less","webpack:///./less/animate.less","webpack:///./css/media.css"],"names":[],"mappings":";AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;ACr6GA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AC1BA,cAAc;AACd;EACE,qBAAqB;CACtB;AACD;EACE,gBAAgB;EAChB,YAAY;EACZ,SAAS;EACT,OAAO;EACP,gCAAgC;EAChC,YAAY;CACb;AACD;EACE,aAAa;EACb,qCAAqC;CACtC;AACD;EACE,0BAA0B;EAC1B,kBAAkB;EAClB,mBAAmB;EACnB,iBAAiB;CAClB;AACD;EACE,YAAY;EACZ,aAAa;EACb,eAAe;EACf,+BAA+B;EAC/B,oBAAoB;CACrB;AACD;EACE,YAAY;EACZ,YAAY;EACZ,0BAA0B;EAC1B,iDAAiD;EACjD,+CAA+C;EAC/C,uCAAuC;EACvC,8DAA8D;EAC9D,iEAAiE;CAClE;AACD;EACE,wCAAwC;EACxC,gCAAgC;EAChC,kDAAkD;EAClD,0CAA0C;CAC3C;AACD;EACE,wCAAwC;EACxC,gCAAgC;EAChC,kCAAkC;EAClC,0BAA0B;CAC3B;AACD;EACE,qCAAqC;EACrC,6BAA6B;EAC7B,WAAW;CACZ;AACD;EACE,oBAAoB;CACrB;AACD;EACE,aAAa;EACb,eAAe;EACf,0BAA0B;EAC1B,gBAAgB;EAChB,oBAAoB;EACpB,mBAAmB;EACnB,aAAa;EACb,cAAc;EACd,sBAAsB;CACvB;AACD;EACE,2CAA2C;CAC5C;AACD;EACE,aAAa;EACb,2BAA2B;CAC5B;AACD;EACE,iBAAiB;EACjB,eAAe;CAChB;AACD;EACE,oBAAoB;EACpB,kBAAkB;EAClB,gBAAgB;CACjB;AACD;EACE,qCAAqC;EACrC,6BAA6B;CAC9B;AACD;EACE,sBAAsB;EACtB,eAAe;EACf,YAAY;CACb;AACD;EACE,eAAe;EACf,eAAe;EACf,2CAA2C;CAC5C;AACD;EACE,gBAAgB;CACjB;AACD;EACE,cAAc;CACf;AACD;EACE,cAAc;CACf;AACD;EACE,qBAAqB;CACtB;AACD;EACE,qBAAqB;CACtB;AACD;EACE,eAAe;EACf,oBAAoB;CACrB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,8CAA8C;CAC/C;AACD;EACE,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,YAAY;CACb;AACD;EACE,oBAAoB;CACrB;AACD;EACE,qBAAqB;EACrB,oBAAoB;CACrB;AACD;EACE,qBAAqB;EACrB,eAAe;CAChB;AACD;EACE,oCAAoC;EACpC,4BAA4B;CAC7B;AACD;EACE,mBAAmB;EACnB,wBAAwB;EACxB,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;CAClB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,oBAAoB;EACpB,YAAY;EACZ,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,mCAAmC;EACnC,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,mCAAmC;EACnC,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,mCAAmC;EACnC,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,2CAA2C;EAC3C,mCAAmC;CACpC;AACD;EACE,qBAAqB;CACtB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,8CAA8C;CAC/C;AACD;EACE,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,mBAAmB;EACnB,oBAAoB;CACrB;AACD;EACE,mBAAmB;EACnB,gBAAgB;EAChB,sBAAsB;EACtB,0BAA0B;EAC1B,aAAa;EACb,iBAAiB;EACjB,mBAAmB;EACnB,gBAAgB;EAChB,eAAe;CAChB;AACD;EACE,mBAAmB;EACnB,eAAe;CAChB;AACD;EACE,eAAe;CAChB;AACD;EACE,uBAAuB;EACvB,mBAAmB;CACpB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,mBAAmB;EACnB,iBAAiB;EACjB,aAAa;EACb,qCAAqC;EACrC,mBAAmB;EACnB,mCAAmC;EACnC,4BAA4B;CAC7B;AACD;EACE,mBAAmB;EACnB,qCAAqC;EACrC,YAAY;EACZ,aAAa;EACb,cAAc;EACd,uBAAuB;EACvB,wBAAwB;EACxB,oBAAoB;EACpB,WAAW;EACX,wBAAwB;CACzB;AACD;EACE,0BAA0B;EAC1B,gBAAgB;EAChB,oBAAoB;EACpB,eAAe;CAChB;AACD;EACE,mCAAmC;EACnC,kCAAkC;EAClC,0BAA0B;EAC1B,iDAAiD;EACjD,mDAAmD;CACpD;AACD;EACE,mBAAmB;EACnB,wBAAwB;EACxB,oBAAoB;EACpB,OAAO;EACP,UAAU;EACV,QAAQ;EACR,SAAS;CACV;AACD;EACE,sBAAsB;EACtB,WAAW;EACX,aAAa;EACb,sCAAsC;EACtC,8BAA8B;EAC9B,6DAA6D;EAC7D,0DAA0D;EAC1D,kDAAkD;EAClD,yEAAyE;EACzE,6EAA6E;EAC7E,0BAA0B;EAC1B,kBAAkB;CACnB;AACD;EACE,YAAY;EACZ,mCAAmC;EACnC,2BAA2B;EAC3B,mCAAmC;EACnC,kCAAkC;EAClC,0BAA0B;EAC1B,iDAAiD;EACjD,mDAAmD;CACpD;AACD;EACE,gBAAgB;EAChB,wCAAwC;CACzC;AACD;EACE,WAAW;CACZ;AACD;EACE,qCAAqC;EACrC,6BAA6B;CAC9B;AACD;EACE,+BAA+B;EAC/B,uBAAuB;CACxB;AACD;EACE,WAAW;EACX,aAAa;EACb,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,YAAY;EACZ,aAAa;CACd;AACD;EACE,mBAAmB;EACnB,aAAa;CACd;AACD;EACE,kBAAkB;EAClB,kBAAkB;EAClB,mBAAmB;EACnB,6CAA6C;CAC9C;AACD;EACE,eAAe;EACf,aAAa;EACb,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,qBAAqB;CACtB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,8CAA8C;CAC/C;AACD;EACE,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,mBAAmB;EACnB,oBAAoB;CACrB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,eAAe;CAChB;AACD;EACE,uBAAuB;EACvB,aAAa;EACb,iBAAiB;CAClB;AACD;EACE,eAAe;EACf,gBAAgB;CACjB;;AC3YD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;;EAEE,+BAA+B;EAC/B,uBAAuB;CACxB;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;;;ACvBD;AACA;AACA;AACA,2C;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,4B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,K;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA","file":"style.caf6b12a0e2374fb2550.css","sourcesContent":["@charset \"UTF-8\";\n\n/*!\n * animate.css -http://daneden.me/animate\n * Version - 3.6.0\n * Licensed under the MIT license - http://opensource.org/licenses/MIT\n *\n * Copyright (c) 2018 Daniel Eden\n */\n\n.animated {\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n}\n\n.animated.infinite {\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n}\n\n@-webkit-keyframes bounce {\n from,\n 20%,\n 53%,\n 80%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 40%,\n 43% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n -webkit-transform: translate3d(0, -30px, 0);\n transform: translate3d(0, -30px, 0);\n }\n\n 70% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n -webkit-transform: translate3d(0, -15px, 0);\n transform: translate3d(0, -15px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, -4px, 0);\n transform: translate3d(0, -4px, 0);\n }\n}\n\n@keyframes bounce {\n from,\n 20%,\n 53%,\n 80%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 40%,\n 43% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n -webkit-transform: translate3d(0, -30px, 0);\n transform: translate3d(0, -30px, 0);\n }\n\n 70% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n -webkit-transform: translate3d(0, -15px, 0);\n transform: translate3d(0, -15px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, -4px, 0);\n transform: translate3d(0, -4px, 0);\n }\n}\n\n.bounce {\n -webkit-animation-name: bounce;\n animation-name: bounce;\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n}\n\n@-webkit-keyframes flash {\n from,\n 50%,\n to {\n opacity: 1;\n }\n\n 25%,\n 75% {\n opacity: 0;\n }\n}\n\n@keyframes flash {\n from,\n 50%,\n to {\n opacity: 1;\n }\n\n 25%,\n 75% {\n opacity: 0;\n }\n}\n\n.flash {\n -webkit-animation-name: flash;\n animation-name: flash;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes pulse {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.05, 1.05, 1.05);\n transform: scale3d(1.05, 1.05, 1.05);\n }\n\n to {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes pulse {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.05, 1.05, 1.05);\n transform: scale3d(1.05, 1.05, 1.05);\n }\n\n to {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.pulse {\n -webkit-animation-name: pulse;\n animation-name: pulse;\n}\n\n@-webkit-keyframes rubberBand {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 30% {\n -webkit-transform: scale3d(1.25, 0.75, 1);\n transform: scale3d(1.25, 0.75, 1);\n }\n\n 40% {\n -webkit-transform: scale3d(0.75, 1.25, 1);\n transform: scale3d(0.75, 1.25, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.15, 0.85, 1);\n transform: scale3d(1.15, 0.85, 1);\n }\n\n 65% {\n -webkit-transform: scale3d(0.95, 1.05, 1);\n transform: scale3d(0.95, 1.05, 1);\n }\n\n 75% {\n -webkit-transform: scale3d(1.05, 0.95, 1);\n transform: scale3d(1.05, 0.95, 1);\n }\n\n to {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes rubberBand {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 30% {\n -webkit-transform: scale3d(1.25, 0.75, 1);\n transform: scale3d(1.25, 0.75, 1);\n }\n\n 40% {\n -webkit-transform: scale3d(0.75, 1.25, 1);\n transform: scale3d(0.75, 1.25, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.15, 0.85, 1);\n transform: scale3d(1.15, 0.85, 1);\n }\n\n 65% {\n -webkit-transform: scale3d(0.95, 1.05, 1);\n transform: scale3d(0.95, 1.05, 1);\n }\n\n 75% {\n -webkit-transform: scale3d(1.05, 0.95, 1);\n transform: scale3d(1.05, 0.95, 1);\n }\n\n to {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.rubberBand {\n -webkit-animation-name: rubberBand;\n animation-name: rubberBand;\n}\n\n@-webkit-keyframes shake {\n from,\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 10%,\n 30%,\n 50%,\n 70%,\n 90% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 20%,\n 40%,\n 60%,\n 80% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n}\n\n@keyframes shake {\n from,\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 10%,\n 30%,\n 50%,\n 70%,\n 90% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 20%,\n 40%,\n 60%,\n 80% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n}\n\n.shake {\n -webkit-animation-name: shake;\n animation-name: shake;\n}\n\n@-webkit-keyframes headShake {\n 0% {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n }\n\n 6.5% {\n -webkit-transform: translateX(-6px) rotateY(-9deg);\n transform: translateX(-6px) rotateY(-9deg);\n }\n\n 18.5% {\n -webkit-transform: translateX(5px) rotateY(7deg);\n transform: translateX(5px) rotateY(7deg);\n }\n\n 31.5% {\n -webkit-transform: translateX(-3px) rotateY(-5deg);\n transform: translateX(-3px) rotateY(-5deg);\n }\n\n 43.5% {\n -webkit-transform: translateX(2px) rotateY(3deg);\n transform: translateX(2px) rotateY(3deg);\n }\n\n 50% {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n }\n}\n\n@keyframes headShake {\n 0% {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n }\n\n 6.5% {\n -webkit-transform: translateX(-6px) rotateY(-9deg);\n transform: translateX(-6px) rotateY(-9deg);\n }\n\n 18.5% {\n -webkit-transform: translateX(5px) rotateY(7deg);\n transform: translateX(5px) rotateY(7deg);\n }\n\n 31.5% {\n -webkit-transform: translateX(-3px) rotateY(-5deg);\n transform: translateX(-3px) rotateY(-5deg);\n }\n\n 43.5% {\n -webkit-transform: translateX(2px) rotateY(3deg);\n transform: translateX(2px) rotateY(3deg);\n }\n\n 50% {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n }\n}\n\n.headShake {\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n -webkit-animation-name: headShake;\n animation-name: headShake;\n}\n\n@-webkit-keyframes swing {\n 20% {\n -webkit-transform: rotate3d(0, 0, 1, 15deg);\n transform: rotate3d(0, 0, 1, 15deg);\n }\n\n 40% {\n -webkit-transform: rotate3d(0, 0, 1, -10deg);\n transform: rotate3d(0, 0, 1, -10deg);\n }\n\n 60% {\n -webkit-transform: rotate3d(0, 0, 1, 5deg);\n transform: rotate3d(0, 0, 1, 5deg);\n }\n\n 80% {\n -webkit-transform: rotate3d(0, 0, 1, -5deg);\n transform: rotate3d(0, 0, 1, -5deg);\n }\n\n to {\n -webkit-transform: rotate3d(0, 0, 1, 0deg);\n transform: rotate3d(0, 0, 1, 0deg);\n }\n}\n\n@keyframes swing {\n 20% {\n -webkit-transform: rotate3d(0, 0, 1, 15deg);\n transform: rotate3d(0, 0, 1, 15deg);\n }\n\n 40% {\n -webkit-transform: rotate3d(0, 0, 1, -10deg);\n transform: rotate3d(0, 0, 1, -10deg);\n }\n\n 60% {\n -webkit-transform: rotate3d(0, 0, 1, 5deg);\n transform: rotate3d(0, 0, 1, 5deg);\n }\n\n 80% {\n -webkit-transform: rotate3d(0, 0, 1, -5deg);\n transform: rotate3d(0, 0, 1, -5deg);\n }\n\n to {\n -webkit-transform: rotate3d(0, 0, 1, 0deg);\n transform: rotate3d(0, 0, 1, 0deg);\n }\n}\n\n.swing {\n -webkit-transform-origin: top center;\n transform-origin: top center;\n -webkit-animation-name: swing;\n animation-name: swing;\n}\n\n@-webkit-keyframes tada {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 10%,\n 20% {\n -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n }\n\n 30%,\n 50%,\n 70%,\n 90% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n }\n\n 40%,\n 60%,\n 80% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n }\n\n to {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes tada {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 10%,\n 20% {\n -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n }\n\n 30%,\n 50%,\n 70%,\n 90% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n }\n\n 40%,\n 60%,\n 80% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n }\n\n to {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.tada {\n -webkit-animation-name: tada;\n animation-name: tada;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes wobble {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 15% {\n -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n }\n\n 30% {\n -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n }\n\n 45% {\n -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n }\n\n 60% {\n -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n }\n\n 75% {\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes wobble {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 15% {\n -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n }\n\n 30% {\n -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n }\n\n 45% {\n -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n }\n\n 60% {\n -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n }\n\n 75% {\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.wobble {\n -webkit-animation-name: wobble;\n animation-name: wobble;\n}\n\n@-webkit-keyframes jello {\n from,\n 11.1%,\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 22.2% {\n -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n transform: skewX(-12.5deg) skewY(-12.5deg);\n }\n\n 33.3% {\n -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n transform: skewX(6.25deg) skewY(6.25deg);\n }\n\n 44.4% {\n -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n transform: skewX(-3.125deg) skewY(-3.125deg);\n }\n\n 55.5% {\n -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n transform: skewX(1.5625deg) skewY(1.5625deg);\n }\n\n 66.6% {\n -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n transform: skewX(-0.78125deg) skewY(-0.78125deg);\n }\n\n 77.7% {\n -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n transform: skewX(0.390625deg) skewY(0.390625deg);\n }\n\n 88.8% {\n -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n }\n}\n\n@keyframes jello {\n from,\n 11.1%,\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 22.2% {\n -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n transform: skewX(-12.5deg) skewY(-12.5deg);\n }\n\n 33.3% {\n -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n transform: skewX(6.25deg) skewY(6.25deg);\n }\n\n 44.4% {\n -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n transform: skewX(-3.125deg) skewY(-3.125deg);\n }\n\n 55.5% {\n -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n transform: skewX(1.5625deg) skewY(1.5625deg);\n }\n\n 66.6% {\n -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n transform: skewX(-0.78125deg) skewY(-0.78125deg);\n }\n\n 77.7% {\n -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n transform: skewX(0.390625deg) skewY(0.390625deg);\n }\n\n 88.8% {\n -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n }\n}\n\n.jello {\n -webkit-animation-name: jello;\n animation-name: jello;\n -webkit-transform-origin: center;\n transform-origin: center;\n}\n\n@-webkit-keyframes bounceIn {\n from,\n 20%,\n 40%,\n 60%,\n 80%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n 20% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n 40% {\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\n transform: scale3d(0.9, 0.9, 0.9);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\n transform: scale3d(1.03, 1.03, 1.03);\n }\n\n 80% {\n -webkit-transform: scale3d(0.97, 0.97, 0.97);\n transform: scale3d(0.97, 0.97, 0.97);\n }\n\n to {\n opacity: 1;\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes bounceIn {\n from,\n 20%,\n 40%,\n 60%,\n 80%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n 20% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n 40% {\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\n transform: scale3d(0.9, 0.9, 0.9);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\n transform: scale3d(1.03, 1.03, 1.03);\n }\n\n 80% {\n -webkit-transform: scale3d(0.97, 0.97, 0.97);\n transform: scale3d(0.97, 0.97, 0.97);\n }\n\n to {\n opacity: 1;\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.bounceIn {\n -webkit-animation-duration: 0.75s;\n animation-duration: 0.75s;\n -webkit-animation-name: bounceIn;\n animation-name: bounceIn;\n}\n\n@-webkit-keyframes bounceInDown {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(0, -3000px, 0);\n transform: translate3d(0, -3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, 25px, 0);\n transform: translate3d(0, 25px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, 5px, 0);\n transform: translate3d(0, 5px, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes bounceInDown {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(0, -3000px, 0);\n transform: translate3d(0, -3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, 25px, 0);\n transform: translate3d(0, 25px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, 5px, 0);\n transform: translate3d(0, 5px, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.bounceInDown {\n -webkit-animation-name: bounceInDown;\n animation-name: bounceInDown;\n}\n\n@-webkit-keyframes bounceInLeft {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(-3000px, 0, 0);\n transform: translate3d(-3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(25px, 0, 0);\n transform: translate3d(25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(5px, 0, 0);\n transform: translate3d(5px, 0, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes bounceInLeft {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(-3000px, 0, 0);\n transform: translate3d(-3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(25px, 0, 0);\n transform: translate3d(25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(5px, 0, 0);\n transform: translate3d(5px, 0, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.bounceInLeft {\n -webkit-animation-name: bounceInLeft;\n animation-name: bounceInLeft;\n}\n\n@-webkit-keyframes bounceInRight {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(3000px, 0, 0);\n transform: translate3d(3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(-25px, 0, 0);\n transform: translate3d(-25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(-5px, 0, 0);\n transform: translate3d(-5px, 0, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes bounceInRight {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(3000px, 0, 0);\n transform: translate3d(3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(-25px, 0, 0);\n transform: translate3d(-25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(-5px, 0, 0);\n transform: translate3d(-5px, 0, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.bounceInRight {\n -webkit-animation-name: bounceInRight;\n animation-name: bounceInRight;\n}\n\n@-webkit-keyframes bounceInUp {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 3000px, 0);\n transform: translate3d(0, 3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, -5px, 0);\n transform: translate3d(0, -5px, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes bounceInUp {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 3000px, 0);\n transform: translate3d(0, 3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, -5px, 0);\n transform: translate3d(0, -5px, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.bounceInUp {\n -webkit-animation-name: bounceInUp;\n animation-name: bounceInUp;\n}\n\n@-webkit-keyframes bounceOut {\n 20% {\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\n transform: scale3d(0.9, 0.9, 0.9);\n }\n\n 50%,\n 55% {\n opacity: 1;\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n}\n\n@keyframes bounceOut {\n 20% {\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\n transform: scale3d(0.9, 0.9, 0.9);\n }\n\n 50%,\n 55% {\n opacity: 1;\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n}\n\n.bounceOut {\n -webkit-animation-duration: 0.75s;\n animation-duration: 0.75s;\n -webkit-animation-name: bounceOut;\n animation-name: bounceOut;\n}\n\n@-webkit-keyframes bounceOutDown {\n 20% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 40%,\n 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n@keyframes bounceOutDown {\n 20% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 40%,\n 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n.bounceOutDown {\n -webkit-animation-name: bounceOutDown;\n animation-name: bounceOutDown;\n}\n\n@-webkit-keyframes bounceOutLeft {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(20px, 0, 0);\n transform: translate3d(20px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n@keyframes bounceOutLeft {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(20px, 0, 0);\n transform: translate3d(20px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n.bounceOutLeft {\n -webkit-animation-name: bounceOutLeft;\n animation-name: bounceOutLeft;\n}\n\n@-webkit-keyframes bounceOutRight {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(-20px, 0, 0);\n transform: translate3d(-20px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n@keyframes bounceOutRight {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(-20px, 0, 0);\n transform: translate3d(-20px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n.bounceOutRight {\n -webkit-animation-name: bounceOutRight;\n animation-name: bounceOutRight;\n}\n\n@-webkit-keyframes bounceOutUp {\n 20% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 40%,\n 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, 20px, 0);\n transform: translate3d(0, 20px, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n@keyframes bounceOutUp {\n 20% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 40%,\n 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, 20px, 0);\n transform: translate3d(0, 20px, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n.bounceOutUp {\n -webkit-animation-name: bounceOutUp;\n animation-name: bounceOutUp;\n}\n\n@-webkit-keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.fadeIn {\n -webkit-animation-name: fadeIn;\n animation-name: fadeIn;\n}\n\n@-webkit-keyframes fadeInDown {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInDown {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInDown {\n -webkit-animation-name: fadeInDown;\n animation-name: fadeInDown;\n}\n\n@-webkit-keyframes fadeInDownBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInDownBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInDownBig {\n -webkit-animation-name: fadeInDownBig;\n animation-name: fadeInDownBig;\n}\n\n@-webkit-keyframes fadeInLeft {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInLeft {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInLeft {\n -webkit-animation-name: fadeInLeft;\n animation-name: fadeInLeft;\n}\n\n@-webkit-keyframes fadeInLeftBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInLeftBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInLeftBig {\n -webkit-animation-name: fadeInLeftBig;\n animation-name: fadeInLeftBig;\n}\n\n@-webkit-keyframes fadeInRight {\n from {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInRight {\n from {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInRight {\n -webkit-animation-name: fadeInRight;\n animation-name: fadeInRight;\n}\n\n@-webkit-keyframes fadeInRightBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInRightBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInRightBig {\n -webkit-animation-name: fadeInRightBig;\n animation-name: fadeInRightBig;\n}\n\n@-webkit-keyframes fadeInUp {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInUp {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInUp {\n -webkit-animation-name: fadeInUp;\n animation-name: fadeInUp;\n}\n\n@-webkit-keyframes fadeInUpBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInUpBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInUpBig {\n -webkit-animation-name: fadeInUpBig;\n animation-name: fadeInUpBig;\n}\n\n@-webkit-keyframes fadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n.fadeOut {\n -webkit-animation-name: fadeOut;\n animation-name: fadeOut;\n}\n\n@-webkit-keyframes fadeOutDown {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n@keyframes fadeOutDown {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n.fadeOutDown {\n -webkit-animation-name: fadeOutDown;\n animation-name: fadeOutDown;\n}\n\n@-webkit-keyframes fadeOutDownBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n@keyframes fadeOutDownBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n.fadeOutDownBig {\n -webkit-animation-name: fadeOutDownBig;\n animation-name: fadeOutDownBig;\n}\n\n@-webkit-keyframes fadeOutLeft {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n@keyframes fadeOutLeft {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.fadeOutLeft {\n -webkit-animation-name: fadeOutLeft;\n animation-name: fadeOutLeft;\n}\n\n@-webkit-keyframes fadeOutLeftBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n@keyframes fadeOutLeftBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n.fadeOutLeftBig {\n -webkit-animation-name: fadeOutLeftBig;\n animation-name: fadeOutLeftBig;\n}\n\n@-webkit-keyframes fadeOutRight {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n@keyframes fadeOutRight {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.fadeOutRight {\n -webkit-animation-name: fadeOutRight;\n animation-name: fadeOutRight;\n}\n\n@-webkit-keyframes fadeOutRightBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n@keyframes fadeOutRightBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n.fadeOutRightBig {\n -webkit-animation-name: fadeOutRightBig;\n animation-name: fadeOutRightBig;\n}\n\n@-webkit-keyframes fadeOutUp {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n@keyframes fadeOutUp {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n.fadeOutUp {\n -webkit-animation-name: fadeOutUp;\n animation-name: fadeOutUp;\n}\n\n@-webkit-keyframes fadeOutUpBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n@keyframes fadeOutUpBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n.fadeOutUpBig {\n -webkit-animation-name: fadeOutUpBig;\n animation-name: fadeOutUpBig;\n}\n\n@-webkit-keyframes flip {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 40% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 50% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 80% {\n -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n}\n\n@keyframes flip {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 40% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 50% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 80% {\n -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n}\n\n.animated.flip {\n -webkit-backface-visibility: visible;\n backface-visibility: visible;\n -webkit-animation-name: flip;\n animation-name: flip;\n}\n\n@-webkit-keyframes flipInX {\n from {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n@keyframes flipInX {\n from {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n.flipInX {\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n -webkit-animation-name: flipInX;\n animation-name: flipInX;\n}\n\n@-webkit-keyframes flipInY {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n }\n\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n@keyframes flipInY {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n }\n\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n.flipInY {\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n -webkit-animation-name: flipInY;\n animation-name: flipInY;\n}\n\n@-webkit-keyframes flipOutX {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n opacity: 1;\n }\n\n to {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n opacity: 0;\n }\n}\n\n@keyframes flipOutX {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n opacity: 1;\n }\n\n to {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n opacity: 0;\n }\n}\n\n.flipOutX {\n -webkit-animation-duration: 0.75s;\n animation-duration: 0.75s;\n -webkit-animation-name: flipOutX;\n animation-name: flipOutX;\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n}\n\n@-webkit-keyframes flipOutY {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n opacity: 1;\n }\n\n to {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n opacity: 0;\n }\n}\n\n@keyframes flipOutY {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n opacity: 1;\n }\n\n to {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n opacity: 0;\n }\n}\n\n.flipOutY {\n -webkit-animation-duration: 0.75s;\n animation-duration: 0.75s;\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n -webkit-animation-name: flipOutY;\n animation-name: flipOutY;\n}\n\n@-webkit-keyframes lightSpeedIn {\n from {\n -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n transform: translate3d(100%, 0, 0) skewX(-30deg);\n opacity: 0;\n }\n\n 60% {\n -webkit-transform: skewX(20deg);\n transform: skewX(20deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: skewX(-5deg);\n transform: skewX(-5deg);\n opacity: 1;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n@keyframes lightSpeedIn {\n from {\n -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n transform: translate3d(100%, 0, 0) skewX(-30deg);\n opacity: 0;\n }\n\n 60% {\n -webkit-transform: skewX(20deg);\n transform: skewX(20deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: skewX(-5deg);\n transform: skewX(-5deg);\n opacity: 1;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n.lightSpeedIn {\n -webkit-animation-name: lightSpeedIn;\n animation-name: lightSpeedIn;\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n}\n\n@-webkit-keyframes lightSpeedOut {\n from {\n opacity: 1;\n }\n\n to {\n -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n transform: translate3d(100%, 0, 0) skewX(30deg);\n opacity: 0;\n }\n}\n\n@keyframes lightSpeedOut {\n from {\n opacity: 1;\n }\n\n to {\n -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n transform: translate3d(100%, 0, 0) skewX(30deg);\n opacity: 0;\n }\n}\n\n.lightSpeedOut {\n -webkit-animation-name: lightSpeedOut;\n animation-name: lightSpeedOut;\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n}\n\n@-webkit-keyframes rotateIn {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, -200deg);\n transform: rotate3d(0, 0, 1, -200deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n@keyframes rotateIn {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, -200deg);\n transform: rotate3d(0, 0, 1, -200deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n.rotateIn {\n -webkit-animation-name: rotateIn;\n animation-name: rotateIn;\n}\n\n@-webkit-keyframes rotateInDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n@keyframes rotateInDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n.rotateInDownLeft {\n -webkit-animation-name: rotateInDownLeft;\n animation-name: rotateInDownLeft;\n}\n\n@-webkit-keyframes rotateInDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n@keyframes rotateInDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n.rotateInDownRight {\n -webkit-animation-name: rotateInDownRight;\n animation-name: rotateInDownRight;\n}\n\n@-webkit-keyframes rotateInUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n@keyframes rotateInUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n.rotateInUpLeft {\n -webkit-animation-name: rotateInUpLeft;\n animation-name: rotateInUpLeft;\n}\n\n@-webkit-keyframes rotateInUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -90deg);\n transform: rotate3d(0, 0, 1, -90deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n@keyframes rotateInUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -90deg);\n transform: rotate3d(0, 0, 1, -90deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n.rotateInUpRight {\n -webkit-animation-name: rotateInUpRight;\n animation-name: rotateInUpRight;\n}\n\n@-webkit-keyframes rotateOut {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, 200deg);\n transform: rotate3d(0, 0, 1, 200deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOut {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, 200deg);\n transform: rotate3d(0, 0, 1, 200deg);\n opacity: 0;\n }\n}\n\n.rotateOut {\n -webkit-animation-name: rotateOut;\n animation-name: rotateOut;\n}\n\n@-webkit-keyframes rotateOutDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n}\n\n.rotateOutDownLeft {\n -webkit-animation-name: rotateOutDownLeft;\n animation-name: rotateOutDownLeft;\n}\n\n@-webkit-keyframes rotateOutDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n.rotateOutDownRight {\n -webkit-animation-name: rotateOutDownRight;\n animation-name: rotateOutDownRight;\n}\n\n@-webkit-keyframes rotateOutUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n.rotateOutUpLeft {\n -webkit-animation-name: rotateOutUpLeft;\n animation-name: rotateOutUpLeft;\n}\n\n@-webkit-keyframes rotateOutUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 90deg);\n transform: rotate3d(0, 0, 1, 90deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 90deg);\n transform: rotate3d(0, 0, 1, 90deg);\n opacity: 0;\n }\n}\n\n.rotateOutUpRight {\n -webkit-animation-name: rotateOutUpRight;\n animation-name: rotateOutUpRight;\n}\n\n@-webkit-keyframes hinge {\n 0% {\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 20%,\n 60% {\n -webkit-transform: rotate3d(0, 0, 1, 80deg);\n transform: rotate3d(0, 0, 1, 80deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 40%,\n 80% {\n -webkit-transform: rotate3d(0, 0, 1, 60deg);\n transform: rotate3d(0, 0, 1, 60deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n opacity: 1;\n }\n\n to {\n -webkit-transform: translate3d(0, 700px, 0);\n transform: translate3d(0, 700px, 0);\n opacity: 0;\n }\n}\n\n@keyframes hinge {\n 0% {\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 20%,\n 60% {\n -webkit-transform: rotate3d(0, 0, 1, 80deg);\n transform: rotate3d(0, 0, 1, 80deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 40%,\n 80% {\n -webkit-transform: rotate3d(0, 0, 1, 60deg);\n transform: rotate3d(0, 0, 1, 60deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n opacity: 1;\n }\n\n to {\n -webkit-transform: translate3d(0, 700px, 0);\n transform: translate3d(0, 700px, 0);\n opacity: 0;\n }\n}\n\n.hinge {\n -webkit-animation-duration: 2s;\n animation-duration: 2s;\n -webkit-animation-name: hinge;\n animation-name: hinge;\n}\n\n@-webkit-keyframes jackInTheBox {\n from {\n opacity: 0;\n -webkit-transform: scale(0.1) rotate(30deg);\n transform: scale(0.1) rotate(30deg);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n }\n\n 50% {\n -webkit-transform: rotate(-10deg);\n transform: rotate(-10deg);\n }\n\n 70% {\n -webkit-transform: rotate(3deg);\n transform: rotate(3deg);\n }\n\n to {\n opacity: 1;\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n}\n\n@keyframes jackInTheBox {\n from {\n opacity: 0;\n -webkit-transform: scale(0.1) rotate(30deg);\n transform: scale(0.1) rotate(30deg);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n }\n\n 50% {\n -webkit-transform: rotate(-10deg);\n transform: rotate(-10deg);\n }\n\n 70% {\n -webkit-transform: rotate(3deg);\n transform: rotate(3deg);\n }\n\n to {\n opacity: 1;\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n}\n\n.jackInTheBox {\n -webkit-animation-name: jackInTheBox;\n animation-name: jackInTheBox;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollIn {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes rollIn {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.rollIn {\n -webkit-animation-name: rollIn;\n animation-name: rollIn;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n }\n}\n\n@keyframes rollOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n }\n}\n\n.rollOut {\n -webkit-animation-name: rollOut;\n animation-name: rollOut;\n}\n\n@-webkit-keyframes zoomIn {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n 50% {\n opacity: 1;\n }\n}\n\n@keyframes zoomIn {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n 50% {\n opacity: 1;\n }\n}\n\n.zoomIn {\n -webkit-animation-name: zoomIn;\n animation-name: zoomIn;\n}\n\n@-webkit-keyframes zoomInDown {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n@keyframes zoomInDown {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n.zoomInDown {\n -webkit-animation-name: zoomInDown;\n animation-name: zoomInDown;\n}\n\n@-webkit-keyframes zoomInLeft {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n@keyframes zoomInLeft {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n.zoomInLeft {\n -webkit-animation-name: zoomInLeft;\n animation-name: zoomInLeft;\n}\n\n@-webkit-keyframes zoomInRight {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n@keyframes zoomInRight {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n.zoomInRight {\n -webkit-animation-name: zoomInRight;\n animation-name: zoomInRight;\n}\n\n@-webkit-keyframes zoomInUp {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n@keyframes zoomInUp {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n.zoomInUp {\n -webkit-animation-name: zoomInUp;\n animation-name: zoomInUp;\n}\n\n@-webkit-keyframes zoomOut {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes zoomOut {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n to {\n opacity: 0;\n }\n}\n\n.zoomOut {\n -webkit-animation-name: zoomOut;\n animation-name: zoomOut;\n}\n\n@-webkit-keyframes zoomOutDown {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n@keyframes zoomOutDown {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n.zoomOutDown {\n -webkit-animation-name: zoomOutDown;\n animation-name: zoomOutDown;\n}\n\n@-webkit-keyframes zoomOutLeft {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\n transform: scale(0.1) translate3d(-2000px, 0, 0);\n -webkit-transform-origin: left center;\n transform-origin: left center;\n }\n}\n\n@keyframes zoomOutLeft {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\n transform: scale(0.1) translate3d(-2000px, 0, 0);\n -webkit-transform-origin: left center;\n transform-origin: left center;\n }\n}\n\n.zoomOutLeft {\n -webkit-animation-name: zoomOutLeft;\n animation-name: zoomOutLeft;\n}\n\n@-webkit-keyframes zoomOutRight {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\n transform: scale(0.1) translate3d(2000px, 0, 0);\n -webkit-transform-origin: right center;\n transform-origin: right center;\n }\n}\n\n@keyframes zoomOutRight {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\n transform: scale(0.1) translate3d(2000px, 0, 0);\n -webkit-transform-origin: right center;\n transform-origin: right center;\n }\n}\n\n.zoomOutRight {\n -webkit-animation-name: zoomOutRight;\n animation-name: zoomOutRight;\n}\n\n@-webkit-keyframes zoomOutUp {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n@keyframes zoomOutUp {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n.zoomOutUp {\n -webkit-animation-name: zoomOutUp;\n animation-name: zoomOutUp;\n}\n\n@-webkit-keyframes slideInDown {\n from {\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInDown {\n from {\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInDown {\n -webkit-animation-name: slideInDown;\n animation-name: slideInDown;\n}\n\n@-webkit-keyframes slideInLeft {\n from {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInLeft {\n from {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInLeft {\n -webkit-animation-name: slideInLeft;\n animation-name: slideInLeft;\n}\n\n@-webkit-keyframes slideInRight {\n from {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInRight {\n from {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInRight {\n -webkit-animation-name: slideInRight;\n animation-name: slideInRight;\n}\n\n@-webkit-keyframes slideInUp {\n from {\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInUp {\n from {\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInUp {\n -webkit-animation-name: slideInUp;\n animation-name: slideInUp;\n}\n\n@-webkit-keyframes slideOutDown {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n@keyframes slideOutDown {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n.slideOutDown {\n -webkit-animation-name: slideOutDown;\n animation-name: slideOutDown;\n}\n\n@-webkit-keyframes slideOutLeft {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n@keyframes slideOutLeft {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.slideOutLeft {\n -webkit-animation-name: slideOutLeft;\n animation-name: slideOutLeft;\n}\n\n@-webkit-keyframes slideOutRight {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n@keyframes slideOutRight {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.slideOutRight {\n -webkit-animation-name: slideOutRight;\n animation-name: slideOutRight;\n}\n\n@-webkit-keyframes slideOutUp {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n@keyframes slideOutUp {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n.slideOutUp {\n -webkit-animation-name: slideOutUp;\n animation-name: slideOutUp;\n}\n","body {\r\n font-family: 'Open Sans', sans-serif;\r\n}\r\n\r\n.main_display {\r\n text-transform: uppercase;\r\n}\r\n\r\n\r\n\r\n.parallax-window {\r\n min-height: 100vh;\r\n background-color: transparent;\r\n text-align: center;\r\n /* background-image: url('../image/main_picture.jpg'); */\r\n background-size: cover;\r\n background-repeat: no-repeat;\r\n background-position: center center;\r\n}\r\n\r\nsection {\r\n margin-bottom: 15px;\r\n}\r\n\r\nimg {\r\n max-width: 100%;\r\n}\r\n","/* #1ee30b; */\nheader.main_display {\n margin-bottom: 120px;\n}\nheader.main_display .nav-menu {\n position: fixed;\n z-index: 50;\n right: 0;\n top: 0;\n transition: background-color 1s;\n width: 100%;\n}\nheader.main_display .nav-menu.show {\n height: 100%;\n background-color: rgba(0, 0, 0, 0.8);\n}\nheader.main_display .nav-menu button {\n background-color: #343a40;\n margin-left: auto;\n margin-right: 1rem;\n margin-top: 1rem;\n}\nheader.main_display .nav-menu button .lines {\n width: 30px;\n height: 30px;\n padding: 3px 0;\n justify-content: space-between;\n align-items: center;\n}\nheader.main_display .nav-menu button .lines .line {\n width: 30px;\n height: 2px;\n background-color: #9A9DA0;\n transition: opacity 0.5s, -webkit-transform 0.5s;\n transition: opacity .5s, -webkit-transform .5s;\n transition: transform .5s, opacity .5s;\n transition: transform .5s, opacity .5s, -webkit-transform .5s;\n transition: transform 0.5s, opacity 0.5s, -webkit-transform 0.5s;\n}\nheader.main_display .nav-menu button .lines .line-first.x {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n -webkit-transform: translateY(11px) rotate(45deg);\n transform: translateY(11px) rotate(45deg);\n}\nheader.main_display .nav-menu button .lines .line-second.x {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n}\nheader.main_display .nav-menu button .lines .line-third.x {\n -webkit-transform: translateY(-11px);\n transform: translateY(-11px);\n opacity: 0;\n}\nheader.main_display .nav-menu .navbar ul li {\n transition: all .3s;\n}\nheader.main_display .nav-menu .navbar ul li a {\n color: white;\n display: block;\n text-transform: uppercase;\n font-size: 1rem;\n letter-spacing: 5px;\n position: relative;\n height: 60px;\n outline: none;\n transition: color .5s;\n}\nheader.main_display .nav-menu .navbar ul li:hover {\n background-color: rgba(255, 255, 255, 0.3);\n}\nheader.main_display .nav-menu .navbar ul li:hover a {\n color: white;\n text-decoration: underline;\n}\nheader.main_display h1 {\n font-weight: 600;\n color: #072704;\n}\nheader.main_display p {\n letter-spacing: 5px;\n font-weight: bold;\n font-size: 15px;\n}\nheader.main_display p.logo-line {\n -webkit-transform: translateX(-2rem);\n transform: translateX(-2rem);\n}\nheader.main_display p img {\n display: inline-block;\n height: 5.5rem;\n width: auto;\n}\nheader.main_display .middle {\n max-width: 80%;\n margin: 0 auto;\n background-color: rgba(255, 255, 255, 0.6);\n}\nheader.main_display .middle .skills {\n font-size: 1rem;\n}\nheader.main_display .empty {\n height: 10rem;\n}\nmain {\n padding: 15px;\n}\nmain h1 {\n margin-bottom: 100px;\n}\nmain .about_me {\n margin-bottom: 100px;\n}\nmain .about_me h4 {\n color: #072704;\n margin-bottom: 25px;\n}\nmain .about_me div {\n margin-bottom: 20px;\n}\nmain .about_me .header {\n text-align: center;\n}\nmain .about_me .header h1 {\n box-shadow: 0 11px 0 white, 0 20px 20px black;\n}\nmain .about_me .header div {\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nmain .about_me div {\n color: #222;\n}\nmain .about_me div.description .article {\n text-align: justify;\n}\nmain .about_me div.description .article .skills {\n margin-bottom: -23px;\n text-align: justify;\n}\nmain .about_me div.description .article .skills span {\n margin: 0 3px 0 2px ;\n font-size: 6px;\n}\nmain .about_me div.description .article .skills span i {\n -webkit-transform: translateY(-4px);\n transform: translateY(-4px);\n}\nmain .about_me div .photo .wrapper_photo {\n border-radius: 50%;\n border: 1px solid black;\n overflow: hidden;\n max-height: 300px;\n max-width: 300px;\n}\nmain .about_me div .personal span {\n margin-right: 0.6em;\n}\nmain .about_me div .personal div {\n margin-bottom: 10px;\n}\nmain .about_me div .personal div.name {\n margin-bottom: 15px;\n color: #555;\n letter-spacing: 2px;\n font-size: 1.2em;\n}\nmain .about_me div .personal div.skype span {\n color: #00AFF0;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.skype span i {\n -webkit-transform: translateY(2px);\n transform: translateY(2px);\n}\nmain .about_me div .personal div.e-mail span {\n color: #00AFF0;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.e-mail span i {\n -webkit-transform: translateY(2px);\n transform: translateY(2px);\n}\nmain .about_me div .personal div.my_site a {\n color: inherit;\n text-decoration: underline;\n}\nmain .about_me div .personal div.my_site span.html {\n color: #FF6347;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.my_site span.html i {\n -webkit-transform: translateY(2px);\n transform: translateY(2px);\n}\nmain .about_me div .personal div.my_site span.hand {\n color: #00AFF0;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.my_site span.hand i {\n -webkit-transform: translate(-104px, 21px);\n transform: translate(-104px, 21px);\n}\nmain .resume {\n margin-bottom: 150px;\n}\nmain .resume .header {\n text-align: center;\n}\nmain .resume .header h1 {\n box-shadow: 0 11px 0 white, 0 20px 20px black;\n}\nmain .resume .header div {\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nmain .resume .header div.education {\n text-align: justify;\n}\nmain .resume h2 {\n text-align: center;\n margin-bottom: 50px;\n}\nmain .resume .subheader {\n text-align: center;\n font-size: 14px;\n display: inline-block;\n background-color: #FF6347;\n color: white;\n font-weight: 600;\n font-style: italic;\n padding: 0 15px;\n margin: 3rem 0;\n}\nmain .resume .ico {\n text-align: center;\n margin: 25px 0;\n}\nmain .resume .ico i {\n color: #00AFF0;\n}\nmain .portfolio {\n background-color: #222;\n padding-top: 100px;\n}\nmain .portfolio .last-card {\n margin-bottom: 8rem;\n}\nmain .portfolio .card {\n position: relative;\n overflow: hidden;\n color: white;\n background-color: rgba(0, 0, 0, 0.8);\n text-align: center;\n box-shadow: 0 0 0 rgba(0, 0, 0, 0);\n transition: box-shadow 0.3s;\n}\nmain .portfolio .card .card-body {\n position: absolute;\n background-color: rgba(0, 0, 0, 0.6);\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n opacity: 1;\n transition: opacity .3s;\n}\nmain .portfolio .card .card-body .card-title {\n text-transform: uppercase;\n font-size: 1rem;\n margin-bottom: 1rem;\n color: #FF6347;\n}\nmain .portfolio .card .card-body .wrapper {\n transition: -webkit-transform 0.3s;\n transition: -webkit-transform .3s;\n transition: transform .3s;\n transition: transform .3s, -webkit-transform .3s;\n transition: transform 0.3s, -webkit-transform 0.3s;\n}\nmain .portfolio .card .card-body-2 {\n position: absolute;\n justify-content: center;\n align-items: center;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n}\nmain .portfolio .card .card-body-2 .card-look {\n display: inline-block;\n opacity: 0;\n color: white;\n -webkit-transform: translateY(-100px);\n transform: translateY(-100px);\n transition: opacity 0.3s, color 0.3s, -webkit-transform 0.3s;\n transition: opacity .3s, color .3s, -webkit-transform .3s;\n transition: opacity .3s, color .3s, transform .3s;\n transition: opacity .3s, color .3s, transform .3s, -webkit-transform .3s;\n transition: opacity 0.3s, color 0.3s, transform 0.3s, -webkit-transform 0.3s;\n border: 3px solid #FF6347;\n padding: 5px 20px;\n}\nmain .portfolio .card .card-img-top {\n opacity: .7;\n -webkit-transform: scale(1.2, 1.2);\n transform: scale(1.2, 1.2);\n transition: -webkit-transform 0.3s;\n transition: -webkit-transform .3s;\n transition: transform .3s;\n transition: transform .3s, -webkit-transform .3s;\n transition: transform 0.3s, -webkit-transform 0.3s;\n}\nmain .portfolio .card:hover {\n cursor: pointer;\n box-shadow: 0 0 30px rgba(0, 0, 0, 0.9);\n}\nmain .portfolio .card:hover .card-body {\n opacity: 0;\n}\nmain .portfolio .card:hover .card-body .wrapper {\n -webkit-transform: translateY(100px);\n transform: translateY(100px);\n}\nmain .portfolio .card:hover .card-img-top {\n -webkit-transform: scale(1, 1);\n transform: scale(1, 1);\n}\nmain .portfolio .card:hover .card-look {\n opacity: 1;\n color: white;\n -webkit-transform: translateY(0);\n transform: translateY(0);\n}\nmain .portfolio img {\n width: 100%;\n height: auto;\n}\nmain .portfolio .header {\n text-align: center;\n color: white;\n}\nmain .portfolio .header h1 {\n padding: 5px 25px;\n margin-left: auto;\n margin-right: auto;\n box-shadow: 0 11px 0 #222, 0 20px 20px white;\n}\nmain .portfolio .header div {\n max-width: 85%;\n margin: auto;\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nmain .portfolio .header div.education {\n text-align: justify;\n}\nfooter h1 {\n margin-bottom: 100px;\n}\nfooter .contacts .header {\n text-align: center;\n}\nfooter .contacts .header h1 {\n box-shadow: 0 11px 0 white, 0 20px 20px black;\n}\nfooter .contacts .header div {\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nfooter .contacts .header div.education {\n text-align: justify;\n}\nfooter .contacts .item {\n text-align: center;\n margin-bottom: 2rem;\n}\nfooter .contacts .item .ico {\n margin-bottom: 1rem;\n}\nfooter .contacts .item .ico span i {\n color: #00AFF0;\n}\nfooter .copyright {\n background-color: #222;\n color: white;\n margin-bottom: 0;\n}\nfooter .copyright i {\n color: #FF6347;\n cursor: pointer;\n}\n",".middle.animated {\n -webkit-animation-duration: 1.5s;\n animation-duration: 1.5s;\n}\n.animated.fadeInRight,\n.animated.fadeInLeft {\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n}\n.navbar-nav .nav-item.item-4 {\n -webkit-animation-duration: 1.6s;\n animation-duration: 1.6s;\n}\n.navbar-nav .nav-item.item-3 {\n -webkit-animation-duration: 1.2s;\n animation-duration: 1.2s;\n}\n.navbar-nav .nav-item.item-2 {\n -webkit-animation-duration: 0.8s;\n animation-duration: 0.8s;\n}\n.navbar-nav .nav-item.item-1 {\n -webkit-animation-duration: 0.4s;\n animation-duration: 0.4s;\n}\n","\r\n/* Large Devices, Wide Screens */\r\n@media only screen and (max-width : 1200px) {\r\n main .about_me div .personal div.my_site span.hand i {\r\n transform: translate(183px, -11px); \r\n }\r\n\r\n header.main_display h1 {\r\n font-size: 1.5rem;\r\n }\r\n\r\n\r\n header.main_display,\r\n section.about_me{\r\n margin-bottom: 35px; \r\n }\r\n\r\n header p.web_html, \r\n header p.skills {\r\n font-size: 14px ! important;\r\n }\r\n \r\n header p.web_html {\r\n margin-bottom: 9px;\r\n }\r\n}\r\n\r\n\r\n@media only screen and (max-width : 954px) {\r\n header.main_display .middle .skills{\r\n display: none;\r\n }\r\n}\r\n\r\n\r\n\r\n/* Medium Devices, Desktops */\r\n@media only screen and (max-width : 992px) {\r\n \r\n main .about_me div .personal div.my_site span.hand i {\r\n transform: translate(-104px, 19px);\r\n }\r\n\r\n footer .contacts .header h1 {\r\n margin-bottom: 70px;\r\n }\r\n \r\n main .portfolio .card .card-body .card-title {\r\n font-size: 0.8rem;\r\n }\r\n}\r\n\r\n/* Small Devices, Tablets */\r\n@media only screen and (max-width : 768px) {\r\n main .portfolio .card .card-body .card-title {\r\n font-size: 0.7rem;\r\n }\r\n\r\n main .portfolio {\r\n padding-top: 50px;\r\n }\r\n\r\n main .portfolio .header div {\r\n font-size: 1rem;\r\n }\r\n\r\n main .portfolio .header h1 {\r\n margin-bottom: 47px;\r\n }\r\n\r\n}\r\n\r\n\r\n/* Small Devices, Tablets */\r\n@media only screen and (max-width : 576px) {\r\n #portfolio__ .row.mb-sm-5 {\r\n padding-left: 60px;\r\n padding-right: 60px;\r\n }\r\n\r\n main .portfolio .last-card {\r\n margin-bottom: 4rem;\r\n }\r\n \r\n}\r\n\r\n@media only screen and (max-width : 544px) {\r\n main .portfolio .header div {\r\n font-size: 0.8rem;\r\n } \r\n}\r\n\r\n\r\n/* Extra Small Devices, Phones */\r\n@media only screen and (max-width : 480px) {\r\n header.main_display p img {\r\n transform: translateX(-106px) !important;\r\n }\r\n\r\n h1{\r\n font-size: 1.7rem !important;\r\n }\r\n}\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/package-lock.json b/Andrey_portfolio-master/Andrey_portfolio-master/package-lock.json deleted file mode 100644 index 88ba1b0..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/package-lock.json +++ /dev/null @@ -1,11242 +0,0 @@ -{ - "name": "webpack_lesson_1", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "1.0.1", - "glob-to-regexp": "0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.0.2.tgz", - "integrity": "sha512-vCpf75JDcdomXvUd7Rn6DfYAVqPAFI66FVjxiWGwh85OLdvfo3paBoPJaam5keIYRyUolnS7SleS/ZPCidCvzw==", - "dev": true - }, - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.4.3.tgz", - "integrity": "sha512-S6npYhPcTHDYe9nlsKa9CyWByFi8Vj8HovcAgtmMAQZUOczOZbQ8CnwMYKYC5HEZzxEE+oY0jfQk4cVlI3J59Q==", - "dev": true, - "requires": { - "@webassemblyjs/helper-wasm-bytecode": "1.4.3", - "@webassemblyjs/wast-parser": "1.4.3", - "debug": "3.1.0", - "webassemblyjs": "1.4.3" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.3.tgz", - "integrity": "sha512-3zTkSFswwZOPNHnzkP9ONq4bjJSeKVMcuahGXubrlLmZP8fmTIJ58dW7h/zOVWiFSuG2em3/HH3BlCN7wyu9Rw==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.3.tgz", - "integrity": "sha512-e8+KZHh+RV8MUvoSRtuT1sFXskFnWG9vbDy47Oa166xX+l0dD5sERJ21g5/tcH8Yo95e9IN3u7Jc3NbhnUcSkw==", - "dev": true, - "requires": { - "debug": "3.1.0" - } - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.3.tgz", - "integrity": "sha512-9FgHEtNsZQYaKrGCtsjswBil48Qp1agrzRcPzCbQloCoaTbOXLJ9IRmqT+uEZbenpULLRNFugz3I4uw18hJM8w==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.4.3" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.3.tgz", - "integrity": "sha512-JINY76U+702IRf7ePukOt037RwmtH59JHvcdWbTTyHi18ixmQ+uOuNhcdCcQHTquDAH35/QgFlp3Y9KqtyJsCQ==", - "dev": true - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.3.tgz", - "integrity": "sha512-I7bS+HaO0K07Io89qhJv+z1QipTpuramGwUSDkwEaficbSvCcL92CUZEtgykfNtk5wb0CoLQwWlmXTwGbNZUeQ==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.3.tgz", - "integrity": "sha512-p0yeeO/h2r30PyjnJX9xXSR6EDcvJd/jC6xa/Pxg4lpfcNi7JUswOpqDToZQ55HMMVhXDih/yqkaywHWGLxqyQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.4.3", - "@webassemblyjs/helper-buffer": "1.4.3", - "@webassemblyjs/helper-wasm-bytecode": "1.4.3", - "@webassemblyjs/wasm-gen": "1.4.3", - "debug": "3.1.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.4.3.tgz", - "integrity": "sha512-4u0LJLSPzuRDWHwdqsrThYn+WqMFVqbI2ltNrHvZZkzFPO8XOZ0HFQ5eVc4jY/TNHgXcnwrHjONhPGYuuf//KQ==", - "dev": true, - "requires": { - "leb": "0.3.0" - } - }, - "@webassemblyjs/validation": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/validation/-/validation-1.4.3.tgz", - "integrity": "sha512-R+rRMKfhd9mq0rj2mhU9A9NKI2l/Rw65vIYzz4lui7eTKPcCu1l7iZNi4b9Gen8D42Sqh/KGiaQNk/x5Tn/iBQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.4.3" - } - }, - "@webassemblyjs/wasm-edit": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.3.tgz", - "integrity": "sha512-qzuwUn771PV6/LilqkXcS0ozJYAeY/OKbXIWU3a8gexuqb6De2p4ya/baBeH5JQ2WJdfhWhSvSbu86Vienttpw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.4.3", - "@webassemblyjs/helper-buffer": "1.4.3", - "@webassemblyjs/helper-wasm-bytecode": "1.4.3", - "@webassemblyjs/helper-wasm-section": "1.4.3", - "@webassemblyjs/wasm-gen": "1.4.3", - "@webassemblyjs/wasm-opt": "1.4.3", - "@webassemblyjs/wasm-parser": "1.4.3", - "@webassemblyjs/wast-printer": "1.4.3", - "debug": "3.1.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.3.tgz", - "integrity": "sha512-eR394T8dHZfpLJ7U/Z5pFSvxl1L63JdREebpv9gYc55zLhzzdJPAuxjBYT4XqevUdW67qU2s0nNA3kBuNJHbaQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.4.3", - "@webassemblyjs/helper-wasm-bytecode": "1.4.3", - "@webassemblyjs/leb128": "1.4.3" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.3.tgz", - "integrity": "sha512-7Gp+nschuKiDuAL1xmp4Xz0rgEbxioFXw4nCFYEmy+ytynhBnTeGc9W9cB1XRu1w8pqRU2lbj2VBBA4cL5Z2Kw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.4.3", - "@webassemblyjs/helper-buffer": "1.4.3", - "@webassemblyjs/wasm-gen": "1.4.3", - "@webassemblyjs/wasm-parser": "1.4.3", - "debug": "3.1.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.3.tgz", - "integrity": "sha512-KXBjtlwA3BVukR/yWHC9GF+SCzBcgj0a7lm92kTOaa4cbjaTaa47bCjXw6cX4SGQpkncB9PU2hHGYVyyI7wFRg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.4.3", - "@webassemblyjs/helper-wasm-bytecode": "1.4.3", - "@webassemblyjs/leb128": "1.4.3", - "@webassemblyjs/wasm-parser": "1.4.3", - "webassemblyjs": "1.4.3" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.4.3.tgz", - "integrity": "sha512-QhCsQzqV0CpsEkRYyTzQDilCNUZ+5j92f+g35bHHNqS22FppNTywNFfHPq8ZWZfYCgbectc+PoghD+xfzVFh1Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.4.3", - "@webassemblyjs/floating-point-hex-parser": "1.4.3", - "@webassemblyjs/helper-code-frame": "1.4.3", - "@webassemblyjs/helper-fsm": "1.4.3", - "long": "3.2.0", - "webassemblyjs": "1.4.3" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.4.3.tgz", - "integrity": "sha512-EgXk4anf8jKmuZJsqD8qy5bz2frEQhBvZruv+bqwNoLWUItjNSFygk8ywL3JTEz9KtxTlAmqTXNrdD1d9gNDtg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.4.3", - "@webassemblyjs/wast-parser": "1.4.3", - "long": "3.2.0" - } - }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "dev": true, - "requires": { - "mime-types": "2.1.18", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "dev": true, - "requires": { - "acorn": "5.5.3" - } - }, - "ajv": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", - "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", - "dev": true, - "requires": { - "fast-deep-equal": "2.0.1", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1", - "uri-js": "4.2.1" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", - "dev": true - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "1.9.1" - } - }, - "any-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.2.0.tgz", - "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", - "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", - "dev": true - }, - "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.11.0" - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "1.0.3" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true, - "optional": true - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true, - "optional": true - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "ast-types": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz", - "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true, - "optional": true - }, - "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", - "dev": true - }, - "autoprefixer": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.5.0.tgz", - "integrity": "sha512-buY1XxFoBrXvLsoFb0jP+niSu1tCj2RwMwHj96+RfQ8DJTgb0vUhh0dg6wjJT3JzsFYBrkSj8/sGtarNdlxTFw==", - "dev": true, - "requires": { - "browserslist": "3.2.7", - "caniuse-lite": "1.0.30000841", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "6.0.22", - "postcss-value-parser": "3.3.0" - }, - "dependencies": { - "browserslist": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.7.tgz", - "integrity": "sha512-oYVLxFVqpX9uMhOIQBLtZL+CX4uY8ZpWcjNTaxyWl5rO8yA9SSNikFnAfvk8J3P/7z3BZwNmEqFKaJoYltj3MQ==", - "dev": true, - "requires": { - "caniuse-lite": "1.0.30000841", - "electron-to-chromium": "1.3.46" - } - }, - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "source-map": "0.6.1", - "supports-color": "5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", - "dev": true, - "optional": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.10", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.10", - "source-map": "0.5.7", - "trim-right": "1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-helper-bindify-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", - "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.10" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-explode-class": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", - "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", - "dev": true, - "requires": { - "babel-helper-bindify-decorators": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.10" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true, - "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-loader": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.4.tgz", - "integrity": "sha512-/hbyEvPzBJuGpk9o80R0ZyTej6heEOr59GoEUtn8qFKbnx4cJm9FWES6J/iv644sYgrtVw9JJQkjaLW/bqb5gw==", - "dev": true, - "requires": { - "find-cache-dir": "1.0.0", - "loader-utils": "1.1.0", - "mkdirp": "0.5.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", - "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", - "dev": true - }, - "babel-plugin-syntax-class-constructor-call": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", - "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", - "dev": true - }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", - "dev": true - }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", - "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", - "dev": true - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-export-extensions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", - "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", - "dev": true - }, - "babel-plugin-syntax-flow": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", - "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", - "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-generators": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-class-constructor-call": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", - "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", - "dev": true, - "requires": { - "babel-plugin-syntax-class-constructor-call": "6.18.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-class-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", - "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", - "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", - "dev": true, - "requires": { - "babel-helper-explode-class": "6.24.1", - "babel-plugin-syntax-decorators": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.10" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true, - "requires": { - "babel-helper-define-map": "6.26.0", - "babel-helper-function-name": "6.24.1", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, - "requires": { - "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "regexpu-core": "2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-export-extensions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", - "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", - "dev": true, - "requires": { - "babel-plugin-syntax-export-extensions": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-flow-strip-types": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", - "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", - "dev": true, - "requires": { - "babel-plugin-syntax-flow": "6.18.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "dev": true, - "requires": { - "regenerator-transform": "0.10.1" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-preset-env": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", - "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0", - "browserslist": "3.2.7", - "invariant": "2.2.4", - "semver": "5.5.0" - }, - "dependencies": { - "browserslist": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.7.tgz", - "integrity": "sha512-oYVLxFVqpX9uMhOIQBLtZL+CX4uY8ZpWcjNTaxyWl5rO8yA9SSNikFnAfvk8J3P/7z3BZwNmEqFKaJoYltj3MQ==", - "dev": true, - "requires": { - "caniuse-lite": "1.0.30000841", - "electron-to-chromium": "1.3.46" - } - } - } - }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0" - } - }, - "babel-preset-stage-1": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", - "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", - "dev": true, - "requires": { - "babel-plugin-transform-class-constructor-call": "6.24.1", - "babel-plugin-transform-export-extensions": "6.22.0", - "babel-preset-stage-2": "6.24.1" - } - }, - "babel-preset-stage-2": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", - "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", - "dev": true, - "requires": { - "babel-plugin-syntax-dynamic-import": "6.18.0", - "babel-plugin-transform-class-properties": "6.24.1", - "babel-plugin-transform-decorators": "6.24.1", - "babel-preset-stage-3": "6.24.1" - } - }, - "babel-preset-stage-3": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", - "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", - "dev": true, - "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-generator-functions": "6.24.1", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-object-rest-spread": "6.26.0" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "6.26.3", - "babel-runtime": "6.26.0", - "core-js": "2.5.6", - "home-or-tmp": "2.0.0", - "lodash": "4.17.10", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "2.5.6", - "regenerator-runtime": "0.11.1" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.10" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.4", - "lodash": "4.17.10" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.10", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz", - "integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "binaryextensions": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.1.tgz", - "integrity": "sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA==", - "dev": true - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-type": "1.0.4", - "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.3", - "iconv-lite": "0.4.19", - "on-finished": "2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "1.6.16" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "2.1.1", - "deep-equal": "1.0.1", - "dns-equal": "1.0.0", - "dns-txt": "2.0.2", - "multicast-dns": "6.2.3", - "multicast-dns-service-types": "1.1.0" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true, - "optional": true, - "requires": { - "hoek": "4.2.1" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.2" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "1.2.0", - "browserify-des": "1.0.1", - "evp_bytestokey": "1.0.3" - } - }, - "browserify-des": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", - "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.6" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.1" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "1.0.6" - } - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "1.0.30000841", - "electron-to-chromium": "1.3.46" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "1.3.0", - "ieee754": "1.1.11", - "isarray": "1.0.0" - } - }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", - "dev": true, - "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.3", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - } - }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "dev": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - } - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000841", - "lodash.memoize": "4.1.2", - "lodash.uniq": "4.5.0" - } - }, - "caniuse-db": { - "version": "1.0.30000841", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000841.tgz", - "integrity": "sha1-26QAiVmQNI4t47cXlaUOg38Ts/Y=", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30000841", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000841.tgz", - "integrity": "sha512-LeOGLEY4hl6xZc/xMYOrVmSrHOybyHWNShFN51qCmDXo69nEGKHTJTfe6jdWe4hLxSJcwEIYtKHFFh93fF/kNA==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", - "dev": true - }, - "chokidar": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", - "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", - "dev": true, - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "fsevents": "1.2.4", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.1.0" - } - }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true - }, - "chrome-trace-event": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", - "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.2" - } - }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "dev": true, - "requires": { - "chalk": "1.1.3" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } - }, - "clean-css": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", - "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, - "clean-webpack-plugin": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-0.1.19.tgz", - "integrity": "sha512-M1Li5yLHECcN2MahoreuODul5LkjohJGFxLPTjl3j1ttKrF5rgjZET1SJduuqxLAuT1gAPOdkhg03qcaaU1KeA==", - "dev": true, - "requires": { - "rimraf": "2.6.2" - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "2.0.0" - } - }, - "cli-spinners": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", - "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", - "dev": true - }, - "cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", - "dev": true, - "requires": { - "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true - } - } - }, - "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", - "dev": true, - "requires": { - "slice-ansi": "0.0.4", - "string-width": "1.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - } - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "1.0.0" - } - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "cloneable-readable": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", - "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "process-nextick-args": "2.0.0", - "readable-stream": "2.3.6" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "dev": true, - "requires": { - "q": "1.5.1" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" - } - }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true, - "requires": { - "clone": "1.0.4", - "color-convert": "1.9.1", - "color-string": "0.3.0" - } - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true, - "requires": { - "color": "0.11.4", - "css-color-names": "0.0.4", - "has": "1.0.1" - } - }, - "colors": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", - "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", - "dev": true - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "compressible": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", - "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", - "dev": true, - "requires": { - "mime-db": "1.33.0" - } - }, - "compression": { - "version": "1.7.2", - "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", - "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", - "dev": true, - "requires": { - "accepts": "1.3.5", - "bytes": "3.0.0", - "compressible": "2.0.13", - "debug": "2.6.9", - "on-headers": "1.0.1", - "safe-buffer": "5.1.1", - "vary": "1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - } - }, - "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", - "dev": true - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "1.2.0", - "fs-write-stream-atomic": "1.0.10", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", - "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", - "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", - "dev": true, - "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.7.0", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "os-homedir": "1.0.2", - "parse-json": "2.2.0", - "require-from-string": "1.2.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "1.3.1" - } - } - } - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "md5.js": "1.3.4", - "ripemd160": "2.0.2", - "sha.js": "2.4.11" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "inherits": "2.0.3", - "ripemd160": "2.0.2", - "safe-buffer": "5.1.2", - "sha.js": "2.4.11" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "1.0.4", - "path-key": "2.0.1", - "semver": "5.5.0", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", - "dev": true - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "dev": true, - "optional": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true, - "optional": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "1.0.1", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.3", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "diffie-hellman": "5.0.3", - "inherits": "2.0.3", - "pbkdf2": "3.0.16", - "public-encrypt": "4.0.2", - "randombytes": "2.0.6", - "randomfill": "1.0.4" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-loader": { - "version": "0.28.11", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", - "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "css-selector-tokenizer": "0.7.0", - "cssnano": "3.10.0", - "icss-utils": "2.1.0", - "loader-utils": "1.1.0", - "lodash.camelcase": "4.3.0", - "object-assign": "4.1.1", - "postcss": "5.2.18", - "postcss-modules-extract-imports": "1.2.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0", - "postcss-value-parser": "3.3.0", - "source-list-map": "2.0.0" - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", - "domutils": "1.5.1", - "nth-check": "1.0.1" - } - }, - "css-selector-tokenizer": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", - "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", - "dev": true, - "requires": { - "cssesc": "0.1.0", - "fastparse": "1.1.1", - "regexpu-core": "1.0.0" - }, - "dependencies": { - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "1.4.0", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - } - } - }, - "css-what": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", - "dev": true - }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", - "dev": true - }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true, - "requires": { - "autoprefixer": "6.7.7", - "decamelize": "1.2.0", - "defined": "1.0.0", - "has": "1.0.1", - "object-assign": "4.1.1", - "postcss": "5.2.18", - "postcss-calc": "5.3.1", - "postcss-colormin": "2.2.2", - "postcss-convert-values": "2.6.1", - "postcss-discard-comments": "2.0.4", - "postcss-discard-duplicates": "2.1.0", - "postcss-discard-empty": "2.1.0", - "postcss-discard-overridden": "0.1.1", - "postcss-discard-unused": "2.2.3", - "postcss-filter-plugins": "2.0.2", - "postcss-merge-idents": "2.1.7", - "postcss-merge-longhand": "2.0.2", - "postcss-merge-rules": "2.1.2", - "postcss-minify-font-values": "1.0.5", - "postcss-minify-gradients": "1.0.5", - "postcss-minify-params": "1.2.2", - "postcss-minify-selectors": "2.1.1", - "postcss-normalize-charset": "1.1.1", - "postcss-normalize-url": "3.0.8", - "postcss-ordered-values": "2.2.3", - "postcss-reduce-idents": "2.4.0", - "postcss-reduce-initial": "1.0.1", - "postcss-reduce-transforms": "1.0.4", - "postcss-svgo": "2.1.6", - "postcss-unique-selectors": "2.0.2", - "postcss-value-parser": "3.3.0", - "postcss-zindex": "2.2.0" - }, - "dependencies": { - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000841", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - } - } - }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true, - "requires": { - "clap": "1.2.3", - "source-map": "0.5.7" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "1.0.2" - } - }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "0.10.42" - } - }, - "dargs": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", - "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "date-fns": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", - "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", - "dev": true - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "1.0.0" - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", - "dev": true - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - } - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "6.1.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "p-map": "1.2.0", - "pify": "3.0.0", - "rimraf": "2.6.2" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-conflict": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/detect-conflict/-/detect-conflict-1.0.1.tgz", - "integrity": "sha1-CIZXpmqWHAUBnbfEIwiDsca0F24=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "detect-node": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", - "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.6" - } - }, - "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", - "dev": true, - "requires": { - "arrify": "1.0.1", - "path-type": "3.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "dev": true, - "requires": { - "ip": "1.1.5", - "safe-buffer": "5.1.2" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "1.1.1" - } - }, - "dom-converter": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", - "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", - "dev": true, - "requires": { - "utila": "0.3.3" - }, - "dependencies": { - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "dev": true, - "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", - "dev": true - }, - "domhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", - "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", - "dev": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - } - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "editions": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", - "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", - "dev": true - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "ejs": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", - "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.46", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.46.tgz", - "integrity": "sha1-AOheIidUFaiHUF5KtJc3GU8YubA=", - "dev": true - }, - "elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", - "dev": true - }, - "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", - "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "tapable": "1.0.0" - } - }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", - "dev": true - }, - "envinfo": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-4.4.2.tgz", - "integrity": "sha512-5rfRs+m+6pwoKRCFqpsA5+qsLngFms1aWPrxfKbrObCzQaPc3M3yPloZx+BL9UE3dK58cxw36XVQbFRSCCfGSQ==", - "dev": true - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "1.0.1" - } - }, - "error": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", - "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", - "dev": true, - "requires": { - "string-template": "0.2.1", - "xtend": "4.0.1" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es-abstract": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", - "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", - "dev": true, - "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true, - "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" - } - }, - "es5-ext": { - "version": "0.10.42", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", - "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", - "dev": true, - "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "next-tick": "1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-symbol": "3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "dev": true, - "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "4.2.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true, - "requires": { - "original": "1.0.1" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.2" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - } - } - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "2.2.4" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "3.0.0", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "1.0.1" - } - }, - "express": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", - "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", - "dev": true, - "requires": { - "accepts": "1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", - "content-type": "1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "1.1.2", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.3", - "qs": "6.5.1", - "range-parser": "1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "1.4.0", - "type-is": "1.6.16", - "utils-merge": "1.0.1", - "vary": "1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true, - "optional": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.23", - "tmp": "0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - } - } - }, - "extract-text-webpack-plugin": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", - "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", - "dev": true, - "requires": { - "async": "2.6.0", - "loader-utils": "1.1.0", - "schema-utils": "0.3.0", - "webpack-sources": "1.1.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dev": true, - "requires": { - "lodash": "4.17.10" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "schema-utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", - "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", - "dev": true, - "requires": { - "ajv": "5.5.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", - "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "2.2.1", - "@nodelib/fs.stat": "1.0.2", - "glob-parent": "3.1.0", - "is-glob": "4.0.0", - "merge2": "1.2.2", - "micromatch": "3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fastparse": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", - "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", - "dev": true - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": "0.7.0" - } - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "file-loader": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", - "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "schema-utils": "0.4.5" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.4.0", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "1.0.1", - "make-dir": "1.3.0", - "pkg-dir": "2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "first-chunk-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", - "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", - "dev": true, - "requires": { - "readable-stream": "2.3.6" - } - }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", - "dev": true - }, - "flow-parser": { - "version": "0.72.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.72.0.tgz", - "integrity": "sha512-kFaDtviKlD/rHi6NRp42KTbnPgz/nKcWUJQhqDnLDeKA8uGcRVSy0YlQjaf9M3pFo5PgC3SNFnCPpQGLtHjH2w==", - "dev": true - }, - "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "follow-redirects": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", - "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", - "dev": true, - "requires": { - "debug": "3.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "readable-stream": "2.3.6" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "dev": true, - "optional": true, - "requires": { - "nan": "2.10.0", - "node-pre-gyp": "0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "2.2.4" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": "2.1.2" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.1.1", - "yallist": "3.0.2" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "2.2.4" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.21", - "sax": "1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.1", - "needle": "2.2.0", - "nopt": "4.0.1", - "npm-packlist": "1.1.10", - "npmlog": "4.1.2", - "rc": "1.2.7", - "rimraf": "2.6.2", - "semver": "5.5.0", - "tar": "4.4.1" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.1", - "yallist": "3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, - "dev": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "gh-got": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gh-got/-/gh-got-6.0.0.tgz", - "integrity": "sha512-F/mS+fsWQMo1zfgG9MD8KWvTWPPzzhuVwY++fhQ5Ggd+0P+CAMHtzMZhNxG+TqGfHDChJKsbh6otfMGqO2AKBw==", - "dev": true, - "requires": { - "got": "7.1.0", - "is-plain-obj": "1.1.0" - }, - "dependencies": { - "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "dev": true, - "requires": { - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-plain-obj": "1.1.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.1", - "p-cancelable": "0.3.0", - "p-timeout": "1.2.1", - "safe-buffer": "5.1.2", - "timed-out": "4.0.1", - "url-parse-lax": "1.0.0", - "url-to-options": "1.0.1" - } - }, - "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", - "dev": true - }, - "p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", - "dev": true, - "requires": { - "p-finally": "1.0.0" - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "1.0.4" - } - } - } - }, - "github-username": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/github-username/-/github-username-4.1.0.tgz", - "integrity": "sha1-y+KABBiDIG2kISrp5LXxacML9Bc=", - "dev": true, - "requires": { - "gh-got": "6.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-all": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.1.0.tgz", - "integrity": "sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs=", - "dev": true, - "requires": { - "glob": "7.1.2", - "yargs": "1.2.6" - }, - "dependencies": { - "minimist": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz", - "integrity": "sha1-md9lelJXTCHJBXSX33QnkLK0wN4=", - "dev": true - }, - "yargs": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.2.6.tgz", - "integrity": "sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s=", - "dev": true, - "requires": { - "minimist": "0.1.0" - } - } - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "1.0.2", - "is-windows": "1.0.2", - "resolve-dir": "1.0.1" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "2.0.2", - "homedir-polyfill": "1.0.1", - "ini": "1.3.5", - "is-windows": "1.0.2", - "which": "1.3.0" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", - "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", - "dev": true, - "requires": { - "array-union": "1.0.2", - "dir-glob": "2.0.0", - "fast-glob": "2.2.2", - "glob": "7.1.2", - "ignore": "3.3.8", - "pify": "3.0.0", - "slash": "1.0.0" - } - }, - "got": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.1.tgz", - "integrity": "sha512-tiLX+bnYm5A56T5N/n9Xo89vMaO1mrS9qoDqj3u/anVooqGozvY/HbXzEpDfbNeKsHCBpK40gSbz8wGYSp3i1w==", - "dev": true, - "requires": { - "@sindresorhus/is": "0.7.0", - "cacheable-request": "2.1.4", - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "into-stream": "3.1.0", - "is-retry-allowed": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.1", - "mimic-response": "1.0.0", - "p-cancelable": "0.4.1", - "p-timeout": "2.0.1", - "pify": "3.0.0", - "safe-buffer": "5.1.2", - "timed-out": "4.0.1", - "url-parse-lax": "3.0.0", - "url-to-options": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "grouped-queue": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-0.3.3.tgz", - "integrity": "sha1-wWfSpTGcWg4JZO9qJbfC34mWyFw=", - "dev": true, - "requires": { - "lodash": "4.17.10" - } - }, - "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", - "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "optional": true - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "dev": true, - "optional": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true, - "optional": true - } - } - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, - "requires": { - "function-bind": "1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dev": true, - "requires": { - "has-symbol-support-x": "1.4.2" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.2" - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" - } - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "dev": true, - "optional": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", - "dev": true - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "dev": true, - "requires": { - "parse-passwd": "1.0.0" - } - }, - "hosted-git-info": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "obuf": "1.1.2", - "readable-stream": "2.3.6", - "wbuf": "1.7.3" - } - }, - "html-comment-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", - "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", - "dev": true - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true - }, - "html-minifier": { - "version": "3.5.15", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.15.tgz", - "integrity": "sha512-OZa4rfb6tZOZ3Z8Xf0jKxXkiDcFWldQePGYFDcgKqES2sXeWaEv9y6QQvWUtX3ySI3feApQi5uCsHLINQ6NoAw==", - "dev": true, - "requires": { - "camel-case": "3.0.0", - "clean-css": "4.1.11", - "commander": "2.15.1", - "he": "1.1.1", - "param-case": "2.1.1", - "relateurl": "0.2.7", - "uglify-js": "3.3.25" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "uglify-js": { - "version": "3.3.25", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.25.tgz", - "integrity": "sha512-hobogryjDV36VrLK3Y69ou4REyrTApzUblVFmdQOYRe8cYaSmFJXMb4dR9McdvYDSbeNdzUgYr2YVukJaErJcA==", - "dev": true, - "requires": { - "commander": "2.15.1", - "source-map": "0.6.1" - } - } - } - }, - "html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", - "dev": true, - "requires": { - "html-minifier": "3.5.15", - "loader-utils": "0.2.17", - "lodash": "4.17.10", - "pretty-error": "2.1.1", - "tapable": "1.0.0", - "toposort": "1.0.7", - "util.promisify": "1.0.0" - }, - "dependencies": { - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - } - } - }, - "htmlparser2": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", - "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", - "dev": true, - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.1.0", - "domutils": "1.1.6", - "readable-stream": "1.0.34" - }, - "dependencies": { - "domutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", - "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": "1.4.0" - } - }, - "http-parser-js": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.12.tgz", - "integrity": "sha1-uc+/Sizybw/DSxDKFImid3HjR08=", - "dev": true - }, - "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", - "dev": true, - "requires": { - "eventemitter3": "3.1.0", - "follow-redirects": "1.4.1", - "requires-port": "1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", - "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", - "dev": true, - "requires": { - "http-proxy": "1.17.0", - "is-glob": "4.0.0", - "lodash": "4.17.10", - "micromatch": "3.1.10" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "dev": true, - "requires": { - "safer-buffer": "2.1.2" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", - "dev": true, - "requires": { - "postcss": "6.0.22" - }, - "dependencies": { - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "source-map": "0.6.1", - "supports-color": "5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "ieee754": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", - "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", - "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", - "dev": true - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", - "dev": true, - "optional": true - }, - "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", - "dev": true, - "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "inquirer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", - "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", - "dev": true, - "requires": { - "ansi-escapes": "3.1.0", - "chalk": "2.4.1", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.2.0", - "figures": "2.0.0", - "lodash": "4.17.10", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rxjs": "5.5.10", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" - } - }, - "internal-ip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", - "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", - "dev": true, - "requires": { - "meow": "3.7.0" - } - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "dev": true, - "requires": { - "from2": "2.3.0", - "p-is-promise": "1.1.0" - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "1.3.1" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ipaddr.js": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", - "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "1.11.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", - "dev": true - }, - "is-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", - "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", - "dev": true, - "requires": { - "symbol-observable": "0.2.4" - }, - "dependencies": { - "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", - "dev": true - } - } - }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "dev": true, - "requires": { - "is-number": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "1.0.1" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "3.0.1" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "1.0.1" - } - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, - "is-scoped": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-1.0.0.tgz", - "integrity": "sha1-RJypgpnnEwOCViieyytUDcQ3yzA=", - "dev": true, - "requires": { - "scoped-regex": "1.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "dev": true, - "requires": { - "html-comment-regex": "1.1.1" - } - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true, - "optional": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isbinaryfile": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", - "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true, - "optional": true - }, - "istextorbinary": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz", - "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", - "dev": true, - "requires": { - "binaryextensions": "2.1.1", - "editions": "1.3.4", - "textextensions": "2.2.0" - } - }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dev": true, - "requires": { - "has-to-string-tag-x": "1.4.1", - "is-object": "1.0.1" - } - }, - "jquery": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", - "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" - }, - "js-base64": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", - "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true, - "requires": { - "argparse": "1.0.10", - "esprima": "2.7.3" - }, - "dependencies": { - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - } - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "jscodeshift": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.5.0.tgz", - "integrity": "sha512-JAcQINNMFpdzzpKJN8k5xXjF3XDuckB1/48uScSzcnNyK199iWEc9AxKL9OoX5144M2w5zEx9Qs4/E/eBZZUlw==", - "dev": true, - "requires": { - "babel-plugin-transform-flow-strip-types": "6.22.0", - "babel-preset-es2015": "6.24.1", - "babel-preset-stage-1": "6.24.1", - "babel-register": "6.26.0", - "babylon": "7.0.0-beta.47", - "colors": "1.2.5", - "flow-parser": "0.72.0", - "lodash": "4.17.10", - "micromatch": "2.3.11", - "neo-async": "2.5.1", - "node-dir": "0.1.8", - "nomnom": "1.8.1", - "recast": "0.14.7", - "temp": "0.8.3", - "write-file-atomic": "1.3.4" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - } - } - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true, - "optional": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "killable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", - "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", - "dev": true, - "requires": { - "lodash": "4.17.10", - "webpack-sources": "1.1.0" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "1.0.0" - } - }, - "leb": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz", - "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=", - "dev": true - }, - "less": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/less/-/less-3.0.4.tgz", - "integrity": "sha512-q3SyEnPKbk9zh4l36PGeW2fgynKu+FpbhiUNx/yaiBUQ3V0CbACCgb9FzYWcRgI2DJlP6eI4jc8XPrCTi55YcQ==", - "dev": true, - "requires": { - "errno": "0.1.7", - "graceful-fs": "4.1.11", - "image-size": "0.5.5", - "mime": "1.6.0", - "mkdirp": "0.5.1", - "promise": "7.3.1", - "request": "2.86.0", - "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "less-loader": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", - "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", - "dev": true, - "requires": { - "clone": "2.1.1", - "loader-utils": "1.1.0", - "pify": "3.0.0" - }, - "dependencies": { - "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", - "dev": true - } - } - }, - "listr": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", - "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "cli-truncate": "0.2.1", - "figures": "1.7.0", - "indent-string": "2.1.0", - "is-observable": "0.2.0", - "is-promise": "2.1.0", - "is-stream": "1.1.0", - "listr-silent-renderer": "1.1.1", - "listr-update-renderer": "0.4.0", - "listr-verbose-renderer": "0.4.1", - "log-symbols": "1.0.2", - "log-update": "1.0.2", - "ora": "0.2.3", - "p-map": "1.2.0", - "rxjs": "5.5.10", - "stream-to-observable": "0.2.0", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", - "dev": true - }, - "listr-update-renderer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", - "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "cli-truncate": "0.2.1", - "elegant-spinner": "1.0.1", - "figures": "1.7.0", - "indent-string": "3.2.0", - "log-symbols": "1.0.2", - "log-update": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "listr-verbose-renderer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", - "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "date-fns": "1.29.0", - "figures": "1.7.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "1.0.1" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", - "dev": true - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "2.4.1" - } - }, - "log-update": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", - "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", - "dev": true, - "requires": { - "ansi-escapes": "1.4.0", - "cli-cursor": "1.0.2" - }, - "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - } - } - }, - "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", - "dev": true - }, - "loglevelnext": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", - "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", - "dev": true, - "requires": { - "es6-symbol": "3.1.1", - "object.assign": "4.1.0" - } - }, - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, - "requires": { - "js-tokens": "3.0.2" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "macaddress": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", - "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", - "dev": true - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "3.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "1.0.1" - } - }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", - "dev": true - }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true - }, - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", - "dev": true, - "requires": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "1.1.6" - } - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "1.2.0" - } - }, - "mem-fs": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-1.1.3.tgz", - "integrity": "sha1-uK6NLj/Lb10/kWXBLUVRoGXZicw=", - "dev": true, - "requires": { - "through2": "2.0.3", - "vinyl": "1.2.0", - "vinyl-file": "2.0.0" - } - }, - "mem-fs-editor": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-4.0.2.tgz", - "integrity": "sha512-QHvdXLLNmwJXxKdf7x27aNUren6IoPxwcM8Sfd+S6/ddQQMcYdEtVKsh6ilpqMrU18VQuKZEaH0aCGt3JDbA0g==", - "dev": true, - "requires": { - "commondir": "1.0.1", - "deep-extend": "0.5.1", - "ejs": "2.6.1", - "glob": "7.1.2", - "globby": "8.0.1", - "isbinaryfile": "3.0.2", - "mkdirp": "0.5.1", - "multimatch": "2.1.0", - "rimraf": "2.6.2", - "through2": "2.0.3", - "vinyl": "2.1.0" - }, - "dependencies": { - "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "vinyl": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", - "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", - "dev": true, - "requires": { - "clone": "2.1.1", - "clone-buffer": "1.0.0", - "clone-stats": "1.0.0", - "cloneable-readable": "1.1.2", - "remove-trailing-separator": "1.1.0", - "replace-ext": "1.0.0" - } - } - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "0.1.7", - "readable-stream": "2.3.6" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "merge2": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", - "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true - }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, - "requires": { - "mime-db": "1.33.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "mimic-response": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", - "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.0.tgz", - "integrity": "sha512-2Zik6PhUZ/MbiboG6SDS9UTPL4XXy4qnyGjSdCIWRrr8xb6PwLtHE+AYOjkXJWdF0OG8vo/yrJ8CgS5WbMpzIg==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "webpack-sources": "1.1.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", - "dev": true, - "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.6.0", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.5.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - } - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "1.2.0", - "copy-concurrently": "1.0.5", - "fs-write-stream-atomic": "1.0.10", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "1.3.1", - "thunky": "1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "dev": true, - "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" - } - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - }, - "neo-async": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", - "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "nice-try": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", - "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "1.1.4" - } - }, - "node-dir": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.8.tgz", - "integrity": "sha1-VfuN62mQcHB/tn+RpGDwRIKUx30=", - "dev": true - }, - "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", - "dev": true - }, - "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", - "dev": true, - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.2.0", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "domain-browser": "1.2.0", - "events": "1.1.1", - "https-browserify": "1.0.0", - "os-browserify": "0.3.0", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.6", - "stream-browserify": "2.0.1", - "stream-http": "2.8.2", - "string_decoder": "1.1.1", - "timers-browserify": "2.0.10", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "nomnom": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", - "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", - "dev": true, - "requires": { - "chalk": "0.4.0", - "underscore": "1.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, - "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" - } - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "requires": { - "prepend-http": "2.0.0", - "query-string": "5.1.1", - "sort-keys": "2.0.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "2.0.1" - } - }, - "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", - "dev": true, - "requires": { - "boolbase": "1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "3.0.1" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "has-symbols": "1.0.0", - "object-keys": "1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.11.0" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "3.0.1" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "1.2.0" - } - }, - "opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "requires": { - "is-wsl": "1.1.0" - } - }, - "optimize-css-assets-webpack-plugin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-4.0.1.tgz", - "integrity": "sha512-2pIcqmQDEBvVKt5Bt+Nj8wMNvotfaklYRTd/zRJakZradPS0/xhj1hM1mdydyA4utygTmjPZCuOa+Dl5TjtxWw==", - "dev": true, - "requires": { - "cssnano": "3.10.0", - "last-call-webpack-plugin": "3.0.0" - } - }, - "ora": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", - "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-spinners": "0.1.2", - "object-assign": "4.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "original": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.1.tgz", - "integrity": "sha512-IEvtB5vM5ULvwnqMxWBLxkS13JIEXbakizMSo3yoPNPCIWzg8TG3Usn/UhXoZFM/m+FuEA20KdzPSFq/0rS+UA==", - "dev": true, - "requires": { - "url-parse": "1.4.0" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", - "dev": true - }, - "p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", - "dev": true, - "requires": { - "p-reduce": "1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", - "dev": true - }, - "p-lazy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-lazy/-/p-lazy-1.0.0.tgz", - "integrity": "sha1-7FPIAvLuOsKPFmzILQsrAt4nqDU=", - "dev": true - }, - "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", - "dev": true, - "requires": { - "p-try": "1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "1.2.0" - } - }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true - }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true - }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, - "requires": { - "p-finally": "1.0.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", - "dev": true - }, - "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", - "dev": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "2.3.2" - } - }, - "parse-asn1": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", - "dev": true, - "requires": { - "asn1.js": "4.10.1", - "browserify-aes": "1.2.0", - "create-hash": "1.2.0", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.16" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - } - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "3.0.0" - } - }, - "pbkdf2": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", - "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", - "dev": true, - "requires": { - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "ripemd160": "2.0.2", - "safe-buffer": "5.1.2", - "sha.js": "2.4.11" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true, - "optional": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "2.1.0" - } - }, - "portfinder": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", - "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", - "dev": true, - "requires": { - "async": "1.5.2", - "debug": "2.6.9", - "mkdirp": "0.5.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-message-helpers": "2.0.0", - "reduce-css-calc": "1.3.0" - } - }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true, - "requires": { - "colormin": "1.1.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "uniqs": "2.0.0" - } - }, - "postcss-filter-plugins": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", - "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "uniqid": "4.1.1" - } - }, - "postcss-load-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", - "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1", - "postcss-load-options": "1.2.0", - "postcss-load-plugins": "2.3.0" - } - }, - "postcss-load-options": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", - "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1" - } - }, - "postcss-load-plugins": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", - "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1" - } - }, - "postcss-loader": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.5.tgz", - "integrity": "sha512-pV7kB5neJ0/1tZ8L1uGOBNTVBCSCXQoIsZMsrwvO8V2rKGa2tBl/f80GGVxow2jJnRJ2w1ocx693EKhZAb9Isg==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "postcss": "6.0.22", - "postcss-load-config": "1.2.0", - "schema-utils": "0.4.5" - }, - "dependencies": { - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "source-map": "0.6.1", - "supports-color": "5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-api": "1.6.1", - "postcss": "5.2.18", - "postcss-selector-parser": "2.2.3", - "vendors": "1.0.2" - } - }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", - "dev": true - }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0", - "uniqs": "2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-selector-parser": "2.2.3" - } - }, - "postcss-modules-extract-imports": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", - "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", - "dev": true, - "requires": { - "postcss": "6.0.22" - }, - "dependencies": { - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "source-map": "0.6.1", - "supports-color": "5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "requires": { - "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.22" - }, - "dependencies": { - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "source-map": "0.6.1", - "supports-color": "5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "requires": { - "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.22" - }, - "dependencies": { - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "source-map": "0.6.1", - "supports-color": "5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.22" - }, - "dependencies": { - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "source-map": "0.6.1", - "supports-color": "5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dev": true, - "requires": { - "is-absolute-url": "2.1.0", - "normalize-url": "1.9.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - }, - "dependencies": { - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "prepend-http": "1.0.4", - "query-string": "4.3.4", - "sort-keys": "1.1.2" - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "1.1.0" - } - } - } - }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, - "requires": { - "flatten": "1.0.2", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - } - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true, - "requires": { - "is-svg": "2.1.0", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0", - "svgo": "0.7.2" - } - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.18", - "uniqs": "2.0.0" - } - }, - "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", - "dev": true - }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "uniqs": "2.0.0" - } - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "prettier": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz", - "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=", - "dev": true - }, - "pretty-bytes": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", - "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", - "dev": true - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true, - "requires": { - "renderkid": "2.0.1", - "utila": "0.4.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "optional": true, - "requires": { - "asap": "2.0.6" - } - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "proxy-addr": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", - "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", - "dev": true, - "requires": { - "forwarded": "0.1.2", - "ipaddr.js": "1.6.0" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "public-encrypt": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", - "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.2.0", - "parse-asn1": "5.1.1", - "randombytes": "2.0.6" - } - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.0.tgz", - "integrity": "sha512-UWi0klDoq8xtVzlMRgENV9F7iCTZExaJQSQL187UXsxpk9NnrKGqTqqUNYAKGOzucSOxs2+jUnRNI+rLviPhJg==", - "dev": true, - "requires": { - "duplexify": "3.6.0", - "inherits": "2.0.3", - "pump": "2.0.1" - } - }, - "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", - "dev": true - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, - "optional": true - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "requires": { - "decode-uri-component": "0.2.0", - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", - "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", - "dev": true - }, - "randomatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", - "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", - "dev": true, - "requires": { - "is-number": "4.0.0", - "kind-of": "6.0.2", - "math-random": "1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "2.0.6", - "safe-buffer": "5.1.2" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "dev": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.4.0" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - } - } - }, - "read-chunk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz", - "integrity": "sha1-agTAkoAF7Z1C4aasVgDhnLx/9lU=", - "dev": true, - "requires": { - "pify": "3.0.0", - "safe-buffer": "5.1.2" - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "4.0.0", - "normalize-package-data": "2.4.0", - "path-type": "3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "3.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.6", - "set-immediate-shim": "1.0.1" - } - }, - "recast": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.14.7.tgz", - "integrity": "sha512-/nwm9pkrcWagN40JeJhkPaRxiHXBRkXyRh/hgU088Z/v+qCy+zIHHY6bC6o7NaKAxPqtE6nD8zBH1LfU0/Wx6A==", - "dev": true, - "requires": { - "ast-types": "0.11.3", - "esprima": "4.0.0", - "private": "0.1.8", - "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "1.7.1" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" - } - }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "math-expression-evaluator": "1.2.17", - "reduce-function-call": "1.0.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "dev": true, - "requires": { - "balanced-match": "0.4.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "private": "0.1.8" - } - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true, - "requires": { - "regenerate": "1.4.0", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "0.5.0" - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "renderkid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", - "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", - "dev": true, - "requires": { - "css-select": "1.2.0", - "dom-converter": "0.1.4", - "htmlparser2": "3.3.0", - "strip-ansi": "3.0.1", - "utila": "0.3.3" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "1.0.2" - } - }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, - "request": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.86.0.tgz", - "integrity": "sha512-BQZih67o9r+Ys94tcIW4S7Uu8pthjrQVxhsZ/weOwHbDfACxvIyvnAbzFQxjy1jMtvFSzv5zf4my6cZsJBbVzw==", - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", - "dev": true, - "requires": { - "path-parse": "1.0.5" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "3.0.0" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "2.0.2", - "global-modules": "1.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "1.0.1" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - } - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "2.1.0" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "1.2.0" - } - }, - "rxjs": { - "version": "5.5.10", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz", - "integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==", - "dev": true, - "requires": { - "symbol-observable": "1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "0.1.15" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", - "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", - "dev": true, - "requires": { - "ajv": "6.5.0", - "ajv-keywords": "3.2.0" - } - }, - "scoped-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-1.0.0.tgz", - "integrity": "sha1-o0a7Gs1CB65wvXwMfKnlZra63bg=", - "dev": true - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selfsigned": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz", - "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==", - "dev": true, - "requires": { - "node-forge": "0.7.5" - } - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.2", - "http-errors": "1.6.3", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.4.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", - "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", - "dev": true - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "1.3.5", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "1.0.3", - "http-errors": "1.6.3", - "mime-types": "2.1.18", - "parseurl": "1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", - "send": "0.16.2" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shelljs": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.2.tgz", - "integrity": "sha512-pRXeNrCA2Wd9itwhvLp5LZQvPJ0wU6bcjaTMywHHGX5XWhVN2nzSu7WV0q+oUY7mGK3mgSkDDzP3MgjqdyIgbQ==", - "dev": true, - "requires": { - "glob": "7.1.2", - "interpret": "1.1.0", - "rechoir": "0.6.2" - } - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.2", - "use": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "dev": true, - "optional": true, - "requires": { - "hoek": "4.2.1" - } - }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "dev": true, - "requires": { - "faye-websocket": "0.10.0", - "uuid": "3.2.1" - } - }, - "sockjs-client": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", - "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "eventsource": "0.1.6", - "faye-websocket": "0.11.1", - "inherits": "2.0.3", - "json3": "3.3.2", - "url-parse": "1.4.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, - "requires": { - "websocket-driver": "0.7.0" - } - } - } - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "dev": true, - "requires": { - "is-plain-obj": "1.1.0" - } - }, - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "2.1.1", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" - } - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", - "dev": true, - "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", - "dev": true - }, - "spdy": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", - "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", - "dev": true, - "requires": { - "debug": "2.6.9", - "handle-thing": "1.2.5", - "http-deceiver": "1.2.7", - "safe-buffer": "5.1.2", - "select-hose": "2.0.0", - "spdy-transport": "2.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "spdy-transport": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", - "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", - "dev": true, - "requires": { - "debug": "2.6.9", - "detect-node": "2.0.3", - "hpack.js": "2.1.6", - "obuf": "1.1.2", - "readable-stream": "2.3.6", - "safe-buffer": "5.1.2", - "wbuf": "1.7.3" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "3.0.2" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", - "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - } - }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "stream-each": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", - "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", - "dev": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - } - }, - "stream-http": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", - "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", - "dev": true, - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, - "stream-to-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz", - "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=", - "dev": true, - "requires": { - "any-observable": "0.2.0" - } - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, - "string-template": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-bom-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", - "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", - "dev": true, - "requires": { - "first-chunk-stream": "2.0.0", - "strip-bom": "2.0.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "4.0.1" - } - }, - "style-loader": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz", - "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "schema-utils": "0.4.5" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "3.0.0" - } - }, - "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true, - "requires": { - "coa": "1.0.4", - "colors": "1.1.2", - "csso": "2.3.2", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "sax": "1.2.4", - "whet.extend": "0.9.9" - }, - "dependencies": { - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - } - } - }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true - }, - "tapable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", - "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", - "dev": true - }, - "temp": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2", - "rimraf": "2.2.8" - }, - "dependencies": { - "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", - "dev": true - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "textextensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.2.0.tgz", - "integrity": "sha512-j5EMxnryTvKxwH2Cq+Pb43tsf6sdEgw6Pdwxk83mPaq0ToeFJt6WE4J3s5BqY7vmjlLgkgXvhtXUxo80FyBhCA==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - } - }, - "thunky": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", - "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", - "dev": true - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "requires": { - "setimmediate": "1.0.5" - } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" - } - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", - "dev": true - }, - "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", - "dev": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true, - "optional": true - } - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "ts-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-4.3.0.tgz", - "integrity": "sha512-+zduqQJaeouVrGY3y6+nUG7+OE1+Q7slGCHsiQM/aITCEZ0og3GxrJVsnjM5QcWvOcu9C4VR5dP+egIyT+sNNg==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "enhanced-resolve": "4.0.0", - "loader-utils": "1.1.0", - "micromatch": "3.1.10", - "semver": "5.5.0" - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.18" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, - "requires": { - "commander": "2.13.0", - "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "uglifyjs-webpack-plugin": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz", - "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==", - "dev": true, - "requires": { - "cacache": "10.0.4", - "find-cache-dir": "1.0.0", - "schema-utils": "0.4.5", - "serialize-javascript": "1.5.0", - "source-map": "0.6.1", - "uglify-es": "3.3.9", - "webpack-sources": "1.1.0", - "worker-farm": "1.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - } - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqid": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", - "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", - "dev": true, - "requires": { - "macaddress": "0.2.8" - } - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unique-filename": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", - "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", - "dev": true, - "requires": { - "unique-slug": "2.0.0" - } - }, - "unique-slug": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", - "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", - "dev": true, - "requires": { - "imurmurhash": "0.1.4" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "untildify": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.2.tgz", - "integrity": "sha1-fx8wIFWz/qDz6B3HjrNnZstl4/E=", - "dev": true - }, - "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "uri-js": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz", - "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==", - "dev": true, - "requires": { - "punycode": "2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-join": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", - "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", - "dev": true - }, - "url-parse": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", - "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", - "dev": true, - "requires": { - "querystringify": "2.0.0", - "requires-port": "1.0.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "2.0.0" - } - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", - "dev": true - }, - "use": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "object.getownpropertydescriptors": "2.0.3" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "dev": true - }, - "v8-compile-cache": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz", - "integrity": "sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", - "dev": true, - "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vendors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - } - }, - "vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", - "dev": true, - "requires": { - "clone": "1.0.4", - "clone-stats": "0.0.1", - "replace-ext": "0.0.1" - } - }, - "vinyl-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", - "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0", - "strip-bom-stream": "2.0.0", - "vinyl": "1.2.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "dev": true, - "requires": { - "chokidar": "2.0.3", - "graceful-fs": "4.1.11", - "neo-async": "2.5.1" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "1.0.1" - } - }, - "webassemblyjs": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webassemblyjs/-/webassemblyjs-1.4.3.tgz", - "integrity": "sha512-4lOV1Lv6olz0PJkDGQEp82HempAn147e6BXijWDzz9g7/2nSebVP9GVg62Fz5ZAs55mxq13GA0XLyvY8XkyDjg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.4.3", - "@webassemblyjs/validation": "1.4.3", - "@webassemblyjs/wasm-parser": "1.4.3", - "@webassemblyjs/wast-parser": "1.4.3", - "long": "3.2.0" - } - }, - "webpack": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.8.3.tgz", - "integrity": "sha512-/hfAjBISycdK597lxONjKEFX7dSIU1PsYwC3XlXUXoykWBlv9QV5HnO+ql3HvrrgfBJ7WXdnjO9iGPR2aAc5sw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.4.3", - "@webassemblyjs/wasm-edit": "1.4.3", - "@webassemblyjs/wasm-parser": "1.4.3", - "acorn": "5.5.3", - "acorn-dynamic-import": "3.0.0", - "ajv": "6.5.0", - "ajv-keywords": "3.2.0", - "chrome-trace-event": "0.1.3", - "enhanced-resolve": "4.0.0", - "eslint-scope": "3.7.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "micromatch": "3.1.10", - "mkdirp": "0.5.1", - "neo-async": "2.5.1", - "node-libs-browser": "2.1.0", - "schema-utils": "0.4.5", - "tapable": "1.0.0", - "uglifyjs-webpack-plugin": "1.2.5", - "watchpack": "1.6.0", - "webpack-sources": "1.1.0" - } - }, - "webpack-addons": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/webpack-addons/-/webpack-addons-1.1.5.tgz", - "integrity": "sha512-MGO0nVniCLFAQz1qv22zM02QPjcpAoJdy7ED0i3Zy7SY1IecgXCm460ib7H/Wq7e9oL5VL6S2BxaObxwIcag0g==", - "dev": true, - "requires": { - "jscodeshift": "0.4.1" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "ast-types": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", - "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==", - "dev": true - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "jscodeshift": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.4.1.tgz", - "integrity": "sha512-iOX6If+hsw0q99V3n31t4f5VlD1TQZddH08xbT65ZqA7T4Vkx68emrDZMUOLVvCEAJ6NpAk7DECe3fjC/t52AQ==", - "dev": true, - "requires": { - "async": "1.5.2", - "babel-plugin-transform-flow-strip-types": "6.22.0", - "babel-preset-es2015": "6.24.1", - "babel-preset-stage-1": "6.24.1", - "babel-register": "6.26.0", - "babylon": "6.18.0", - "colors": "1.2.5", - "flow-parser": "0.72.0", - "lodash": "4.17.10", - "micromatch": "2.3.11", - "node-dir": "0.1.8", - "nomnom": "1.8.1", - "recast": "0.12.9", - "temp": "0.8.3", - "write-file-atomic": "1.3.4" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - }, - "recast": { - "version": "0.12.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.9.tgz", - "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==", - "dev": true, - "requires": { - "ast-types": "0.10.1", - "core-js": "2.5.6", - "esprima": "4.0.0", - "private": "0.1.8", - "source-map": "0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "webpack-cli": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.1.3.tgz", - "integrity": "sha512-5AsKoL/Ccn8iTrwk3uErdyhetGH+c7VRQ7Itim2GL0IhBRq5rtojVDk00buMRmFmBpw1RvHXq97Gup965LbozA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "cross-spawn": "6.0.5", - "diff": "3.5.0", - "enhanced-resolve": "4.0.0", - "envinfo": "4.4.2", - "glob-all": "3.1.0", - "global-modules": "1.0.0", - "got": "8.3.1", - "import-local": "1.0.0", - "inquirer": "5.2.0", - "interpret": "1.1.0", - "jscodeshift": "0.5.0", - "listr": "0.13.0", - "loader-utils": "1.1.0", - "lodash": "4.17.10", - "log-symbols": "2.2.0", - "mkdirp": "0.5.1", - "p-each-series": "1.0.0", - "p-lazy": "1.0.0", - "prettier": "1.12.1", - "supports-color": "5.4.0", - "v8-compile-cache": "1.1.2", - "webpack-addons": "1.1.5", - "yargs": "11.1.0", - "yeoman-environment": "2.1.1", - "yeoman-generator": "2.0.5" - } - }, - "webpack-dev-middleware": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz", - "integrity": "sha512-I6Mmy/QjWU/kXwCSFGaiOoL5YEQIVmbb0o45xMoCyQAg/mClqZVTcsX327sPfekDyJWpCxb+04whNyLOIxpJdQ==", - "dev": true, - "requires": { - "loud-rejection": "1.6.0", - "memory-fs": "0.4.1", - "mime": "2.3.1", - "path-is-absolute": "1.0.1", - "range-parser": "1.2.0", - "url-join": "4.0.0", - "webpack-log": "1.2.0" - }, - "dependencies": { - "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", - "dev": true - } - } - }, - "webpack-dev-server": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz", - "integrity": "sha512-itcIUDFkHuj1/QQxzUFOEXXmxOj5bku2ScLEsOFPapnq2JRTm58gPdtnBphBJOKL2+M3p6+xygL64bI+3eyzzw==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "array-includes": "3.0.3", - "bonjour": "3.5.0", - "chokidar": "2.0.3", - "compression": "1.7.2", - "connect-history-api-fallback": "1.5.0", - "debug": "3.1.0", - "del": "3.0.0", - "express": "4.16.3", - "html-entities": "1.2.1", - "http-proxy-middleware": "0.18.0", - "import-local": "1.0.0", - "internal-ip": "1.2.0", - "ip": "1.1.5", - "killable": "1.0.0", - "loglevel": "1.6.1", - "opn": "5.3.0", - "portfinder": "1.0.13", - "selfsigned": "1.10.3", - "serve-index": "1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.1.4", - "spdy": "3.4.7", - "strip-ansi": "3.0.1", - "supports-color": "5.4.0", - "webpack-dev-middleware": "3.1.3", - "webpack-log": "1.2.0", - "yargs": "11.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", - "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", - "dev": true, - "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" - } - } - } - }, - "webpack-log": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", - "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "log-symbols": "2.2.0", - "loglevelnext": "1.0.5", - "uuid": "3.2.1" - } - }, - "webpack-md5-hash": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/webpack-md5-hash/-/webpack-md5-hash-0.0.6.tgz", - "integrity": "sha512-HrQ0AJpeXHRa3IjsgyyEfTx8EqYs5y/4x/WklSYsNDcqBixHzCkrmJV5U+4ks+sx7ycKoIdqWLdyuk913FCS+Q==", - "dev": true, - "requires": { - "md5": "2.2.1" - } - }, - "webpack-sources": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", - "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", - "dev": true, - "requires": { - "source-list-map": "2.0.0", - "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", - "dev": true, - "requires": { - "http-parser-js": "0.4.12", - "websocket-extensions": "0.1.3" - } - }, - "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", - "dev": true - }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", - "dev": true - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", - "dev": true, - "requires": { - "errno": "0.1.7" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", - "dev": true, - "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" - }, - "dependencies": { - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - } - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "4.1.0" - } - }, - "yeoman-environment": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.1.1.tgz", - "integrity": "sha512-IBLwCUrJrDxBYuwdYm1wuF3O/CR2LpXR0rFS684QOrU6x69DPPrsdd20dZOFaedZ/M9sON7po73WhO3I1CbgNQ==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "cross-spawn": "6.0.5", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "globby": "8.0.1", - "grouped-queue": "0.3.3", - "inquirer": "5.2.0", - "is-scoped": "1.0.0", - "lodash": "4.17.10", - "log-symbols": "2.2.0", - "mem-fs": "1.1.3", - "strip-ansi": "4.0.0", - "text-table": "0.2.0", - "untildify": "3.0.2" - } - }, - "yeoman-generator": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-2.0.5.tgz", - "integrity": "sha512-rV6tJ8oYzm4mmdF2T3wjY+Q42jKF2YiiD0VKfJ8/0ZYwmhCKC9Xs2346HVLPj/xE13i68psnFJv7iS6gWRkeAg==", - "dev": true, - "requires": { - "async": "2.6.0", - "chalk": "2.4.1", - "cli-table": "0.3.1", - "cross-spawn": "6.0.5", - "dargs": "5.1.0", - "dateformat": "3.0.3", - "debug": "3.1.0", - "detect-conflict": "1.0.1", - "error": "7.0.2", - "find-up": "2.1.0", - "github-username": "4.1.0", - "istextorbinary": "2.2.1", - "lodash": "4.17.10", - "make-dir": "1.3.0", - "mem-fs-editor": "4.0.2", - "minimist": "1.2.0", - "pretty-bytes": "4.0.2", - "read-chunk": "2.1.0", - "read-pkg-up": "3.0.0", - "rimraf": "2.6.2", - "run-async": "2.3.0", - "shelljs": "0.8.2", - "text-table": "0.2.0", - "through2": "2.0.3", - "yeoman-environment": "2.1.1" - }, - "dependencies": { - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dev": true, - "requires": { - "lodash": "4.17.10" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - } - } -} diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/package.json b/Andrey_portfolio-master/Andrey_portfolio-master/package.json deleted file mode 100644 index 8cde7b9..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "webpack_lesson_1", - "version": "1.0.0", - "description": "", - "main": "webpack.config.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "Andrey_programmer", - "license": "ISC", - "devDependencies": { - "autoprefixer": "^8.5.0", - "babel-core": "^6.26.3", - "babel-loader": "^7.1.4", - "babel-preset-env": "^1.7.0", - "babel-preset-stage-3": "^6.24.1", - "clean-webpack-plugin": "^0.1.19", - "css-loader": "^0.28.11", - "extract-text-webpack-plugin": "^3.0.2", - "file-loader": "^1.1.11", - "html-webpack-plugin": "^3.2.0", - "less": "^3.0.4", - "less-loader": "^4.1.0", - "mini-css-extract-plugin": "^0.4.0", - "optimize-css-assets-webpack-plugin": "^4.0.1", - "postcss-loader": "^2.1.5", - "style-loader": "^0.21.0", - "ts-loader": "^4.3.0", - "webpack": "^4.8.3", - "webpack-cli": "^2.1.3", - "webpack-dev-server": "^3.1.4", - "webpack-md5-hash": "0.0.6" - }, - "dependencies": { - "jquery": "^3.3.1" - } -} diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/postcss.config.js b/Andrey_portfolio-master/Andrey_portfolio-master/postcss.config.js deleted file mode 100644 index b90a2cf..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/postcss.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - plugins: [ - require('autoprefixer') - ] -} \ No newline at end of file diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/css/animate.css b/Andrey_portfolio-master/Andrey_portfolio-master/src/css/animate.css deleted file mode 100644 index 98f29c2..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/css/animate.css +++ /dev/null @@ -1,3494 +0,0 @@ -@charset "UTF-8"; - -/*! - * animate.css -http://daneden.me/animate - * Version - 3.6.0 - * Licensed under the MIT license - http://opensource.org/licenses/MIT - * - * Copyright (c) 2018 Daniel Eden - */ - -.animated { - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -.animated.infinite { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -@-webkit-keyframes bounce { - from, - 20%, - 53%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 40%, - 43% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -30px, 0); - transform: translate3d(0, -30px, 0); - } - - 70% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -15px, 0); - transform: translate3d(0, -15px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -4px, 0); - transform: translate3d(0, -4px, 0); - } -} - -@keyframes bounce { - from, - 20%, - 53%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 40%, - 43% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -30px, 0); - transform: translate3d(0, -30px, 0); - } - - 70% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -15px, 0); - transform: translate3d(0, -15px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -4px, 0); - transform: translate3d(0, -4px, 0); - } -} - -.bounce { - -webkit-animation-name: bounce; - animation-name: bounce; - -webkit-transform-origin: center bottom; - transform-origin: center bottom; -} - -@-webkit-keyframes flash { - from, - 50%, - to { - opacity: 1; - } - - 25%, - 75% { - opacity: 0; - } -} - -@keyframes flash { - from, - 50%, - to { - opacity: 1; - } - - 25%, - 75% { - opacity: 0; - } -} - -.flash { - -webkit-animation-name: flash; - animation-name: flash; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes pulse { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 50% { - -webkit-transform: scale3d(1.05, 1.05, 1.05); - transform: scale3d(1.05, 1.05, 1.05); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes pulse { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 50% { - -webkit-transform: scale3d(1.05, 1.05, 1.05); - transform: scale3d(1.05, 1.05, 1.05); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.pulse { - -webkit-animation-name: pulse; - animation-name: pulse; -} - -@-webkit-keyframes rubberBand { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 30% { - -webkit-transform: scale3d(1.25, 0.75, 1); - transform: scale3d(1.25, 0.75, 1); - } - - 40% { - -webkit-transform: scale3d(0.75, 1.25, 1); - transform: scale3d(0.75, 1.25, 1); - } - - 50% { - -webkit-transform: scale3d(1.15, 0.85, 1); - transform: scale3d(1.15, 0.85, 1); - } - - 65% { - -webkit-transform: scale3d(0.95, 1.05, 1); - transform: scale3d(0.95, 1.05, 1); - } - - 75% { - -webkit-transform: scale3d(1.05, 0.95, 1); - transform: scale3d(1.05, 0.95, 1); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes rubberBand { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 30% { - -webkit-transform: scale3d(1.25, 0.75, 1); - transform: scale3d(1.25, 0.75, 1); - } - - 40% { - -webkit-transform: scale3d(0.75, 1.25, 1); - transform: scale3d(0.75, 1.25, 1); - } - - 50% { - -webkit-transform: scale3d(1.15, 0.85, 1); - transform: scale3d(1.15, 0.85, 1); - } - - 65% { - -webkit-transform: scale3d(0.95, 1.05, 1); - transform: scale3d(0.95, 1.05, 1); - } - - 75% { - -webkit-transform: scale3d(1.05, 0.95, 1); - transform: scale3d(1.05, 0.95, 1); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.rubberBand { - -webkit-animation-name: rubberBand; - animation-name: rubberBand; -} - -@-webkit-keyframes shake { - from, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, - 30%, - 50%, - 70%, - 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, - 40%, - 60%, - 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -@keyframes shake { - from, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, - 30%, - 50%, - 70%, - 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, - 40%, - 60%, - 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -.shake { - -webkit-animation-name: shake; - animation-name: shake; -} - -@-webkit-keyframes headShake { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 6.5% { - -webkit-transform: translateX(-6px) rotateY(-9deg); - transform: translateX(-6px) rotateY(-9deg); - } - - 18.5% { - -webkit-transform: translateX(5px) rotateY(7deg); - transform: translateX(5px) rotateY(7deg); - } - - 31.5% { - -webkit-transform: translateX(-3px) rotateY(-5deg); - transform: translateX(-3px) rotateY(-5deg); - } - - 43.5% { - -webkit-transform: translateX(2px) rotateY(3deg); - transform: translateX(2px) rotateY(3deg); - } - - 50% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes headShake { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 6.5% { - -webkit-transform: translateX(-6px) rotateY(-9deg); - transform: translateX(-6px) rotateY(-9deg); - } - - 18.5% { - -webkit-transform: translateX(5px) rotateY(7deg); - transform: translateX(5px) rotateY(7deg); - } - - 31.5% { - -webkit-transform: translateX(-3px) rotateY(-5deg); - transform: translateX(-3px) rotateY(-5deg); - } - - 43.5% { - -webkit-transform: translateX(2px) rotateY(3deg); - transform: translateX(2px) rotateY(3deg); - } - - 50% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -.headShake { - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-name: headShake; - animation-name: headShake; -} - -@-webkit-keyframes swing { - 20% { - -webkit-transform: rotate3d(0, 0, 1, 15deg); - transform: rotate3d(0, 0, 1, 15deg); - } - - 40% { - -webkit-transform: rotate3d(0, 0, 1, -10deg); - transform: rotate3d(0, 0, 1, -10deg); - } - - 60% { - -webkit-transform: rotate3d(0, 0, 1, 5deg); - transform: rotate3d(0, 0, 1, 5deg); - } - - 80% { - -webkit-transform: rotate3d(0, 0, 1, -5deg); - transform: rotate3d(0, 0, 1, -5deg); - } - - to { - -webkit-transform: rotate3d(0, 0, 1, 0deg); - transform: rotate3d(0, 0, 1, 0deg); - } -} - -@keyframes swing { - 20% { - -webkit-transform: rotate3d(0, 0, 1, 15deg); - transform: rotate3d(0, 0, 1, 15deg); - } - - 40% { - -webkit-transform: rotate3d(0, 0, 1, -10deg); - transform: rotate3d(0, 0, 1, -10deg); - } - - 60% { - -webkit-transform: rotate3d(0, 0, 1, 5deg); - transform: rotate3d(0, 0, 1, 5deg); - } - - 80% { - -webkit-transform: rotate3d(0, 0, 1, -5deg); - transform: rotate3d(0, 0, 1, -5deg); - } - - to { - -webkit-transform: rotate3d(0, 0, 1, 0deg); - transform: rotate3d(0, 0, 1, 0deg); - } -} - -.swing { - -webkit-transform-origin: top center; - transform-origin: top center; - -webkit-animation-name: swing; - animation-name: swing; -} - -@-webkit-keyframes tada { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 10%, - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - } - - 30%, - 50%, - 70%, - 90% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - } - - 40%, - 60%, - 80% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes tada { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 10%, - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - } - - 30%, - 50%, - 70%, - 90% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - } - - 40%, - 60%, - 80% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.tada { - -webkit-animation-name: tada; - animation-name: tada; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes wobble { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 15% { - -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - } - - 30% { - -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - } - - 45% { - -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - } - - 60% { - -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - } - - 75% { - -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes wobble { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 15% { - -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - } - - 30% { - -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - } - - 45% { - -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - } - - 60% { - -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - } - - 75% { - -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.wobble { - -webkit-animation-name: wobble; - animation-name: wobble; -} - -@-webkit-keyframes jello { - from, - 11.1%, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 22.2% { - -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); - transform: skewX(-12.5deg) skewY(-12.5deg); - } - - 33.3% { - -webkit-transform: skewX(6.25deg) skewY(6.25deg); - transform: skewX(6.25deg) skewY(6.25deg); - } - - 44.4% { - -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); - transform: skewX(-3.125deg) skewY(-3.125deg); - } - - 55.5% { - -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); - transform: skewX(1.5625deg) skewY(1.5625deg); - } - - 66.6% { - -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); - transform: skewX(-0.78125deg) skewY(-0.78125deg); - } - - 77.7% { - -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); - transform: skewX(0.390625deg) skewY(0.390625deg); - } - - 88.8% { - -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - } -} - -@keyframes jello { - from, - 11.1%, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 22.2% { - -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); - transform: skewX(-12.5deg) skewY(-12.5deg); - } - - 33.3% { - -webkit-transform: skewX(6.25deg) skewY(6.25deg); - transform: skewX(6.25deg) skewY(6.25deg); - } - - 44.4% { - -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); - transform: skewX(-3.125deg) skewY(-3.125deg); - } - - 55.5% { - -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); - transform: skewX(1.5625deg) skewY(1.5625deg); - } - - 66.6% { - -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); - transform: skewX(-0.78125deg) skewY(-0.78125deg); - } - - 77.7% { - -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); - transform: skewX(0.390625deg) skewY(0.390625deg); - } - - 88.8% { - -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - } -} - -.jello { - -webkit-animation-name: jello; - animation-name: jello; - -webkit-transform-origin: center; - transform-origin: center; -} - -@-webkit-keyframes bounceIn { - from, - 20%, - 40%, - 60%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 20% { - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 40% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03); - } - - 80% { - -webkit-transform: scale3d(0.97, 0.97, 0.97); - transform: scale3d(0.97, 0.97, 0.97); - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes bounceIn { - from, - 20%, - 40%, - 60%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 20% { - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 40% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03); - } - - 80% { - -webkit-transform: scale3d(0.97, 0.97, 0.97); - transform: scale3d(0.97, 0.97, 0.97); - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.bounceIn { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-name: bounceIn; - animation-name: bounceIn; -} - -@-webkit-keyframes bounceInDown { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -3000px, 0); - transform: translate3d(0, -3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, 25px, 0); - transform: translate3d(0, 25px, 0); - } - - 75% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, 5px, 0); - transform: translate3d(0, 5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInDown { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -3000px, 0); - transform: translate3d(0, -3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, 25px, 0); - transform: translate3d(0, 25px, 0); - } - - 75% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, 5px, 0); - transform: translate3d(0, 5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInDown { - -webkit-animation-name: bounceInDown; - animation-name: bounceInDown; -} - -@-webkit-keyframes bounceInLeft { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(-3000px, 0, 0); - transform: translate3d(-3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(25px, 0, 0); - transform: translate3d(25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(5px, 0, 0); - transform: translate3d(5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInLeft { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(-3000px, 0, 0); - transform: translate3d(-3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(25px, 0, 0); - transform: translate3d(25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(5px, 0, 0); - transform: translate3d(5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInLeft { - -webkit-animation-name: bounceInLeft; - animation-name: bounceInLeft; -} - -@-webkit-keyframes bounceInRight { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(3000px, 0, 0); - transform: translate3d(3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(-25px, 0, 0); - transform: translate3d(-25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(-5px, 0, 0); - transform: translate3d(-5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInRight { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(3000px, 0, 0); - transform: translate3d(3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(-25px, 0, 0); - transform: translate3d(-25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(-5px, 0, 0); - transform: translate3d(-5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInRight { - -webkit-animation-name: bounceInRight; - animation-name: bounceInRight; -} - -@-webkit-keyframes bounceInUp { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(0, 3000px, 0); - transform: translate3d(0, 3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 75% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -5px, 0); - transform: translate3d(0, -5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInUp { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(0, 3000px, 0); - transform: translate3d(0, 3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 75% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -5px, 0); - transform: translate3d(0, -5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInUp { - -webkit-animation-name: bounceInUp; - animation-name: bounceInUp; -} - -@-webkit-keyframes bounceOut { - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 50%, - 55% { - opacity: 1; - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } -} - -@keyframes bounceOut { - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 50%, - 55% { - opacity: 1; - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } -} - -.bounceOut { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-name: bounceOut; - animation-name: bounceOut; -} - -@-webkit-keyframes bounceOutDown { - 20% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -@keyframes bounceOutDown { - 20% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -.bounceOutDown { - -webkit-animation-name: bounceOutDown; - animation-name: bounceOutDown; -} - -@-webkit-keyframes bounceOutLeft { - 20% { - opacity: 1; - -webkit-transform: translate3d(20px, 0, 0); - transform: translate3d(20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -@keyframes bounceOutLeft { - 20% { - opacity: 1; - -webkit-transform: translate3d(20px, 0, 0); - transform: translate3d(20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -.bounceOutLeft { - -webkit-animation-name: bounceOutLeft; - animation-name: bounceOutLeft; -} - -@-webkit-keyframes bounceOutRight { - 20% { - opacity: 1; - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -@keyframes bounceOutRight { - 20% { - opacity: 1; - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -.bounceOutRight { - -webkit-animation-name: bounceOutRight; - animation-name: bounceOutRight; -} - -@-webkit-keyframes bounceOutUp { - 20% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, 20px, 0); - transform: translate3d(0, 20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -@keyframes bounceOutUp { - 20% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, 20px, 0); - transform: translate3d(0, 20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -.bounceOutUp { - -webkit-animation-name: bounceOutUp; - animation-name: bounceOutUp; -} - -@-webkit-keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -@keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -.fadeIn { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} - -@-webkit-keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInDown { - -webkit-animation-name: fadeInDown; - animation-name: fadeInDown; -} - -@-webkit-keyframes fadeInDownBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInDownBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInDownBig { - -webkit-animation-name: fadeInDownBig; - animation-name: fadeInDownBig; -} - -@-webkit-keyframes fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInLeft { - -webkit-animation-name: fadeInLeft; - animation-name: fadeInLeft; -} - -@-webkit-keyframes fadeInLeftBig { - from { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInLeftBig { - from { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInLeftBig { - -webkit-animation-name: fadeInLeftBig; - animation-name: fadeInLeftBig; -} - -@-webkit-keyframes fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInRight { - -webkit-animation-name: fadeInRight; - animation-name: fadeInRight; -} - -@-webkit-keyframes fadeInRightBig { - from { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInRightBig { - from { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInRightBig { - -webkit-animation-name: fadeInRightBig; - animation-name: fadeInRightBig; -} - -@-webkit-keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInUp { - -webkit-animation-name: fadeInUp; - animation-name: fadeInUp; -} - -@-webkit-keyframes fadeInUpBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInUpBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInUpBig { - -webkit-animation-name: fadeInUpBig; - animation-name: fadeInUpBig; -} - -@-webkit-keyframes fadeOut { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - -@keyframes fadeOut { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - -.fadeOut { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} - -@-webkit-keyframes fadeOutDown { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes fadeOutDown { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -.fadeOutDown { - -webkit-animation-name: fadeOutDown; - animation-name: fadeOutDown; -} - -@-webkit-keyframes fadeOutDownBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -@keyframes fadeOutDownBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -.fadeOutDownBig { - -webkit-animation-name: fadeOutDownBig; - animation-name: fadeOutDownBig; -} - -@-webkit-keyframes fadeOutLeft { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes fadeOutLeft { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -.fadeOutLeft { - -webkit-animation-name: fadeOutLeft; - animation-name: fadeOutLeft; -} - -@-webkit-keyframes fadeOutLeftBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -@keyframes fadeOutLeftBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -.fadeOutLeftBig { - -webkit-animation-name: fadeOutLeftBig; - animation-name: fadeOutLeftBig; -} - -@-webkit-keyframes fadeOutRight { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -@keyframes fadeOutRight { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -.fadeOutRight { - -webkit-animation-name: fadeOutRight; - animation-name: fadeOutRight; -} - -@-webkit-keyframes fadeOutRightBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -@keyframes fadeOutRightBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -.fadeOutRightBig { - -webkit-animation-name: fadeOutRightBig; - animation-name: fadeOutRightBig; -} - -@-webkit-keyframes fadeOutUp { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes fadeOutUp { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.fadeOutUp { - -webkit-animation-name: fadeOutUp; - animation-name: fadeOutUp; -} - -@-webkit-keyframes fadeOutUpBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -@keyframes fadeOutUpBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -.fadeOutUpBig { - -webkit-animation-name: fadeOutUpBig; - animation-name: fadeOutUpBig; -} - -@-webkit-keyframes flip { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -@keyframes flip { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -.animated.flip { - -webkit-backface-visibility: visible; - backface-visibility: visible; - -webkit-animation-name: flip; - animation-name: flip; -} - -@-webkit-keyframes flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@keyframes flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -.flipInX { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInX; - animation-name: flipInX; -} - -@-webkit-keyframes flipInY { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@keyframes flipInY { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -.flipInY { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInY; - animation-name: flipInY; -} - -@-webkit-keyframes flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -@keyframes flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -.flipOutX { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-name: flipOutX; - animation-name: flipOutX; - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; -} - -@-webkit-keyframes flipOutY { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - opacity: 0; - } -} - -@keyframes flipOutY { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - opacity: 0; - } -} - -.flipOutY { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipOutY; - animation-name: flipOutY; -} - -@-webkit-keyframes lightSpeedIn { - from { - -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); - transform: translate3d(100%, 0, 0) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: skewX(20deg); - transform: skewX(20deg); - opacity: 1; - } - - 80% { - -webkit-transform: skewX(-5deg); - transform: skewX(-5deg); - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes lightSpeedIn { - from { - -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); - transform: translate3d(100%, 0, 0) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: skewX(20deg); - transform: skewX(20deg); - opacity: 1; - } - - 80% { - -webkit-transform: skewX(-5deg); - transform: skewX(-5deg); - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.lightSpeedIn { - -webkit-animation-name: lightSpeedIn; - animation-name: lightSpeedIn; - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; -} - -@-webkit-keyframes lightSpeedOut { - from { - opacity: 1; - } - - to { - -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); - transform: translate3d(100%, 0, 0) skewX(30deg); - opacity: 0; - } -} - -@keyframes lightSpeedOut { - from { - opacity: 1; - } - - to { - -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); - transform: translate3d(100%, 0, 0) skewX(30deg); - opacity: 0; - } -} - -.lightSpeedOut { - -webkit-animation-name: lightSpeedOut; - animation-name: lightSpeedOut; - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; -} - -@-webkit-keyframes rotateIn { - from { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, -200deg); - transform: rotate3d(0, 0, 1, -200deg); - opacity: 0; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateIn { - from { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, -200deg); - transform: rotate3d(0, 0, 1, -200deg); - opacity: 0; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateIn { - -webkit-animation-name: rotateIn; - animation-name: rotateIn; -} - -@-webkit-keyframes rotateInDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInDownLeft { - -webkit-animation-name: rotateInDownLeft; - animation-name: rotateInDownLeft; -} - -@-webkit-keyframes rotateInDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInDownRight { - -webkit-animation-name: rotateInDownRight; - animation-name: rotateInDownRight; -} - -@-webkit-keyframes rotateInUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInUpLeft { - -webkit-animation-name: rotateInUpLeft; - animation-name: rotateInUpLeft; -} - -@-webkit-keyframes rotateInUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -90deg); - transform: rotate3d(0, 0, 1, -90deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -90deg); - transform: rotate3d(0, 0, 1, -90deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInUpRight { - -webkit-animation-name: rotateInUpRight; - animation-name: rotateInUpRight; -} - -@-webkit-keyframes rotateOut { - from { - -webkit-transform-origin: center; - transform-origin: center; - opacity: 1; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, 200deg); - transform: rotate3d(0, 0, 1, 200deg); - opacity: 0; - } -} - -@keyframes rotateOut { - from { - -webkit-transform-origin: center; - transform-origin: center; - opacity: 1; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, 200deg); - transform: rotate3d(0, 0, 1, 200deg); - opacity: 0; - } -} - -.rotateOut { - -webkit-animation-name: rotateOut; - animation-name: rotateOut; -} - -@-webkit-keyframes rotateOutDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } -} - -@keyframes rotateOutDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } -} - -.rotateOutDownLeft { - -webkit-animation-name: rotateOutDownLeft; - animation-name: rotateOutDownLeft; -} - -@-webkit-keyframes rotateOutDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -@keyframes rotateOutDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -.rotateOutDownRight { - -webkit-animation-name: rotateOutDownRight; - animation-name: rotateOutDownRight; -} - -@-webkit-keyframes rotateOutUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -@keyframes rotateOutUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -.rotateOutUpLeft { - -webkit-animation-name: rotateOutUpLeft; - animation-name: rotateOutUpLeft; -} - -@-webkit-keyframes rotateOutUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 90deg); - transform: rotate3d(0, 0, 1, 90deg); - opacity: 0; - } -} - -@keyframes rotateOutUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 90deg); - transform: rotate3d(0, 0, 1, 90deg); - opacity: 0; - } -} - -.rotateOutUpRight { - -webkit-animation-name: rotateOutUpRight; - animation-name: rotateOutUpRight; -} - -@-webkit-keyframes hinge { - 0% { - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, - 60% { - -webkit-transform: rotate3d(0, 0, 1, 80deg); - transform: rotate3d(0, 0, 1, 80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40%, - 80% { - -webkit-transform: rotate3d(0, 0, 1, 60deg); - transform: rotate3d(0, 0, 1, 60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 700px, 0); - transform: translate3d(0, 700px, 0); - opacity: 0; - } -} - -@keyframes hinge { - 0% { - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, - 60% { - -webkit-transform: rotate3d(0, 0, 1, 80deg); - transform: rotate3d(0, 0, 1, 80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40%, - 80% { - -webkit-transform: rotate3d(0, 0, 1, 60deg); - transform: rotate3d(0, 0, 1, 60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 700px, 0); - transform: translate3d(0, 700px, 0); - opacity: 0; - } -} - -.hinge { - -webkit-animation-duration: 2s; - animation-duration: 2s; - -webkit-animation-name: hinge; - animation-name: hinge; -} - -@-webkit-keyframes jackInTheBox { - from { - opacity: 0; - -webkit-transform: scale(0.1) rotate(30deg); - transform: scale(0.1) rotate(30deg); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - } - - 50% { - -webkit-transform: rotate(-10deg); - transform: rotate(-10deg); - } - - 70% { - -webkit-transform: rotate(3deg); - transform: rotate(3deg); - } - - to { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes jackInTheBox { - from { - opacity: 0; - -webkit-transform: scale(0.1) rotate(30deg); - transform: scale(0.1) rotate(30deg); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - } - - 50% { - -webkit-transform: rotate(-10deg); - transform: rotate(-10deg); - } - - 70% { - -webkit-transform: rotate(3deg); - transform: rotate(3deg); - } - - to { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); - } -} - -.jackInTheBox { - -webkit-animation-name: jackInTheBox; - animation-name: jackInTheBox; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollIn { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes rollIn { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.rollIn { - -webkit-animation-name: rollIn; - animation-name: rollIn; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollOut { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - } -} - -@keyframes rollOut { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - } -} - -.rollOut { - -webkit-animation-name: rollOut; - animation-name: rollOut; -} - -@-webkit-keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 50% { - opacity: 1; - } -} - -@keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 50% { - opacity: 1; - } -} - -.zoomIn { - -webkit-animation-name: zoomIn; - animation-name: zoomIn; -} - -@-webkit-keyframes zoomInDown { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInDown { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInDown { - -webkit-animation-name: zoomInDown; - animation-name: zoomInDown; -} - -@-webkit-keyframes zoomInLeft { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInLeft { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInLeft { - -webkit-animation-name: zoomInLeft; - animation-name: zoomInLeft; -} - -@-webkit-keyframes zoomInRight { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInRight { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInRight { - -webkit-animation-name: zoomInRight; - animation-name: zoomInRight; -} - -@-webkit-keyframes zoomInUp { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInUp { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInUp { - -webkit-animation-name: zoomInUp; - animation-name: zoomInUp; -} - -@-webkit-keyframes zoomOut { - from { - opacity: 1; - } - - 50% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - to { - opacity: 0; - } -} - -@keyframes zoomOut { - from { - opacity: 1; - } - - 50% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - to { - opacity: 0; - } -} - -.zoomOut { - -webkit-animation-name: zoomOut; - animation-name: zoomOut; -} - -@-webkit-keyframes zoomOutDown { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomOutDown { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomOutDown { - -webkit-animation-name: zoomOutDown; - animation-name: zoomOutDown; -} - -@-webkit-keyframes zoomOutLeft { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); - transform: scale(0.1) translate3d(-2000px, 0, 0); - -webkit-transform-origin: left center; - transform-origin: left center; - } -} - -@keyframes zoomOutLeft { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); - transform: scale(0.1) translate3d(-2000px, 0, 0); - -webkit-transform-origin: left center; - transform-origin: left center; - } -} - -.zoomOutLeft { - -webkit-animation-name: zoomOutLeft; - animation-name: zoomOutLeft; -} - -@-webkit-keyframes zoomOutRight { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); - transform: scale(0.1) translate3d(2000px, 0, 0); - -webkit-transform-origin: right center; - transform-origin: right center; - } -} - -@keyframes zoomOutRight { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); - transform: scale(0.1) translate3d(2000px, 0, 0); - -webkit-transform-origin: right center; - transform-origin: right center; - } -} - -.zoomOutRight { - -webkit-animation-name: zoomOutRight; - animation-name: zoomOutRight; -} - -@-webkit-keyframes zoomOutUp { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomOutUp { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomOutUp { - -webkit-animation-name: zoomOutUp; - animation-name: zoomOutUp; -} - -@-webkit-keyframes slideInDown { - from { - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInDown { - from { - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInDown { - -webkit-animation-name: slideInDown; - animation-name: slideInDown; -} - -@-webkit-keyframes slideInLeft { - from { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInLeft { - from { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInLeft { - -webkit-animation-name: slideInLeft; - animation-name: slideInLeft; -} - -@-webkit-keyframes slideInRight { - from { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInRight { - from { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInRight { - -webkit-animation-name: slideInRight; - animation-name: slideInRight; -} - -@-webkit-keyframes slideInUp { - from { - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInUp { - from { - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInUp { - -webkit-animation-name: slideInUp; - animation-name: slideInUp; -} - -@-webkit-keyframes slideOutDown { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes slideOutDown { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -.slideOutDown { - -webkit-animation-name: slideOutDown; - animation-name: slideOutDown; -} - -@-webkit-keyframes slideOutLeft { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes slideOutLeft { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -.slideOutLeft { - -webkit-animation-name: slideOutLeft; - animation-name: slideOutLeft; -} - -@-webkit-keyframes slideOutRight { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -@keyframes slideOutRight { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -.slideOutRight { - -webkit-animation-name: slideOutRight; - animation-name: slideOutRight; -} - -@-webkit-keyframes slideOutUp { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes slideOutUp { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.slideOutUp { - -webkit-animation-name: slideOutUp; - animation-name: slideOutUp; -} diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/css/media.css b/Andrey_portfolio-master/Andrey_portfolio-master/src/css/media.css deleted file mode 100644 index afab50e..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/css/media.css +++ /dev/null @@ -1,103 +0,0 @@ - -/* Large Devices, Wide Screens */ -@media only screen and (max-width : 1200px) { - main .about_me div .personal div.my_site span.hand i { - transform: translate(183px, -11px); - } - - header.main_display h1 { - font-size: 1.5rem; - } - - - header.main_display, - section.about_me{ - margin-bottom: 35px; - } - - header p.web_html, - header p.skills { - font-size: 14px ! important; - } - - header p.web_html { - margin-bottom: 9px; - } -} - - -@media only screen and (max-width : 954px) { - header.main_display .middle .skills{ - display: none; - } -} - - - -/* Medium Devices, Desktops */ -@media only screen and (max-width : 992px) { - - main .about_me div .personal div.my_site span.hand i { - transform: translate(-104px, 19px); - } - - footer .contacts .header h1 { - margin-bottom: 70px; - } - - main .portfolio .card .card-body .card-title { - font-size: 0.8rem; - } -} - -/* Small Devices, Tablets */ -@media only screen and (max-width : 768px) { - main .portfolio .card .card-body .card-title { - font-size: 0.7rem; - } - - main .portfolio { - padding-top: 50px; - } - - main .portfolio .header div { - font-size: 1rem; - } - - main .portfolio .header h1 { - margin-bottom: 47px; - } - -} - - -/* Small Devices, Tablets */ -@media only screen and (max-width : 576px) { - #portfolio__ .row.mb-sm-5 { - padding-left: 60px; - padding-right: 60px; - } - - main .portfolio .last-card { - margin-bottom: 4rem; - } - -} - -@media only screen and (max-width : 544px) { - main .portfolio .header div { - font-size: 0.8rem; - } -} - - -/* Extra Small Devices, Phones */ -@media only screen and (max-width : 480px) { - header.main_display p img { - transform: translateX(-106px) !important; - } - - h1{ - font-size: 1.7rem !important; - } -} diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/css/style.css b/Andrey_portfolio-master/Andrey_portfolio-master/src/css/style.css deleted file mode 100644 index 9333881..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/css/style.css +++ /dev/null @@ -1,29 +0,0 @@ -@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,400i,600,700&subset=cyrillic'); - -body { - font-family: 'Open Sans', sans-serif; -} - -.main_display { - text-transform: uppercase; -} - - - -.parallax-window { - min-height: 100vh; - background-color: transparent; - text-align: center; - /* background-image: url('../image/main_picture.jpg'); */ - background-size: cover; - background-repeat: no-repeat; - background-position: center center; -} - -section { - margin-bottom: 15px; -} - -img { - max-width: 100%; -} diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/image/andrey_programmer.ru.jpg b/Andrey_portfolio-master/Andrey_portfolio-master/src/image/andrey_programmer.ru.jpg deleted file mode 100644 index 4dd30ceb21321ece96462eb14f23cf7d5daffe51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101411 zcmbrl1zZ$u+djOsf`BL`NTYOjt|%$eEFID%EZt#(})U0!C~jbZe$8IHe)w|+H$xX*>iBQb8>)0!S41(CN^fy z)W&8OR(4{vJGG6p)K;cqw3>VhoC@~O%q*>BJsr)|JQdYVJZ(&bOliU5)S~Xf?zZ-} zX3j>`?zXS&oP^!QXn%Ds4D8<&bI?-%s^V-TMk{eMDz%n^GW9d4qZu_HJ3pHV7mpyd zfDk(upO7FoFDo@SCl@~lrw|7hFB>P9FsG0(Cl~eK8!a%Jqp7*Ds-*PaV*y8Ew0~ce zo0}WE8xK3w(Sn0ZNJxl-lbeH^n+>SJ=Hy}LY~;>n=S26r2T3z06Gtn1XDg^3^-YgP z#!we$F`Svk{hrnz-1S**VKeiqQfk?50+x!UCMqJiO9U&-kUJ`M9{G1O<7y zxFvX`_ynFk<>izX5c=I#&d$l%$j-#F5lg!EHh9!V|%PF^WqK3>|t+nWA|EC0Lgv;SjT4q!4IH;?v@NBz49z|YO@ zzkmxI{0sVKb^zWT0bpNmgYbUA6=eDic!5x^r$FyPw=i!u;QQ8{TUfX5;9=jog^hO? z7Z(o~_b$O5;2ZA_0sg)Fg!k{^lai8=k&@EU($dl~{A)wGee2e3?AtiEZ{y(M;NsvB z-~k)K{a+p2CndlKHUd&&5<)^k65^ZYWMnin)HF2zYR_=}4McDYjT-nvp#`B5pr8?; zT(^K)fcasdpr8Qr{Jo)|qM>78V%-7?(SS35ocjCBT@We?8Y(LKZ7ghbbPP09ET9}j zfPN2yhD$=_KBkewn~2n6T5iIps*ZF#L|ESkj3d)Z)SP(v-qNcR&p$JXY8sS$M6$d0 zF1-}e{C>#!F+Twa6%~YzhKY`bg^r2}j0!>_K&9cjhbEzde$yT8{bFuajMVQ>cL(;2 z9U}?n-_r4@VU|2gYoaH5bUg{WgN6cJ5*h&r3_3YyOnbdlyB4&!;D6TJ-l<0}@ln70 zE=%=Ji@9v^6aG>Gsz)A&i5^yDgH&QJTizf0kY+Kh-_M$oc0UpST*zY|qdD_U@S9QH zJw6+Ij!b8mwrs{kg}JLodf!XN%v(e#3RU7$yqL0nXAV`+H#>MR#rLLs#^UuhNLp&g z;Jpy`LBqyEJKh3sGT+*}@FJ0%Yfy2L^OEr<~{i17x_rK}5`aAQF9|*}^nDd?NEvE&u5oDMDoo zLX{_kDpDX7DMFP0erVt_%NMXS{f_C3skzf27&xR06WB@~)-TJ>E2=!eiemaU&a8x! z@Hh??xs#TJerm0dzPFq9szAZeYz+>_!89-ZDHp&_W0YxAHz_M}4XTa1TEr^BlzfX#2^%@iu#Wm%6)d2QlVTe;IVHM*rcw^u-+j`O7 za5Xz6wj8{fVNhgan9E$zk+3QnwuArB*jOT{4xKB*crGo~+7pAw7`3!=4)MURn=f5^ zYUenlaXBF%Tszq?xS2`RJbTusHOIkynISA|R_1Ft&SU+{j$YVI){>JFkuZmAVnnYu z#DKmyaL6EgMhT&Og?^+N%b?(y;^J2>b$EY7VZ&NnK^6z(JeOMyA#L%PpF>**8-rIdO+{A{XSj(1Y(X zf0@+Iuu0gQoT{S_G8oY=$(?bdO0gC{p02jx&krpV=*ze$D^h?Ww&}o*A+m0^J@~$v zB4IzLmv{$)*1su_?FEZ-6Sz!OeiCUU^a%bG4r0uq{^QOF zi632qAXxkT@alE(AAbTr4uKV!*UJ*g)_E+`s)v-BB%6!cnrhX0KxJvo67e{8?)bE^ zM@iqtu5q@cA;I&5DPj&9eA#j|TCsk$$+DiEqpp=%D)Qk5@wvI%MK`!l{qI2kpJzcf z{UXiuOpT@_3Np{h&scu+dhED!(+2o{`_&T>fBHY zAFIe4@f8u>R>_GWgE@SCE`P&7MWM(AGfdhaQ=R&4!%+XM(bcA^&!V|{!L4>;kSSXk z4YK?5aG$}odMQGUmw()vzb(U`hJxkocf&gHeW!h)teG%6Lo_1wYfy_#J)ES9ZsCM- z&u$ggV)kjE?v_@HR*p9T%i{~YHI*l68LtZv2N%*7`@NQ-XR+Y}pjw2Vf@2y_ECm|QHFA7oZ2@{vDSE})wTsXhIQN#+% zs#mK?nM?x?@*SiMq!ENF8qEKAZ;4Xs@AB7`c-)#A(II-~0YZ2@xd!3ZLs5uB*{X>6dr0p zb7I9NKkAX5Eos{9c)d=5MbkYhOOFjW9lth1C$Y30iMfaBooR7m+RwG-q#YwjlR{6MT7#$6ZsNuZ15!kP8qtR- zUf{fTr1sI67{?_3BWH>&WETE%$}HU1u|wjmUZl4$+5B&?Ea%D2h{3lqv)Jig z+Z>%wTtXx)O0>584J*_`#=|Wg-`(+oe&l7o-`#w*6@quHiz_R|#|~Re)epSFioTYc zO3jL1gQ7@L6FJ=7?)i+sLm?p%>YrDfNu5@T$rj7qyd+HCf2iK8Dq?Ti!P6F>M6=5~ zq}+j$o(UT1t=lUJH#?+l(tSw_Cm$TS^&c?(2jZFSJa7UlmzTM|`ahstJycIvZNzg3 zp%`nAslTj@qE4@3-DA8Zvj1`$Dz& znENDDd@#&_CXDRlGdj6*;h^(wNAzO%nNGb*B)5uCakkww{@u24+uAqcd%22;szYh3 z6whq|u!c88CO?u_r8i(E{+LS3x<%Juev+z?4}VrS0&OEyE7) zBLzC0J@}D_=A%`ON3Cf=%s0g4w|Np`KlW3@`XOGkx^f}01b<0$;fDuv z!C>_bfth9g)^YJnAN?1VG4)B!flDTMxgC-IWye!y_kY{*z+ZNJ4SZ5?!)a8EV@2No zZO37Evo$_E{Wov=J^X(H7O%<^GYhjz{wKIzL{)i?(7ZZgeui&MQ;RiAGN~?J3}afh z{I*xo`J;ikW{GAKwarn+bnQ0#i%nH^GuZ+H{CbtdRtmj#T~iSzW~g7d>@p5ek20+w z-`!(e&3V1>l#N<+vg2xp2<)Xc6<$ss;i|IbS+w`ly-zDIu<~Py>JNNowLNcT%Qdg> zFWw3Zc~>&uLare_glF7+RANx`m6Um}zIu#(wYT}(hycdX$&<_s3c_;bf7sFg!=d)Y zDn&Lc)qKK_0>sIMwBdg5v(Cs;nNI-s(@5sg5O{a=(q+WkaAR>VArU}(`r#SzLdbZP zG-G$=$kfVS25bg3irOogIqVmc$pn~;iq8#`;SfF&U%v)f2d^>YWd||u3*@8)6)XQw zt_sQ%`94&>T)Y+vODlq~P0qP48^)QB0U&>~a@S(PN<2nw|pd>kKx3Z()h zSR`EXNyO6WyN5e7Ov#Gb3teFmUt)e}L^TT$)Pmy2C*;7t>;K(jxEuDC?PXmZk)e{6 zyU&NvMsB7Obw+_jJ?dZNJP{!iS%Y`% z2Y~@lhkHWH|FZJazX1;SSNe;q{}{2B%dGTM`9)CLei0Og91ZcQD`}2{`(rv60DEuD zNKTa}@7Riy7L5M#J)9INobu5Yobs45ktRb{`ZBtAZ?SD6sy)`q5A4_O$`)mjPv~1$*(P{ zSH(`gH5(A04~rvu7b#q69d%4rSTyqL{~rS5Z{9_e)Zk~;jnpnA>zf0Yt@yDHb9#hv z9LX*6iSKO}N(8q9#h*dl&0Q8@1e&YlyepN6hQZH?$Q^6E41o2J;mK)rJE*l5wc z^QL#zPXBS9YwgJEL7|aPrn47H&hFMln!L}4I%A{EXcShUVoH>QDCk|&So#_oGhK&H z`2<%Rw!RcDiLNW5gk)Z>qyaRt#;-Q@Yxaqn5pxgraHhPEmi3$ViMqYJaij<#PySe{ z9DTNs`BY~XV|s^k)}k>#PD;;nz_C6q{R+qFoe=YwPT~xJp1}R+5V+3wd?NNV!2o4R z%Sh1uZLGIb0MZ=^kZ#+#VdGzNv#7=oP@7hO+GH}RHgtCXz{V#wut2!+agK@>4AlWdc4yOhhu% z=_|z0uhtuYnV#pgn&XRwe(>pRQ~kmZwLog>G(E90&hu?? z;rQZ;K~~elk*H>YCCF-oiA_s;nA${_E==FKD~RZoP5k6SlbmeePCLBD3@1bDa7=u) z$I_63u_-Ttbn{~UHqCDG6twxkJ%dn%j1>NG zcwU65)t&JfuUAQdjfXnL)LG|CBt1!y`u3NK3DRHUQU*Y_TE1-vGUz~ch*^2@eVpa zm4^E%v-`&sADt=*TWYM&XG<7!5+!FZ)>y9lYJr@e`U?Sf<}5^;uF zs%UV7W{;SA1Dblu6T_sU4_JSi-*zOlqMJ1E6-LB`!+CJ$g>HX&>r%wLH5Lx{TKRvO z>Bt@E5dfrafRbcgs4T$)>KjK)u0eo{CFRC$|I(InzqREWJy`uO|4L5o49Wa~L(uLT8IiCpin;B>D^HH%^t`F#q53ag+~rX?5$lWfx!o)KsL!BadD|SsrvK zn9sH^7le|!34a>djIh&hwQ|^XNmBGaA_#c(a5gL4_IvMXaso_aR9sa$?cu`%$9={%bqJ0>t82zC1c?c z&tr7)BJ@tqLIugt(qh9^hwuIg+yApuNPBAa_;deq!oZD|R0Q}2%8Fp)Nc$q6o4s=1 zyYK47;C!VA`4bK2R2Y!Uf|A|`cUW8SAjC4fd+G&t?d>Y2PKHEMj*mhV6OJg?{cK=s zMR|4AEW=)zS8#AzLtZkYKNL_?#{ZD$XcQxarJRt5odx=d4~Ny1kV^Aj zUWsa*vS?EuzmF2IVvrDxTPxI@MG-OAuRd1TNb8A-U-mNpkt%tnFlolQuozB(;`zbA zCk@vG2FBHBZ|`Qt=Bskdr6O?{IgXjBNN2z#PpXO%@5Vsn52+-D;eYmCi6|COT2RAd z-@KI9D23)e$f)L4`)ZOB(+?94-ezQ%PG8LstZgKhU&!fuymkA$D+{d3o*p4Etu;zw zvYOBJ>QmQcKR&MVss3ow{^7{SVgUsU^>RFqSe1^NT18H^{uF)1M03vaqSZW>(5f|o z*z6bH*C6wK!=h00)p$QNO)O%@{kw%%NAL*`?0NoEN6kk#^;hMMRJd+7UDYSz#!dfJ zpK)G(H|q0h1EAml-rxO=cjS@NkWUUJ^NkmAxbffm^YNYrCg4>ml;f?K+u-`;MZ8G8 z2F>ob19}tSCV%-?UfBV>92x1mmKmhAtvN$UBQM*qwui0rzq0FMDRv1+D31Fk{lh2I zQk#Yzrh4y3Ih^NL3nKUh!4{tN+-w&?`|@u|uk9TlsjI7e%o@tf7^1+N_-DM zc9EQy?Il!KC9^E#HO9ngr!&CQJI^SY-Pd#Wg|dTEO-aYkZTjQ?I({0LheBuU_e7TgsUHacV@h^vS`)R}>VZ#HC?LPr4L8>=!On13@_SR>`5MRXjgzb}pZYxF zIuEk&=)49g&RT!mJ`(^dPuJutEgoNZHKhuj3Wt6y&#Urz)Htmw(x4FSij@LUqTGx$ z1uJ`}WeA<}6Vt)7VD?SyqkQ=1a{5awRZE0mRcq(Ij+!e4F(-%TR5k;uaC3oD1cb`L zWmaoy-^@E2m%_h%-vN&B(7gXH;{Fn&np3Wi%M>1@_die*F$6O2FQ>^3on8}}y3zpO zxChUCZ-nH4X)rfHNPZy~@CU+zzH*EINv?y&XTbH#SG-5q9aDZet-Bq`HDfm=K0wL8 zTqu0M94VIn^w9pHX8$24IV%Hj!sAGe!E9y)KPd?e$_3)gI^@}|VBOlr9uo5u8;2d0 z>10(0 z@q%>T{-H+xivVU3@kS2CU6$(b{mrb?|3yMhc(zaTvILH-7Wr&k_;GH48>^j8@0eu@ zuxTL=HAiuopwxS9fL}Yn8TYt#k0YnBIW9;2yDQ8lLS~R=CJ# zp0gVvnA~?s?DK#yoQ2Yz$tg|+7;T05xNzH!8}&weY$V!hgV3fD62#yRG>=W>kjAQ8 zZ0y90&$eDm#`m{ zF;9DBNWY)0kIQrzq~H7UHgOPR-s?Yf@sihXpsqIzd$6Sbn|x#f#yIcbR|v=48}jbP z`Im9QvrzCbrR;IOssdZ(dB~0PuR;KD{u#=NJuN=|%N*DIg7W`Q;GV=fgeOQ{rF3h{ zKb9_XEf2VrCIpME{0EXvqJRKOTzr zCI2sJ1rUGv7p-{KL1_|tW$fOoJ#&hYH$FF-9adns`gYhiRyQy@86m*1%%_?jq1$Ki5=vIA>^0KyYWvs z!qjblk%g7SLgoV zX^vxv<+i3sZa6rtJ;R+5Rht5^_NLEnqK+7E7Ob78zp%@Yf!80&aMLFWrq<}fAc`d``aWTl z%#i-~ZL*k|dgJxsD0xCl+O)6uJA`f*=uR5yyEex-XiYd&NLp7`yHqCELYB1*R~`jR z5vu>m=pMrUA_ag;T3{0P$XRUrPvNJ?`pcfi?`hxxOkgHzt3T+gqxg?u^(dv^gtzp! zt_!WW2C4jV%mMz39S(pasJ61Y-M)#e0P&UoTfdx5#cQp7)WZ$aw`t+eG>yCyqLzGd?7C6K@Qn$vLB2WB44a5r)N>FzS@Xq?veJejYk z?BHAfjDALNorRv4ahC0vr~@8zEH9(#()2LwUUEW;^}sinYkkJ}#jL5LwRxjf;hWhP zZzvAmYQn_xR$egUqv?>FvhWZ(IcOVN<+>AVD#dS*MjoH;DcHDvB%9?@(*(mBnql{z z>CY+kdWlf9uwp2q{4Pe?>?|o2kx+_eMe&XLR1(>?Htxbd6N+g39|$Vv{ct zy(pQr&VU#5*UIt8Gr*~_0{`B5es^U3v+BkvtUw?2g^w08|M{&faGlQI-as!pvrg1hmaBvm^sLiX4K=o&5eSSxS_x-w<=yq>)*2O`b{(NC|ObPC$V zWup+Xk5e0dgdsFZrQO*?*}Re9QAnv=Gz;ccNLKJ|6CyWd@K% zWs9ZuI08+uWpd5YDZRx9(gSJ@fwMpx)K(&b$l>PjXUtRaAeG;$6zd}nQ0+T2Uzt)qM6kt915OJJUF`b0fsud5mhC%@G3OE%R z4(^Y#So{{R4R{>4VQQM7ZbuP&GYIZzJ%K(<^Yf?=tUhXI`SilZo$;o4uCn68Vj|aSu4uV81 z8$8ci9cE&|@}5>+qJE#f507hQZ_c~^kMqd_@>F6J$pU?cLlfRVezpGrJQ?qWut|;u zj?bDDzyOP@=_PGv?fps?XW_qU?EM~X$2SH)p z1@38X9_oykD+|?>-Q=t1*6?{^fo3lJ_I9ABfa-C1VpkflwP2(VZ;APQlnLj-7~5TW z2WuIv@2fiXnLS>xh(Uf00+XZk=C&LQb`}iF4~|F>F~BUDKGQD5J?z*zC8`H6V)YP8av=~0x!|r*$S1Av1KQK?2UrPl zi!wcw)=`&5Z(;l8f(LYXl73|3FAr4qf)AMG7Y64@zRP;IJ^a|f>D{FiLd7$n<`=W8 z;%$f_E!qN?G$a!@qaqbIlSgWPm)i3tZ2uI~5e$r!4t#R`x}4HZ%UXIoXAe>w&g}lJkDKcy({nAEBE+ zqS6;v={#rVA(Te2D{J=+pUoMaqF`XJSD~KD%=+H<*eltdU?2tKGKEN3oJHYAT@~Ha zYFRH*-gZ0wezW*H`|xdu^&-bbL#67x*U~Pwp^iROC$D+9My!(8QXX z5D}fJUF$q!wh5NZj&BRwDk*GE2&3Gn8wyqRdW;NOBWFB*G8OtkCiwGJo{q>KU!naA zf0eizytkW7IruINY%f=8;+-D0w~3&v=atw=^1YY-=2S>5Pg@-5?^Pat7b7Zw4nn`( z_q@}HL3r90iE;cqTw;MadS>ChDa>MG-bp%zhHpg;R$Hz3eDi0WjRyN>qj^a@UY6agG*F|(u&{s=qptX3~l)iIv9~9KSZR1oh{W+2A*i(wS1JnH~!9VI=Z&|OE z-BSWP7gp9GVR9|Q5$*9PRQmZL&0T}-w3)~Gx2(-SWu^s1{&vea0_yB0q^<8XgkJ!t zv)YNj)!F)uIx7mybd)S$4QSQU23y;B^pB(vy9zcs*B$F)~waGoXG`c zQ=Z>G9~7=(i9tAe^EHfW9enF{0;6`c_}17r`_|-6nYvpwd7SrJ;Y7TUH@tP_oO0{R z1q&K6pI+IqJ4iwk2yPNuPoJk+h4{|;;Zl?#$z)!#dea>Z?83$%7eGS}pzarjQ#s+a zQ<=@YtGX-musOPBSq#{F-x_g(^NmJm#Hb}=U%2-LwbrS?W?rH{9h`?t6bm8;3~imf z2n5dWjMdjzevyNb%Hs@~LeTee7F_u2SwlXA=JnI6fru{^tXd)n4X|QN-`3w6l;qJdzBc5 zYMW{Xl79qDgzXy9>Owt?_@6hpK2 zD2*FdJosCsJ{79x2Cj#gd8mgt*-L5qYY=Eo81@=0oH`aWYB?4)|D`4ICw^c0&)e%c zE=#93C0S_qpg@JcDn-qw8z}jIx+B*By4)~)4NX$s?A#rgG;_D+B#pd8IU7DbMyN8! z{*=Z1g5dV%qgRO5e|pjKTGR#awu})v6YSnIs+zY=nK=&c^RaJ-E`h88|3U$7Q;?0I zgzK`3x4ORbJtZm4S2?Y(7surHxV$$A7?Xnn8AAJF1o)UzX>Jm@yaB)Dk1EualFIc( zaz*9(ZW@)voL7_6VYD@ zT?VPsbBK2>4SD;^MJn4Czf^B_5KYpf{}DcV#0I3yJz7J@D-a|fOL0RwUv%5SG9lem z4~Qlun&k0h(yBOGOxdatlkWNkNJ`qQ6mA-B%2D?F^yyu9Z}fl8XxCe?kaH__jmu!zpQ;?DsV?hMtCyOAlmeV zFv3)h1j<0LL)O<3A)**m^&?k6w4W?D0!H~2+Ml*i=1v>THExFfeiy!Z-}$w%3`GF; zPvehz5q=adRe}TFWGOM$%?@U>25?b@`KqVJ$F^Q0IXsK(sfFF4FP{;m?~kl4Qly>c zKMr*vQ|%>u|CR337hZGsGk2T&%+jGcEeC`hs}7L?Dhp}(8SpZfPakY)=KBigg^zRU z=@WV<3wAr&P97J{zvecfYt}B63X=Yo`Na`P$4JYQ`yBNAwcJBycTUz zD#H!W`SQzYxqP9-=S+b>!ts}>ex=MDK&b9ZMbiILB_&Fu3DbY=`3?j6MEBKSDKixU zN;@8Y3V>>^C`Fpw2VC@pNdPU_@h}10_DsgHJ%~ktP^H&u8-l)_;vcg|Mx|t@Xz7Ku ztHPXfMIFgm^o}&lA+^%tWN) zk3WH?Z8P)kqRVJibhOB#@mZO-sULq-aoc8kar@b@KPSne$yv1btDCa+&GfJBo4M46 zp|F*Ky<+c4#ddOdSThy;%S*=I;G3e$E^$gcw~Q@^1{Xy-6kmRhM47hM1IsOknzb#i z^9?Rils?$X2wOKlf2&azoYbLaBWxK@u+_x#vosd?PGH~g83o7ouzkrmF7Juai0VG8 zbS9rydFlNxq0-4g?ZfPX8Z8{|V-sryMG@8!&(-t~ht*146}Ar5OT^}4WO(p8tDH4P z&Quc5;xQj6_6H5aP0q@Cq)~*_;hP86oj+?oE@=4nCnuD@`4VMh4PP>h(f&T@$)>&S zodsAS>MpGxs2r-7j+c|>yzXt(+Ev3du^d_j`JA=y0!_rl#BCY-loA!Uiapo8Sd~6A zJJ6w|JZ$8Lg()Q}0fns;$sAf)KpEvtnc-h$n4$*7FQn1Lg?w!}+Btf%UES-QfsgU0 z5KLg4E}+~@q_j1?v}F@$d2=K#_MKql@FMFlDVaf^5k^QptEI{7V| zCWn^R3L9OiXieTR&wWPpNKu!rX@Ob0&#~N{TXp5nU=YJD{^ywmb1~Gx=KQ@QQZNYE z@NIPE+d$VCax?<&BaO^c4Y`PbyKJ(K=BVEWergMT4~`Li_b6NlXP7zc=qk^yR;}6E zt9a2f*b982*L-M0RrHgc1a#CdFM9ddmX|c?Qz;^3|q3qv_vnA}Ik8g9B1)`9wEz?x}5C znh+-}Mlm{qoZtt`!{WSJ3Ec1bd&-v^;_UcI+QR)|QECvM7Rge`{ttYMz??o^XEwFK z(9@t##T)qywA%F4t})+z=>-*m%Px6b~X_l4^Tyj31kqU+e<93x|S}=4YUgxSp_dAGb_e= zbNlTcjZ|3~q9(JOb6DP09N!nhju6|D+vRhu^)$QV)lpH2hxs$CrnwD<#zh~@^1w`k zxYn!birEtvOyV%jkFn+W%nZTsR;f=`M(rr5sjsuSl|)XoR5-*mA}U2mxQ?JD2n%9i zJ5ju366g?b77D{u(-A9ufP$8m@!;%D>(0Rkf_!huCob48*2&rym$8jsbcg#-N9zsS zGad*Rei3+i>8W68^p-n)f0S|{g29XdkA%;UT<{q;&mJh;hJ{Y2j$l~r!H7(mb#>2& zG}gklkn8Eph*WzJ!=F{D=7M&!BIYwONARnn z?t8X%MjFu@Z`wg(b|)IS%iV+=7ZZ+Y#owt*n;xy%N(XiSbeiIq2O4&5?E2$J!|Aov+dFvt_vd~NhJH$v(p!Nhm_GG-03UZ+QYgs zyL|p84G((fB!6g6`q$pGm`=Qtlh+se9|E3~Ak`EpcIJeQ#5wODjQDgp72A?*3HLSg z&n{E=yY&)vhn?)8ea2sb9SmNB>fHPecYxhtujrM_fJ(dO90CiSNht=S!~>Q%vHe+3 zu9PE_%R|4qlcK}^^J1i@SNTeNrEhc2srOvG%&%J4AdelY^^_yEgFylB%H$A>EA`96 z6Q*96-AsV;%ihXrbvH&Q5{lq#l)hr{tnS>o#uelm)T^R2+q+52bAO>6rkcH)U9I@a z%XN#jWfa1nU3+w_W>zwv#j2Mqx!ePnccmpE3#)+GPNTa3vB0S| z7~&_!RXM$ip-Zew>8gHtlr}pxM0!Sej1a{OCO{U&Jnz*jfmYvT^A{c6&GYpv67X6G zexFO5@+EuNS_3&t+DL;i{JOD3k2Cc_>3wq?_B{Pg8x0wbAl1`EDqjbhg|OAO7^k%uS-@Vqb=j(aeoo>W!DVqt_s062u_9*l6$|Vto#cL!S!x zc!Xc7DaL_wf1_nnb9b6 zj1S!Y%Klx-nSS|GCO}s_5O?v&z6LRINGu*It!5gwDu~InWu@y2!R%HuLx8i4-@^|l z>*j#b$1?CocpER_^(cPoL%%A(7fe1XO`@k_0U)jW+t9RsOB z`_PB%LJ?E&0%-etlka+ZV#h6SAu&&cJy4m>>d#yISPGb}&MFJtd36J8NotrF#0U4* z;I>|K{_kXq_tkXktHPj7skEkRMFy}LZEgOwu4K!`*gDOtvCtnfpGJ{Wr&;`4F6}QY zGq6*i@o+9Lq`%1jB$i?Jyq*tAY!NSKV=qRuNOk#5NmLN5zcI_PDBOfyf&K!&HzJ^b zjA;SF&~mK9($T(XYIqI8Q@Uus20fy>oFKUdHLD>3FKwp=+nu98WM>`3U&g=g9NN}m z%3N!WDg__9zagQWy$2+qr3N2Ome$x&`^Rr+Z166JR4RB_`*NkbDr_?_ zZ%j|L;&U{$Fm1E1U>f50;W8#`1uelMQV-OsM8A zY7TZ-h8W!{#laI0cwA!@#o|3++vS{ykNaf5DdR9veUKI`Tu6Tl7YbRI=HM1c!dJ+P z?k9hNt7{pV(@%E%<(+ajotibul8uX|%)M_fnMZA(_^YzxzpYLx9H9ukBx=M6k($cT zY&e{6{$<9165mjl#=eXW>aBGtzn7U+LXi{Uy zxL*(K zgD-3eh>X2Tf`#k?IBO zS5%lOS7e8-zR!Vmd&OkdTk7d6=Hia;pi(V7(<8hZZu@dZ2tVASUg_~vr8e1tqBHFg zkOUxCs2fx(Eu|Wpmu#+hQq$RJ-az?)6LGpSC|fsvIkKA&Mrzz1B7==C@k1!(wixfU zo=fW+YJ*2o(?`W8u;i?I$BL=AmNmIYx0sln(3wffKhuSi!r$8Z>Pb zd!#iiAofiO)vv<9=b2a1fPMpVts8TO2QNf_oRC1HsME5y9L~9ij&u)H#-Abcz$4IJ zwM=9$zGGv_O|$oOH%Wi-jeHdE!5e7@0xMaGzQ0digYZeta~f@cmQu(p4x!5tGODc~ zCoKKDrf4xl;N~{JBQD?K%VBTsL(}H-_5<~`%B}Wl!wGKe=PC1XSCZhuYY_IcFc310 zYU~>Hfp^?1di9hW)mFKi`%5){?ql^Q&?wMeC$v-VcwR(oRJ6bsd?d4y73^p-UBo3o zG0ZlCPqtFRouDdD>0@a3@2NXo%|;Pv?MXHkz#RL~;I-?;2E1g|rr5pZ0qT)(0P` zO-`TNE{P!;;SH9#Qo0w}4oECSHqzR##*OA0lnpLu1iIPwA>OCl9vd^{RnJ6+6xCF6 z9QLjn-i%az4a)MHxI8@GIn?chx!G(MC9vqJ&Sqca1Ia+ok+6RG6NA;EV1`5_FL2pY zKo#gsm1)(DT;$et<6!4X`u0qFHnHIdFVMwQhgYqizV`rL9*3IGOw~0gBkl;7%59r! z-R$a_3Sw@pGD3W14w#07Cx@Ch<~%aia2VPv^KBKFMdA_pftpl9+!EgqFak|I2@z9M z-!({qV?$si<5YC+a1fd9Yi(IMcBXO&0)bF3fYa!?X1^N{AuhhGWJSp$3%sZ(KF%x*G3H){Bp+Wj+y>mjl{w?v0wjFd;vya`{ z96Opcb3Ii&0ysyLze%!ip@_>))+ z@?7xIeg8%@CwbPboK$F2$_LicE&`29B{Ej#Jr3^yo^PwmI;rmT^+%ApgP)j`#`(bYYfz(`YSd zZPkS(R`2+OXUmYx(yF0-(+W-#p1}q0LnmTLQ=(a%7O=k-7vpq&rSr>ImQiBi{ZNK19ph5j2QJ3v>Ge^NpoOfr zE#jjwmVzaf9UDW2Q(oNvgRnvjA$*g@sHe*62&?3(J7`w3yqX~t4E~UN=6N{M9NmEx_73hr{du}PF<(o zv1%0G*Ws;|uA%5#{32N~*#p@PLY|29g7lt9jkTZ`YtX?wg##bmnf4+IOvydmoRi&|s0(S511kNlCY*)>U-1 z_t(3^b@PW=IGDoT%3vQ_MrB$=o<3ynSCfwiyGamGxUnj{Dcmo}{#c;6**~c;!HL-t zF6Hd;y5L;^_Ce*~@Z4jUp=C)>goLfYzde+HSWatwJ|^|qldduZlLW#uY9$8)oC!t{>UCWGC#UOJf$_oj zqf<(?(XXyyC&)B!aqw?om#8wB{izer`rkRIeF+;^U z=Cg;_plguDnBO+$IACZuL?2q;cGb_ok*%=cK!dxzC5G-hm`FIw5hb*p$lp@yy(Va)ju^Mlf!a^&2k606@NZwdmDeadhYs&`t3By2qH6LyO?=;rFp;@w)5)bIMv3T6i~oZxhNx}M_LK%|33S8xrTe&a1nVAV}NdLi7 zLEblp%(U^}p;TSAqff__)YWsW7J%E8LX8s@5TiATauQ?5SF=SWzQvt$|0$|P44!mJFaF!R&yTnXNf)SU2ht;p(cAk>>yRRXj zswxuJ`@A-JsfWnIoFTj<(uWAUJ0zrVyttB_xQfq+XK%rY-u>8hwf*%uU#9M2%~&ww zMy#$@JH70LZr6wNcHs}L5$-^En~KBjSw^h@&NOYxC2ym5(Jm}Gh4M59Iv(laAW+Bv z#rQ>Dt_+%bT2HZ%cedYps#Hu}R0KAW8*B!=Kl#K(~yk`dpB!i+Ig z*C3ydzN<*=#c9t43375nm;_wOpI=6Be-u_i>`@ZK=>GuZ(*@5{w3XH`>k{?jS ze{2##tvhA2(GRMZ<$^dKR1p(irM?uBN*=AnR>};vSTN}A3zB1(z#LuFj(@lbB}Ak;4*i(hgHyJc%Z=Vp86h14iD<>*AE%@ACc8k zN;3CPs`p2bn|_sOPRm6o2l7p&6)@A95{b4NBaORh&0KD!$Cc|OrA2iw9ct)D=echx zZ8RGKZ-q9ev?&#?o$rrD4Ptdf`sN^p#v@G5&0#SY!CMTlwcz2q2CWX6h3%7tnBlH& zsK*c4w8ukI_1vw`W4_Xb0}SQSgF7TaR1`WbIN>2n1a?8j9lRgDE?axEuHl;ty0cWi z31pEbC}7sAai7iS>F7u7^0A7E+64F^`_XhvZKVA=9X9xypjkXZmEw@eR_=#96sMD; zaB?4cGh(%G2L&meCh4~4n-AZ^{OQFF_2vE_qP{w)&GiiyDbPX-rD*ZuPI0%kxJz&? zRwOvVtu5|Q++BiOu;A_%+_gw>w{vsO@6Nq{F!PbgWF|7-v%AmkzHv7rJ0)8$@su2u znc~YF@nyA!{Z(8m*_La}yL$-yF|Wq3$RBZ`&B6bX?9K-F?ZUFk{H8yj_!>cLTf*&{ z@wCb+LD2t4BLlZ9b^ohLxx?EpBP(wHYphycJ_$`=J92R9{c`%*_5%hEoyjiaXHF5@ znSvkk9yC9P*&lUXnkS_fvAe>U24W1|gv06>D;=6mzsSEm>>-xSbQR_FdgH3OzXmZa@=a5NVzSJxV1p7 z9EP4HD!8$6wUr?Cks?-c%huCTPuTt9&~Kd-JLr6 zOO+5(*$i#?_<7svcDJo++XW0$cmF*&9Lw8V7n{`aHA^gFb^{5e3JERX40FVfw|gUb z%evuWf{&y!%#w zPy>%KoJ-sbNs4>!Aa6$bi^@U|m(FVD$imFCq%brqFyj%%Y{kFMX-D`A2+Dg%Lzz^) zyLc<8lc}@!tc&Zv2cEKLVD2C^Yij}a6+MRIW$?hBu*>Xk-9awJpU4wZmAj-KJkn>l zlE1GuiX3MM^a{kh4O(FjiPn)WbUUo%;I>)$oa>VjI$zuLa)b3D0&sZ~M$^&(oA? z_9-X6n43%U46x+I#FtBycsS>^0k!rfN@t7#eEBM+03Yh4YLaG#3nDUQCsXhc4sN;TA;eytkp9P z4)ouyisun~TJ?wVr>H+aw&Fa?U1E;q6|b&5!1rWo5I5H7cG(%ym!p^b8z}*Y$KrDY z40>H&;um4>-)lUJ@885Pmi+YvS=Uu#eHHN<;scBSAPpGP zXg_x~UHAKUvWR)^45jWTEv>9pbb6xM-)gi@o{l9gvY+>bg9~y|PIeYPtT7|Bd{cO# z!}5@KAkg+646)5Qe8_BBHEPlC0c31A8<+om@Lg7`;H$(@^4#)#X7ge|%zmI59u2!e zX&mR4XBe7}H?w|BTH6k9-@{RQ=>a19nY0bgE*zJB=GU*AJ-X5NBGF3x_zx2DeBRX` zqvr8AdnU=El_?hqp(_ms1ux_uP`bZ4gb~wf5^M(^8b6wI$X@4NWgJK$1>sa-b`$k721?J#64OJFUl4f~i=cZ*rUw$yVuqSxT%cgafj?fh+A z)&YF=9o5B*|B|==Io)NS@$E8W&U zd^y=;>4{}gWBPZ(r)CPFU3UzQj9zWM+TfP79SFW@){+fd-29gtVlzC0D-FIUlSNwL z1GKP`b3Oe;vI^BV7Fyn}cxqWFi*hx|q2VvR$xYjuh5Zdf_ThG1!AxJJ0$B*h7gr($Q9R@hBh-~%9_FcO!zV6 zYY~=~&!6eCq^!{s z)O!n1<~9MfxayLo%68px_-g&Ip0c*+-JO8nN1@u#dmg_SrN-}e+mBiR1x<9yzE!2>Q{M9pvzm2$N%Y?(C zD=O%rPw}o+u0?)h(Y{@QO=<17T4U9C6Giw@Vc~pJH*9q5L@_zbah=EOD0keA%SnX8 zAls$DVl)#6xxnkFcw}0?-!|Rt`}EdG@y`>%@pE(Y-f+hmeLRFaCu~Jh1-##TRykHf z6N@6ja}N0?bu6H5-)G1-UB}s)E`V@-B{qxc%H`Gb-6*LJjju`X(mHkd_yr$8-Ty(t zASOa`EOY6j5OLsU#0=LtJ0z+|Fc@93-tjatzu0$ByXjuXuJ~k>f5Nc~1}MCXmNo(* zfO$H5&^d#+95}Jhy==~BaqbUoGqtQneIi~?bw@-|rJ1iCoI{`R0vn~Q(>2WEK2+jC z={Ou3@@kV;x=aGuUMXq-PY=kdMP@$WHN^7$590uYYgI+%6;mBL}YZftgQp2@I1LV2MM;D#UN*EM`R9hEK zE}#8ew$mKqc8dOa>Y7t-vG>}KcQXG+$&t&gb45U`EfqKPnu6ec+<%Jf<-sVwLSw(7d z(ysWI(&48_YJUF=L@xgPfE$&jrDm&_EeH&(OnXe!(ke@p6YEJRIV!EO(g&_hCfL_t zdXC7jgyBVnREKXFuJehw)-+7x4%}olwC*R8Y?+#V^AM>W@42EzCE@sjr!j^tLcY=2 z)2k%Vs)=X$`a~&pL-0eTbd|?sV&l z6R^#qsqg8@)tnE3q7W1Nk4n5b!mErQc>#JHa{b}R^92QkIfPg0h1ayM>x*kdf`pfqZW|jGP_q%nYe#- zbUJR7P&D5xc(h#0vF-QNE_z|uxzX2JgrLGzSd@?a6Nslp*^JDLFjhIhzU&G&PcbgX z!d_m&_Wrvo4Q(t3#>n&djz!aJZI=r~LHNmeS140*Qb_ei@mH!?UL0~>j2Pe;TDvaq}NfO)z^x2-#34FQ}n{}Qj;^m zjZ#6ADAM&^N=AzA(oBA*EhLrJ5w*so{V)B^xrPtVA5E)N(cq-{k`L+v z`4rOE+T4T&WXb(0-m)GP)t%D?{AoFes12Q%zxBUX1G4h3eJJFWUN1n*+95^%{Dt>sKxaf<9UuhwWKST zq>E(QC^>;NN%_Id`s8D)>zG?AJSg5$?%xUmhjEGjm+2cU9^J76{Jv%S* zB|LwP$qhqGGFEUvxqC>8=zQrerdl7qp5vzb#HoG=Ax$18;1Y@qeF-fw=Xwzd9_uNp zLcig4!<^`kQ?3NV_9rJ}J$2SfE)5X`i9JcfkE|^*c6rZ|r-IDs5b69(YwfK-DJdsa zx>F^NdxYa%+pjR+x5_c(Uc}$NT4G2n-xvh%v1oEx*$ciaC6d3hP0S*{>!UO~#j>d= zj&K$B3iVs-Mnro`;nRj!&9e1vgv4nnbtl#GbgyuyncI&DEq590JKu?t)53I2*4oK= zv+eY?g{C!rb-(H(v8O9b)f@f>?sVPqyr596y&%2xwUuX z0K;Fq6Mun`{JIFiK?4^9O(Lr@h*#&vu#%Z*(jLEQB{_KI#!&SVKB&}tRT#{>U-(hd ztD;xP9r8w{(pDr2S9DsLnN6w312;v!v2y;JK6`{gh7ZW13bI;evi+9LHWHXNCvE#8 zXHaLngso5gcq==0S#o`4O3ZIZ><3zsnmaIuS6fem#6~jlZM?OV7=6fws(4no7}$wo zkQE}$2M3Og*RnK2jWeqdinfIfWX0*vhmvAJzQ(&qVpZw2dqb70>?N_521$q%L13;B zmRa7_@I%a$%H7-vGx7PPYh1~_EtRxBwSdGXNtvg9gciJ_(^cEPd+eg~vZYnNY@d&K zxK;t>a}&-I>D4Qua)W-Z{2e^|IdzFMt@>Jg#Zt*z8eEQPmwPZ4{TJ6>j5^}YZC+CN zSA(Ggo7Lh!ez)gRkCA?-$QN~1Vt|+zUUwTxtm<9!3%g|I;!e@*3Eju_*+>yw#5OQc z0cR#**=E@jbPP-;B&+R5!MBYF!#TZ=I*>Z@pP=J4q1WAR4|yMs`gy+oQx zn+5TC6~f;zjt5Axn?1WFys;O%q7lU}A!fwj#OR=2QPww&p5l!;Wl~YPaI=f(&Wa^! z0Y&y=$5oE$gSBvOtA> zo?E=MGZ5oK>MztOD^yKZ7Ae7STzqqREHEg=#kJkQ`cr6ei-7^=dhvm~SA-C}w@{!- z@FBX&suUu35rGE8_%#YgLuy#}BiJz8u@}5gRb?HCz%2Kg{j3ez zp!i&hB9~jaqGMnlG-|d z!d;kX-n{3Qj3Jxf0(`}YcUz^T^&%fUY_HApQ5X0bHo4W5Qa^-oH}@1Wl|I9h|k0|F5i`gb(_aNSuh0IY-4Zp@V;-R%F>*91CMiGPHeg^F@#&h={Irjjyf|BA9~{-vZ@%N8>XJ}*m+niwh{{GEoEzf?h- zA3M6LXG6;c&?LU46u?Y1!=M(&3@`ug6e(Kuhq+sN9hVq(AqDt(Lu;l$VFWWw`n+%q zX_$=&&yS8oeP_U-ZQjx;$6uS^m5*+qCSnrwC%`j2jprNLiI-f-t0|o%)1GXSJr{nv zhBVpp=seM7?Oc89{cyo02X+k0@C;8txuXbSmFVEadJ^L(qk`kC2tn<=cNzSMmRa$J zh``-Cg96QUt479>C$M`i_xQVr4D)vG$Xc`zcPac`gH~!f|Cbd~{V0Ihg6?LZ6|JMb zCYNu?g@#&Y%~Zi{(@fESbI|)`#9u?W@kQ^Jdi2*}On7ti%M`f4|KDYGtr)D$EuIHK z_QXd`{}YIz|4l-&(62mPX9xx0AZAuVpA z&2KQRnHL7E%gc<3E_+IiW+W1_j563R8*uYj>x&&B&nXO+NtWX`Or3F6QlIVX* zb0?PIxrP+rrXB<7)1Yyi@Azy zPNovwPzNhoFO=DEfeC@(bG(ZJ=g$kc_8-l-`FwIu26qZyer&Xdhg$Jelf5A$nDKG+ zB3I54X#)#0uu*Hc3^)4@c=&3E)hF`5a>ebhnI{CEj~?8B^XiRr*|@v8ET9waH5M8h zl~y!#h5QUd`uDAbT4pjSsl*HW%)A-fWAq{FTl+yVsN=Q!Cnwu)Fe_f&62abP2v2Sm zZ(GDp*=I^RzNf58uFm0ojU3-oB26}o^D4lGuxrBD`-9Uq!di1N`=ev}DeU&g1=Kjq zSUx(uBe30p)Bs4hjEK$JyKza+y}Dj1A;FUGPF&m=ikLfn9Qr-DL!TEJJDf%jV$ z77`+?K;tj0n9amGHlis>JP=hWEF<8ZVaTiI$7s8=f*ullomQ#01gob`e(9K32)ovT zKpUn`JTkO{&fDK^sR2~ctT*1gjoW!I{`{+?abL|as)hd;Hj)i%N)X|PF8Y(MMa@%@ zmJYg7Fg^z!mfKvd_c4M7oj#lY!e(@Frgy&V&(+DRBG=k?hV23N+|upSZDOz2Z>sc!=nUWRi!&65II78c>CX$U;H!BtB5vLhQxa^9MbqawD0XiSw~h9z&B$9@ zge?VM2}>R962J6SFDq!j-Lsd~-7Z}FkZw*9cg7>~T+BY9{7IGhSB>?2xmmb(dphC<3ps5$DF zG_u8p21up{5*;^(#vLr2ICo-~1De!jP>rQpuHfz4{cHB*wh4;d(ruXm+K-xO2lm#G zygD9o7X)3*A^d|W!PFCkgsk!}7nc8b7^%`H_MnRn5YpLsevEr#%gNLQO(&7_ zu4w<-S5t|jfiq%rP%H&AD!W>QmdzH$h1?s86&r&RwBN~hRiaA~m~mrpJ0zNp2j#^5 z5z4=0_WTTy(ysK@g4IMRn$3omWP|Mss_}#rgA^pHfjy(qdTVbDMI>(p5hAj4v^MeJ?>>yOC+% z)pDfaI0pZYd*!C3Xn|fy=Ac>7o7^r1an;23#2lZ<;%6#=-I5m=onnrRMX8n^f&WN( zr0_&(umn<91?PsA)$mf8!{b7m&~x{U1B*G|50tphI2EFs_M{Y!42J8>GVUt%L2N_- zQgN@Rqs+H<|Y&&MxxY6?npE$J$ zG8ODx_42TD+~`7z7BF*!N54KNM9E;NsmIyRx~!>|J?Q~p%M{ofo1J3QrtM*c$|ack z(on9#0)uCxf8qq)q+CMPlBv;B15G>6!71t@1(l!XIk>>%P>;Ow&7T5LuYA0cXj*Yv z$6c-SIJs#Fh(slkxclna;J2sVy2sEoGECo|Hvb#Cup$XH<Re=Q)eEKnqn7Ui{)CjQCWtD0&h5 zm+Ohj%zxX*J-yd&jG>v!{%qcH)-lySfU$|2itWme=&>eALbgZVX7AK(CT#>>|crs zG6U8P#E3USI#{&!_*87hOm`}yGTF>BQcp%pC@DC7wOyR1lwuqN>*xiY%LZb?E4NC8 z4)W=oET+aS!H%(WTn6ygNHtlY?)_ZB}7du(ezJ zV)w!2#`BYqcT`8yyp*aX?;IT(Z%G~;g>D#@R1m$ZOGOT5A9xSqQYXTE;{bOTN2M3# zbjJgXe;CrkuI6lCtp~bCl)>FX^`9D1+QDdjybzaQ*d-H#bp#S!k zgIH%EW{sDYh3vvS*cPOULb}&{6L_K5w(hw~Kb))?Q@V5lpObs)Zd|c%Ra*2p#kt8? z<}HNGC5yq-UB(v%?Md^8Wif&*xBKWp=EPyA=CW}y=bzER+$#z5dWI`zgoml7Za%cm z;}{38m_x3kT!0nY6&`#A$E$Tku;V%a(EW^$UpIlqX~@l?4E|OP+3(GJ+>$dK%jT8Q zqIj980E>6We`(oX+%aKf05j9Vcj$-4yT&5y1uobGL;*4z_s-O1wqLE817(5#a4vTb=rwBAy{DE}Hs$KQtdkwKWA zDpe{gy4p`JzgtDN6=%^PN75Wn@%%h;77}K$mG@a%QwV12(bGQOvZvrvwA(I|451I50p$fKm4CN0Rr)MNPBXn z0j|D%J$ENJz?wL>u+fRFCR*hc*Lu%A(9a)?LVcpRl{bwQ-!*gNdvDWs2{T4 z>5~32#}@)mwH~Z`+$a(=EE8lH6o5w;u#T#@#^R+dW|?8NwTW?3TIq_x0*e{pe) zjOr8vhnuN1SHYkXO{dZ=on|r8?f#E3LVjFXvmRw4sl~43Ih#`|{ol=zTpBb2q}#cC z<>UPTM&HypA9!WR(`(fp0G#A zb#AO-KPD>9JDstPPNm{(%ek_Jp{}MYSVor}6L3QE8bGX@CG^={8^&TVmTjGL|iS79AaU4=@?$zk)@9v%#`9pnHp2Ul>C@KMIZP}p-w9_IUy);=^ z!`+P)Ml592=6csXG**5BG@!xP0Sgh&ECAEEh-jqLFVPWmub{`e7FkKNheIMJ7+K8}B4Rt#b4tK$A3!pT1f!?=;qF#W z3BVv;w3-evH~r^Lr+gW)@Y)tzF4wkcp*Iqm5=;q{cAm^{4T6Vz!a?eVRh_dJkK02= zmbcHzr&gf#5u+VNm0Fpf%?B?C!a9l9Gh~2}Ic#8Q>|?%l4;dVL1CQMhNX+Tte_Kk> z`k~|h9p6Zgx7>)6Z~%5{8NqjDtH)z7MCs>x36pUDN6?inb|Lz($RGD$Qz9?!pA}07 z16{c`5Rb_Cjo!|MU(W6FN5#Xfk!gLYI`ELQ8vsnSY!8ONr9RHeB5p}?ArKu+Fx^|U z<6Mc@?8_N5a<0}3uuGEswS=nPp~p)&_)1?}(_-PBp93V*7S2ale0~GPxI4Agl}nq4 z$ZnLH1UnknE-WZcxPBNH?8oHVzz>6GIb!JL_7hm-UT}}AasZF>@hcFkzKPVobZ_Xo zB>A|4GdYHo>$Z$|v6?~bo;9@hHag>>R>_?-#^)4bftn0MvVY<|H9Hd7Jzk`2qskwX z_r$D|cpdx80{|gZuPH9;2KTr?<5lv zRPQr!?cza}n88?)^3GLHj!;K}k31uD!s&BRTYbOm(SxOf1BmTf^XkZ%+C4TDcpR3G z!A})iq$P_RbQk|1?%#=JFz93e{;Fw#oN;*RW|g0M-fDVdcb;D}i&03a6JN<4rk-QhD%;UdM$w}ussH}#y`{lB)pDVbA!K4|c?^fTL2 z9vyT2qD5hVPeIlUYY9>+vj#-yztQF08-8woe3n|<+g;9!V1}?az6@WER97hcOIY6= zqX`M@WPKY5wMo)?Lvme5imV8=yHz0C7M^G@i*t0wP45lSy$0NX%dV~${iI_D*g&bpkanBilDQSZ;Joha)YWTkWKE}y zAz$~%Pj-|D^{VpYN~1WC4_at6IG5_pqB26P4F6!wPdtxUrt8Diozx%KJ#UPy*H_mL zG9j)Ngszo;X6H(=5vHL$ShtsCiCT%84J$Je1m8eiO&x7hk9@t?4t@*lRr8yt{wyPg z+(0Q&zTJ%oulBGShn;F_d~Vt7q5TJGt1;-R0XU=OelvfmlElDo*a~-Tee6(P&5ktj z=2PB`Ar%^44HFSo`_A$yQgOd-Z7d85{dL5Py-O3{#cTBB`uhs3#iQB?)gzAUiF`A& zB}VcvmX%gkIlN>gLeS2XjZ-%R05kvvK;q$6`XM5+vUjCiDQC23kmLDeKb8{)hPL+` zG47aX9n;Cn{1PvRJeU`GYGC%yavzz31&Ur5RRIu(?q2l!}QLc=)j#I6d_J zc=~BV<=9Zj*B9b)bF-YaY|`cJUOYrKp<)Rg}DEH?i_g{JYR zAq>mJ!&xNcu9PaWEpEWhM-?)C1JzkRQhd<2ls_!3n-ZJCDO0+T1(2OO54}_*7j8f`)=TkvBTnxmr`a^ zXqiL%TJbry>js-F8kyrE{eO~H#v z%{#LxgF6rnP~{C+X*rsxax(fA_>52Pg;7>IOQ)It#-ec+exxC%0m7b!;fPJ-Ay*_NUHjb9Med^JX^x@T;ZvSKN`C;Uw{U;ctf+r@=E%T#?b*qjcAem$FU7Su^FmHLQ6&wApo5L^C`t_Bxn zvs7N?sF43Gd=N0vJ|;{Dt6x~|(m|ylHkY2niH9<@!DC`lV#g)9BIXI&I%~$rQf{c? zoU|8fy{#KM8^AVAI$g!2wtb;N(`>`p{OuxNLLOfOFFmG}PGjC9iX2`>ZtGgI5dy@g z-JSA}FR&-K7T=}rY&hwFZrN4`|ST@xgG0=-s?PI`79G7SNPp4p+YQ%9S1rc{~*z8LFw=l2fe7L-$QoZ z;p+wXI1dpm%1%WWd~eU!pxwo3 z-PCR^-{7^)wTf*~J%$uoY|PqM(K{4o>N&g-J&5B&g^lK2ESKRzd^e3ZbBJ!6%B~-I zu?YZnrpl4C4pPXe`l!rX15b+%H5!TQ`Hx;#+1-lXe3w}=uc8GspQ&{oz{Po$6%QbV zCmivU$21}A+-Jbl^Qp=n=%d|4ysSuzP1~4@eIA=eH4b;IC#C2YNv`N<{tL{9hi*A% znIVl=)k9=4Tb2?AqQ$Qr=cadXHwdHr**tealwqDIN-tyOvQ=2iT1_(EB_H$#sRGRWBwx<{9Cr$Ta5 z`KatDoSDY{)x6&0Xr?O-{+D3uX4mFErq$kNr9xu_58=j}zvi1zN?aHZREG`{RrV|N$Z2!ad7TEx z8@EB8kj*3_hxW0w?xP^o&*H_OCfg(C^L9BcsSFOqCLf+&X9`B4iqu>I#3Fbac}LH<~7eQP_Z5wdeY-X^E*3Si#U!Td2wH zGOL-p`{wN8<(}rjEzQk@IGvZF@+qXo`vNQo0zI#eRa8|Th@FW46dB(+H*@xg_nIJ) z*F&m`c0TuU5*yWHvVMmIDJaOhLQCXUMPR*YkXM`TM3>50?XQYWkCo8f`5p#;)O%qA}~ZlJ+r6B-`J!Ip&2G;q4fl z?yo|xL(u4abA+mtfDepkFFe`b=b=_+w;hz+bf!^33k#YD`M=M%!?164O<0>&_cE(! zbJhnGu&35O(nSfY<}RT4Sk}8ot%6G8b#c)5`%8~AF9ufl1wL<^=rnCk6qO&wM~`BH z7wcf4mDgvSWL3)TsvUJ((W5}5dQ)Ad_~d0 z+qw+5?uWX76JkH@{wHW_$p)!>zOQM&#OvUYEjIg`Mlfv%K8j2m4rUUot{Af@h#B7i zphMrUAAAlQEx-!-R8uW|tvO|_>PkiCRc4Sibxy{F9GP-kx8lhv$o& z2nB=qdU@&j?b#y54A;*9XTTxB@Sf$a`R5w#tKTiS4P~EDTYyTz|7H185MmG_`xnf^klT&sL0S2Q858pVA6K_Q|JFGZ z(m9k*F5c_bk)us#Tq=e|wBgWv!BgkKK?sP~ic6Cgn~5Lj_n0+bi%nyW8gk9YmMX^r zJuDn(lIf&liw%}t@HLYU?e#v`O0)8kuVss#&?bDMj_599UuziwuL{kDo$IxY-W*r> zjbI@!_Mh`qM_?jA&3Igk?m3%1i#g%Nq2EaO7FXf~NfJqyijs*T&pp)wd8T z1Bx^y?5-4@-;H33I-BZl4P4yH9Llh2A*r92f1ANgchg^KBr_R4$j@bezb% zSooWt9166UvGh@1O1~E zZ2WfJc$13^RKzU5DfBI5+oo(PMBypKmk1>BRiDjGbbpVCBM2mug$k46P`uIq^hSe( z8`Yi&qU7yRQm)&RluLoPRxUyz6MQ=Y89JrkP0qPt6PCie!X<(|%+=5gBuO(jHmSc% zL69dhy{tSytf9KKbX^IbzW2v$(FS$m(4Lky(D;gbU8g6mwlSX7?ME~!{;0uqCFhdE ztNT^FMpPAf#DCh*_WU3UX|_BP7}M`65xXrYT5Ys81cTXH%9=I~Yh?W$g-@wZUBB)mfMuT3k~S=$6xyqm#{TQY}DxH=!L;1ZEd0W?{DL^}gvN zgn!5UDLHe|j5)HVtmnzv5!N1!t~m0Zb&3KxJP0BsqxYD!NWqkigVz@{Iw(ZQXPB^dc;v7hIVXhZ+1$zZK~JD)5ulFJ4_gj~NGu-%DS>$vIOKaUpw z@c3og#_$^l!8ztk2-(eyqWp4H0GYrUIZ+kp`3oR);~ykKPa-wIDnphZv!#emtMpn? z-;!b&+XEkSH_If#;;n;rQWeQjy}1B$}V|9Y*ych}dY`?9XC_cMK)-qi*^m zE`ATjLkG|Mv%dKja92{y#Z}>s+h(jOudnI@$gZ=*=(GVz{CtOh%SjcuCy52sG>T{o zGOei@-}Z&SN00Lg9iTF_P>$AXb}1^W=KHsgTo18hiI&JJ)2j&yUrhD53+t<;lTCh7 zL{qXY8*W=NGS?d}UEKN8fx6%wvf5Q|*MUddvcCdjFu`bQ@%?jl2?dUzQ;XMAJbT#* zT+a$da@KbtGgdSA7Z_ks%}jOI^&h2>*N>HRu-w>*i~33rsJH=gyF(*mesy%r+Ml># z-<^mWv?j;-Y{MTa0hJy`E52^~9bxg(t-+{>V~f?|T6}&&i5!N823@hWV}uzA zwhfQR9|zj>gJt=ZX9xagHrRg5gew&*@JBMHic;3VjaF?zz=|^djBN+`r%@X{dA+lk za;#}JImB9DRtZsKjE{^sEhLuiF9Q9e1ls7&cudVmc=@Db?_GjJ-~B@IxrTJWJySg# zWnSr}s^A(+liaChs{;m z0R3~6EPz*#aw5|OjYe>DhJ!b#t?fxRfr6_K=(JVo-eS18`Wf=%lbSO_>@?7C3k$$V zK`#o#SNK>>F$u}aI}q0x`=pH}H@)4HtCPU1<>j(P6o!O4=q|*fERX%qrzZU~Tmw_m4zdG+)k|pf;ULax{T6<8^U<6*VBl18UB zd}4YtE17ED#e zp0-P~#)T(lCv9wMm`GZVs^@fa`DG5v(T4mec6vOLtuLVB_Kp{vHH!J7L$4YE@VKJMSSQ&Jty zCeJ`OVew5XRf!~MwfFp-`6v|yH<96BlR+?Y%>&GoZD#w%qOsE$I+qiln^P+(F}+*t zZJXY7xDn*_jV-oAz1b#jrUJLV-AnQR%mB|vk0&P22uz?uihvIPMV=f^#s7m2h;!iT z5>F}KriXZAi^aN$$d}9LMe`Ql{R-xbs>0^7kKTNJa3f_i5su^eJ#C#$6o9eSo)89M z!HR~(I1lNz)_h-#8f>?Mk~Kqd=V8a-h7TM;QY z4WJ(DrL=ccsci9@2&{i`7t?Oc$^XrblxKNeQuSXljQEzU`#oPxfnnd9Ss#SOm}Fb7 zl09z;0{qB|otf50B+_RoayYKWX}Z}p-E~3vWF_x63&rq=K9nt{9y(F)M0;Zd`QC`i0It9g^=&a~j{=B>OONrDa^g727vHOcP92=?%RQ_X^D zoVH3GTwO%G%GiFWQ_Fr2+PzWJX?83@IuIpr2DbdzWi&H4VgFkSRw2a}Bbj=vqrqSy zG-SuqA9mB*jN_$9n_tTJ-Nq&F;*$Dt`KL+sJZKgNTWsvKyV+eRG@`_9s9n0DVB=D7 zXNk+aE6XBSMpn7m01cUNPGjB{_S$jZGhB$^*tKnbuhfqfLkYCNDOJA%avqA*b>@*H z<%y&X{bVIWwDp>|By+xR^~wUStNNvm-vJqybH;3d@QaYlP&uVRbr&)|oA(#+&Hc?R`9E*#eLQLB#omtL7wdK-kVaK!RTILnxq=Rh4lTe?6~dl*|B> z1%x=qMYH;=5m`lc<)%<6l!^$fmD!~m@v&=RixA&W%LW!`b4o{6(f&r?p46Vw1zr=b zG^VD@PfuSh>X}{84>u^Ud;nf{UcD9JRRUuW_mk&`^O_)$qb7$pywy_;(x;B1$p6>@$#**gmDv@f9<58jr!WBMu@hFoDf;2x1Vdj57ScW7ug>yWL(>2p1IZopZD&! z{=KtpY#G-z8y$(D46H$+V;d>(rU`NqUdi66s|oK}nn;Mk=%rb-z*IQj9Yi*?^10RJ zG`0-gG25=6QQ)ajz)e<<;6TD)cS~AaMz!DTL_7JyvVZiu@du>SDHJb&qx@EBC{{ikm5x?K@ z9jnjUHda%1%?d-I9x#nBvPU)c{ozd7c6=coBw1LjP%N1bjXMS7sA*Jjel{1qXiXw+ zaplMGu2LqFJUJztAP%mOsEmR%`@B|^WehxMVatbY6FCsgu178HF${Qot5j>;(V;gp zl6hgmA89dJpU4K&wCOv(1Q?x~tc~0JQ;FerAy6`}4ztx*TkI$Vczv!qN>NM61nd#m z>T|74?0DBpv~7^)@2>{lxOmXV9;ccZHC`}yp;ltP)%YG%?Z;;BeEGA@G~Jx27#R>Y zjuuWTfc5lOt@h8f^?gcP$^QVxmJahjndkL?a_RPWA5Ud#UK47Sl&366`&EIx@bp(nE;qzU3=1THsSE&et@Dk#>*#u3m;7pbF4cNlcC~Sf-0; zO`0G_?UjV7E=g0Q5{OYpU3v7~jEy74k*b10jIm<90E^eH?w!)XnphJW2vSstG_pz< ztCdq>&xf>Yh249-xop_ouIm&c9ZC{N5U@QwB)1M+n!a!RZmN#^ySrP7TGNlK2LAw+ zv+Xweo|Ub=jlJ4UYO1R+@LmT$7TYXZ^4+152uiPM#p7mglX1xK>8U4~ClQIuYPgIA zKpYnKt{dfZ=@qB7VdWjFNiZFx6A5K>3vL5U16Xbb+L+Ycgq@xQa>#*Uh~+Vqf&)m+ zC_FF85o-s%>T>0$r<2Q()T@HwB`nO9i&S{|c@nBFjXG3ZF|iD!n~f=16Um72j>adB zLVdDWXdn(2UW4VUc~fL8uP(4ug6QZJi&#dcVH{0+b2?EnQFH_7BE)n;J$Jj}adwyaff8{!?7VtI|IVaQi$x&vamYwoGXJ zKx=z>#dUO4*S}xo#Nhj`_qEXPHG{IyyZ10UyvGf#$Apprz5Hv&vsCc28{F}|$>H>^ zR&!lQw+?2&={~+S6abkO2p|FB{{YKhS+=6H$oYM|Hva%_1^3Baw`tDYTY$%b*?P4R z?D|c3QDVfiab_g9jPW(=KZqHB1>ID|Q)kYZQ2hk<+Pss+UpMzn-CL@?@AmRNzp!ma z&hGqw*?lYecK-m@M^Qy3d8fD(UXam16j4P0bD;2}jUnYyKwg7MdM`i}UXqFdZ$%{( z2h~U|(N96gm2zXf*vi3m3*Nw9t>yQMEGX7l8p_;_dJ?-12s$NEuAabhwR5fBIAg;Z zr27P3^#(6{vGV3vqc<#UC=R7Z9#v)$?Z@7Q*6Q9^PvP6S(sRkTx)x2?)DDn0F-VK#~~aLTH?A@lq?=aAm>#i zSk$tS?R1LO#njI0YmGeWS+MhPat8zulh6_YGpqRRFztPE7go%~>%=T<~1361t!m~HWc$K>$?$tiUBMRRTzBFY^__#67CtMD5=Y0Z8`es( zyByIg8hD(u;r96rEN$&-C5MLfqmO{>)^-=@tZY%0@gmM{%c$0@2QEa_s^<0pbE?~I zPZCt~G?Q(UPJnM$QwQNyWoGBmS1@3g9uX}3Nf)XaIYv@XKs*OkQPEc!25$8^5#2rN z#Q;wjGBujq>tiYtkgN|bgIRONF@mY%(OPUysd*K?QN+89p)lf5Z_kgGrJI9~B{Bj2 zQZFyApO7r;;uVJH&u;U2e5<&a`=`ZNa*N2`I@{*HI>eWRjpM3Rvo!X@{%;I_)sOdu zZ*Nxn{{S=TrT+j_S3R|#^VomRPu>;3z2E)Ane@~5MMa9TzE*UL-lT(=4;b^PslO4j zAZ5ah{jX_=9!kyKm`C1&FU@$*nMGIceq1?uSjtV=RDe8Yy*E$#ZTySiaZ=CRy?>bG zbEl3di$pY<%E8DoI|gf>b+5Z(D8{w8w<^br8E~U%7!hDtp8yx7-Kz~`u{4C=eg`Ms zY>wM=Xur;O5=OJ>aPKBTLv?Yw7~k-?jCZW z`&VzOP9A#43S6qMHXsifHmyzCM2z+dJ($YGr>sQ0N9!84))l?G67wm$F57in^*-dk z)XZS2bgKsgq*8dPE;^|4Rz}D!XrlDABriqi;YSJpy%(c}78C-n5(iyu?Qp%(v~Xe< ziM7KxQar-3(L-L~@V6@Kc9^l{jwv4oM*-7U)&XN0lFe@o>kg*+Y2I3k67;)txe>`6 zc+jik;>|KKnAzi*!mC(xsOMC+sT*g>ECwo=)?(@yxL^QFbFuJOM}}s@%qh3+aU73{ ziX3^J^=edGx_ey=Iy&nYB=0iz?;aL9#;Y7xMN21ZDQzc@K8o}9o4U0gl~_+3bMZB{ z5Y}fyxa4A{ER*foxNxjd7iR2BNU}Prl;SvmD^t4Lwx^XP-9*@j>gS3m0%>GXra*c) zn&u8}>gF6rF+{&~oUNFUu-oSerAD$otyu6n?dkWz48xHvqml_Y2&71gflT(|o3nvdBMNrG!@^M~wdGXRMdQ58&EG&5S)|9=j z{T!jJxpGWfrmb*Xa>8FV%dq1++m8lL{kLPuny{F0NmekH?86rJoc!9xI|g)l8*(<_ z@nnf4kz$H7^{P&*qYq}<2bQ|-@VuEDhE8H<$cUKXAV_22{?8bk+uy$`k`zfJ~i_`r=m-1V{d92(Nvy1aP27L zWMSlO(qkC%^YSvXOV5JGvr+>W)e$13+?-0BOXxs7@2bb0XLUiSL1cH zOT5g}?ilEBnRgQ#Ou09-bGv&8!%c#*2c0`>$j{8nmF2{P2RaTBQdjS0m~ zA~b>l8tQLrgY@v|tv%Cai#1+tvSvwLm$ZjbRj_Sr2Mz~?H@O7E-G$4VV(XV9$`yyW zpy(iQ7aq-D$#{;D1d~V+PMtT`$A!m33j1%iQSEHeRcUcKVEE#XhU@pQZ@KU8($MQ= zML4IWMk~CVyBM=!?9oM(AGUXQc-@I0vvLI0ldR@Es0$d;h(RWwXz&~e^wqfjt{BmY zViW?$nKtHXtcw^LwKkVv16-b5YeeSPaq~}c<}LkOmff{;v$h|BVlFt}Sc)|e1f;2J z^)Va`N4hJfB0(8aW|Am%=q|QqyIoe@0;P@6#t;BhlE;;exLnfYO_c;h;%U~()(i`A z1BU_5vbxmt^KS-iv%6n^Y3ZFVf43irkp?u`nYoz_40yrA4PY?Wb_;T?$mw2+!0+_& zZTkdUR!&i8$Zc#~U5csXw&ldvTZbg`cAdG?sD)*29ETe(MR}LvX6dVVO}NRb2vRh7 zO7x#>kls;P^{(4{8fD65@R#1vg6%5d$BBwES{WKR zRwH0YP+6QZ^|REOM9(uv@DpjtEd&>BBqVxZPId>}HIgDZET;l#<+a9WXRfy4 z-E-lHV&!AclNllf3@qxXx=2!2o~EytyZ)&AKZV^=dccm~<9?htl_ZLnkl z!&=KViYfx-h}G9w&$P6XE>q-VLln+fL@%f+pKD40ZoUy+7T*-(@7RIE|FtS z&Dtc=5QC*okQY>FK^hQ=U~R4Jssx4QWmxQWkf7efk4qkbT^{X`lZh^zT)c6Q*rGe4 zA!cSToh3z$M3}I$Irxwn3a*ljF3xNhjdj~T+mk+49@_)5 z<1A+h18l+42F&ac(!1+LqH zALD0^1B`(KsdfiZ(6%GOE7$Xa$EFZ&u?2`<^hLUEE9gGWS7&X@e^2i|bN>Kg+{0sG zeycskyDNhDnHevtKnWw2_>er!Q(&UWAzKc2zYoaOT$8QbDdk{5KllL^tF*&;68ARd zP5%HYiuw)9Y1@5>@i%U(w&CSp;(7PtmTzgg;q9n>oJcje{W*C0g>Ztkd(WPCKJacC zfZZBqSo{c{!uqQ!zE7&Yt^2-CJddvXe$TVf>}|Z&6Mgo@{vkI@(>Bv-!Szf?5hPO^qD0&M|g@cAu9#CXq&i6IO?i*ug zWcKelz4%-5QbV@P(U~MCmB$*Yp47q-s2ke+Yjvrl(km%(EvDA7kF_NDMOea$TpWd# z3E59B6x_TohK*lQH}KPNvE<8tV2}k`Z}gF=9Zoj)osB4zPD!_dsb|RBzFD6tOR?a- z0a+P|k%V})=`nI-lE$j$XHGoHPm$0;3_ywXd!EH~I~E*rTb8m-!8LN=(cI;-2oPJ1kBX}ex&%>m2IBP1{{Se*oKPD8 zM+#({m6a|>D#H9bQEUvo&qNMUSEq$wXOQJaf_y@!?+){!&X)k*t6}baydb=S{z|^p z+G#}hl)BZJPl=J53Ds*S(f&p{(BGk$@{{(9qa!9`W&J9Y5StN{iJ`N!~Sx9^>jPPKkgi} z`f2;3p_OGF>_RtbU4Se!oBsfWS0TOUC&otM3uqQKzuq;z_mS-p?r{GA2&^gbqjuxR z$6mT$@X@{%UjvGt_S?OgnS1KZr9K|odQD^Zk9Q5UO`$X&a32eQ!ny{+i(epXi0{1W zvO|X*fCRe%;Ne+s*{!_(X9k;C?nGpAKw648)1ipXG;j`bFi$zPaYqh#9Wxld7?!g> zuNw;+kqBmxew3$&?24yWcL`Q(>D_(6+7sxfusu~;!mWI4|#P{<9h!G(FZtMw$CX*G+=Jy{zjp*G=n6|=E(e)!aL)(C=Yi-~7G}+cvS1PPlc)?8`tT@Q;ij6TQ!HYQjOH6(f zA)^4<4zn32mn)AAcY6-)7U{R&V_Y`lw&8Z&qRZN4 zc4f{yE(&(6x}0k3Wo=44m8ION(-*sNcOGSHO*X+p&$EKhyvd(9Vs3a)7(T}sI|9pNbuM~OT}MB}=F1G* zXBb{bM^fJDLGHH?2Rhh>92v55w@g@@veIH@VgQVS6zLjx4Jla~_Z$eNmLyXX!Kr&k zm9N`BNM0PeX?~?`($`hfZM~;D-VV_0)N?Oho|kDSD%SlghDpiCVM)1U&APr;Px)zP zwoD-;Z(&atKo{97YNMNj9!B?(CN|*mLywNJpek1S6fTw|@M6zh4h}rA;^b#Mu_kUq zXoocrlBh@^N+f$~=GLA7woho{+IF3e_Y0Ps3?+)7T z8MSIyxfN2^!bs$16{6F*TP3vXcGTC^>aBRC1VdT8JTn&}eCLDi{l{$!WkVFwdn9SQ z0C=s|=JlVHGLlF!J`)-lw5rDZG`T09vTf7Ot!@jo=1)A2laVetMv@r{rK8XSh4+c* z94fZcEMFImx8*?DSd%)4!kZOlI(5XrczIV(PqAw{s?!<9kk&7hzrd~Tl5M;ane0cg zZP87KvS4E5vL;GGq4ZcLqsNAU;pb7u9!!(lw^-R;F(TRQMel11X(z9hThE9`0zk3r zjTA(L0(cK&h+bmc>Z}$=v0VOs>EJ>8SvY%t6vMaO}uF zdeB+KAju@RMq{UrtJ{T^vmnk{ot|cGM_ETy7f{Sqb#`QfU^$al+O3tHqf$ygfqj)1 zwYeys*Zd6}Hj-N;h_+6P+=J6_Ys|aFG@Fj$lR9oV(qcs`Bc;HWHgaquV1%`T@-^t$ zIb#QF%FdTmiv&*U%D|T4U;zV}uOX9g!_0(7F2>!de$(P)d3~q0o5`RkJUVN~`^>u1 zwOBjLjXbmUcb`H30IpFz-luu+Roh-TzkzZc2)LN=Zo?`Fi!|twN!n^-tA?E{2vxP} z!sFo_h$h?ve|91MtaarU@yvSLPPrBx>Pv}koXH}ciT z+-2_+dNZU=w{VoRHd>$Z@+?cI>!Swfe@S?FE9Y;wxjK{d;$?B6WQj(pL6BXDTiA71KZ_FOoCq@Tm$uEA%PhdE9R;+HcZjx< zO(;^V0X^dTqC>%#2V^-XIm37jc;;pM>p=IANLel13e*)Ao?nZsue0-shG2j@O z_>myKqM|7Dn+;s=RpstX`d1!ozQFb|K+(Gn7CofITf(=`>LASX}ZuJ$Ht4dXBswkpdcFE%X z-|l<8KK(X!T1nGYo35ve!D4ZJ*X~9>Cg+d1H2tZ?b23IeL@8s)*J+W4jj5Tq^Je33 zEv;8E;>d;-f% zdfuaRd#Ri5YILfs#-7)Kl@8DyqmVMPxz+Bk5$Et#nW7lDIZ{T;6pb4!Zrl}FfmOdA zi`9pYHDIC7vb;HybHk5@vb)JFG2lal>drExRJFi19eRQ5u7zvv-nDjZS>xQXW-nFu zX}79%S$+qQ?w!=#Hi%AML&YvOprUw~uq@X+cyO$V@tz3`OhY&dSw}IbYPFA!y_!hn5wgD~G!Fnsm*Cs5PvS)Y|qYCoamTo86jC1hUhxaY2?C*cZ+*vl$ z%^zd--m3jh-Swq3zKK~pC&M#7ikd?sq6UltE~r zqe*07s{E_am5wU|fhWnGQh}E4`et`5>yyOF?Ojc^%%h?~jC*N7EURnQxg!mDgBZ!=2KyixR) zpcegAm6f}|R!HJ;s9kS~Ty=$>#sAqNR8NA{kf-<7_=&JiRC)S${JULd*TO%UaUeyjeEK(K#ozg6T=Ksh{)n@eASNg{{W5mqV!&)3%)Wr&wVUM z5qihS%x=yhaW!pTGC0)HFA^=t+S^C@2(8w6)YB3i3T_UcgpW@Z<5J2l;<pKpeKe{WP%tDe_HzK7?`B~o14vIHe>Hhec(Q&ccA2kmp1|^PHR>Cz>y5X|DK-EfK)rb6vNW>1 ztW)cL=Fm#ceW3y}FImNaiD`c~4ulT@nWeOA{qa%`DaA@pM! z+tNj4Pnv#|-;r(4mOiGd=bzwI9JrgFlSSz$H?>gE)q+Uzwy<24Y`1a<7dAnqeI~NU z3cb4hT##Zf0gVc&`c3V(uBckH+-_BVl^#4ywpI@R09&8k_zOkpD6Gvz<3-IS6aw7R z-kU`L>(P2`9B2t)C$v=-I+$D^0jmnRB(o05IQ*icnW|%lA2m-J!r2g)zL^*nBHTFp zRa-6~?KW3Ut8$MQBXCB?&FsS!V5_JQM6;=4nnMSkUNxU-Jj1yxrY~ z?5@+t2GdpbS1&Vq*+!MX&{^>$iDA%tEyJ_>(JWg-PV8}~L2 z7I}pD;DuEz`V`%PC0s4VM~j=7`=(?q?8O^l;gX{E3ulmv+mMXb?ha<))Aso<@ht>w z%+fm9@vNaG14-l$lCa!&+G(t!T6WG>1(H@@gus{^ju4QIzX_3dIfr90V)|rHV^0O) zV4N$e7+dsv4irdqWHGas2dAhYCUGI=A4+Oia9eOPlm@b$6~5Ylu2Vbi zFOI;&895T!RE1Cgv$n1`;yG2=^LBjrw=`vS_KqedOwDE0Ft=tHd#ZHWzO#32r(Ml0 zr!B_ZeD=_qmUz2#POgpT{M@}oSa*5wFlNbo_^lVy{4{vbI*fq$Aby56=pJomMM!Hdqs#KpV6v^zIh*ZX2FSvAHxJ` zCdUeNmy$q>r1Ws(SpDvbyIYpq`Q1{FO;zc+Wn3eQM&ECvO=`tzZ;R6EiWoU?0Tf>W zm6MEYWreP)#Bl`i9D1u;yb)tZkK0AI8KlS!B9Nr&Br51&x3j1wEOR7IhW z7vcglMC2B9kTDi+HoqfT^X)mClu>2l?l75@BF>RW&D!fE_K~Wuz4MfK>TRbUMcrCi za#~Dt+DVZIWcpcS2TvC(#9M)`wY5u5s;#8h|YfoU>w;YY%ZI$yN$iL< z+S`=T=l#cdu9taMWzyAH^T6$MWid&2kZ58{uM!Uq9BwqXQLLPZqHS#(nGmw8ppQ`j zMgFlhb+^2=t0pcS`9YQgBvKM3Qv8#oTHHsfvxI8|k>qXo$k3MdO9p!aOBEz>928po zE7#hDp-OPGgujXMdo-#`)rMFuK^9If3X_grd~HqIqMiy+Y15^NDsR>Mc76{1EO zn(TO*BmUXd!BWB6Bw$r zki@-`SO}RwwvqZC&pLuUJgla58L8V5W`U(LDJ<8p00rc{DttT~h^JVl%8eveAd4M9 z^K06}%qlNx>3*uFmP%e9nU(0`D;U1)NjJ8gc4-zlRyUcFJx=P1p^qPE^mw?}o#)`Z zIE@^ev@(fYNYT9VPiWA5l7h}IdMmo`YVA1?V(t04PaMA1Ons7#5)~R0YHk3MYk^E% zw{FiHU&Bw45R*irNkXc(Hg(dsRu$m&n>XFuR<5r~m{nNUnzfIj`z;pNNVP=nS=r;@ zvg{&{A83bZ4*3Tr9NezL(WBW`6zwD_+P7I8YLt6k1h|&i;eXI*OAu~%tT#(8#fJ&DS4js{#(U_*yJN}l_>vrX;fBwM?6JwJOR-h?)wdQe#UO6+?hv|9 z?&kbMM!^w*q(L6Fm6dq8HV4~dV#Cp2Q_yW_*;8FDsc9s! zd7l~g9sdA#tlqM6s`M`EVeyl4A7Ui|nZljepiZ-un z;8=}1!W8Z%toJn;A*?qIl1necHh5_Wh}qZN%>Tb-DOK&n_cnWk-yXg)GY$ zSzLK+)Xb?1WX#2elEf;Tx3V}dpjONs-N=Ss)uvGG7P#ScD=0HJWgetGWZ#ABIk2IP z{vJG$mZ7^a5Om*9BkeC5!n>4q!RpeuC*pc8t}@J~VvV6Q2h(N<6pjRueti`SD=#r` z4@GNk_;}lKiwza!(7mLx2U4Nm`7)$4g$mQN`v)Ho{A zRIG)hI&`UK_EZtlcmYI^OA|7(+@UJPeW7u~n5*hUK^H17Lo0v_0s-Vm;AtvAQAHF1 zMHG|(X@;C>m!La|Hcip;QHDEd3@&`N(D#dO&C0>YjtGk~TTt>>p+^#1+!ygws}kSb z2gzOD+DWO*;a7M#$lzaX%A33Ch1r#ozz}LUvGDt|gk)i=ay(?3@A5GOh(Z7xpbFzN z_KntQ+gx3ugY5XK(3UApqB{#!^TQK{&dJZ+atzZ32oJElZEBYRJ|8X_=7_pR!I?vI zSmnglW(?UYD?-uRM>^P9ZlK$ZD{LWf7Fd^htFPK91(w&Q1_iX~ z;(DsmL64OAv&pDmhbosC<)|9RPac}mb<%i?Q=(=R(4T=a*kF> zjytWdQ{m*9q8ho>Z-!?CH4$UBIIz7%RygDyP<7i$BX5f4{7)Y(U2ZSrsvAf@c0qp+ zuCBkb_075SIOc6kkfd6(r5@W>nI6gUR&18kYKXHmw&8rNKjz2#!nb#S@0ov1JwmW{ z!~Sm%`LX`+tkMU*wCDem|!3CT~zpqrbVJAO;^A*&mFBO^KpPZcf;eHHePs;bt8-SshM z=6?z;3G}5pN1~f*Zl@)S?pU$9+S_r1crW*0irG_~jG3qYBeM?`_h* z_Y6+!{pO6H8$4NtCdOc6RWXtP7qK^8HZ`ZW?)zhRn;#w=Ihdj|nIy<-1p%caN`Zcg z%h@CNluf>P;Eqgoe4V@rL%T_&>VONA?eiWQX2lj%o8IM<9y=2RFB<7Wc%3nIcnx|V zYufiZ-JP3W-kT)-aGhtfnnyoVZ96xzOBDEa9nx>Ol5TPD4}gVXT{$63T^J1t)*mE} zH0}0Woxf>!d>DyCXzU0MRB4|0dA!5_pQpb_a@(Q z=G!nAIL8c7Ms8+M7_lzIaXu>gt@^6Cst)`A%L(e!~9%hOOq)dGlt@+lsxm%e7_XK$!Bv)6N<76_QtG zj#SbQw6-2PnoXl?+oSIR$lY$yc3XS)FgdYjxdTxbxQ?a9z}lwYuw+SQmIsPFcpX&& zE8`-w#Qex_VEO7Vh}*Y(4#H%7XUNN&DtRPpvvw(@YSITw*jF0eo2RPkuS>iog|%v& zdySgH8eN$966}-rb8p5;CCSW|HED7c);Q3{%Ay5v?H-rmQTz_sizZaF8ALMTr)7}t z3P|(5m0&=!sSC%dspiRnx8Xi3VK-=z!wFY$??}x%b?~*R-+qS!Xc$qPV7Xxj%D3p{eWI4X)?moE{n zmu``M?#bS8uplrq0SS&TtwtnWTUGduzM8|ypLc^Dmjf2*5=sH=gIO8-B+%{6J(J?C zjk7bnINMe_&fykIw2`w%7_sQ{SHIA1*Qj>fqN20Xt*ddpO1+1f*H=Xn#}^nb!&3)# z+|trYr%j1T7%C~~(%n^fq|=FK!?S3`N?s&Ol5;@m3W`U(Q zW|+Q$N4Rv32B~50e+X5VI7Z4$nm{Z#a^S+fKk*jjUG}Y1<{?$a92w)^qjRdA@O8?Q zwCcw(S((cLrHQa1Z*(^3tsD-+HF8U~jFt?MPuZ0tQP4f}#<|>F?Y}NLGO;8-6^|CF zagYTJZ^7di@baS*cgBkgwpiZayIk|ME35b3u-w?as?wEY)o@8e&n`u2({8ITP9KM1 zykWtHO&QrbC5SUFO|HB?uIxw)Q)2ELd(S2&Ky}EDJ4KejTiZGp+8*+fdDlI*ZxC+r z9ltse^{$Y`JGmzI)^B>z+NOhV#GGVfv#dZ<;+rIosdD3xXfd0 zWQ4SG1uu}DyBLD73uYH4)z2q+J|a1jBW-E%c$L)bT?~z;@tZBUbXK#8u+A1NF+gC+ z%Z)XJCfN9~>weK#ohMTo^8V*v{=Lguws=aqRduSD&Kw@+O@~G0z!Byf3?i&-rro-HKNwPOg zwq0276t3`y#+EZSgwB4;p0al?IHo~Hn0bejaZ8=IOE;3n;_)lWV*xH zG7}jN+K&cq1R`^$?QqABlarqwP%i{hIM7AQKh>z?&x=%VHs6toxX?t=Oe8YMj6$r9 zZ3BnNHM;55?5NwlR+T9#@znkc5;el)SXeeZ#>HGXvLp~Cn;5z)tMuEkxC$$mk3j*6*|BydSIrx+}Vq%NjoW^Mx9tE%qiRt9v?9m+VMcwBZ9 zA`827D&+9$_IMHpM_pQ&Q-f0xC&|-l?dr3O*|zYUc#U_Jg4`HS7uIZ0{JR^T6o)G&1dK~- zog-eg9@BAaH?$3^8Mgek1bk7N7LqXKO^T#rTk8qL6XK`hO6DmfGRBNl0Ud)vT2|-m z*r^IC@U+T{M-KBvu}e6!hVjdS#IUT{Q3H=4B3?2&@gN?%5pNw#k$gJIGo4C-q$bxE zQGZod80hPx8hPWJQFe&?N_bcVW*+YzRW{+6+kVq5vSY~3+F~j!taYDw76+1pSnf8I zQB1#=D?c)?rmgoWwOlKEBa~ZFD}FF_R@t~uT5%_j!2^}YvJYO zoU{{d@Fn6Zw^Gp#&NB@9t`4@p15tN>18mIPV9bVT3>eO)WtfDWNd$t9fUKOa#-qi@ z++f>WECwdblq*KSG%m3XPF^NFF3rqUv9}Bzo_B4!c;|cTjwuIa?VijsJB?P-r_Wrw zn`)JGt)kXyiPh)9wvAJ68(CwCM|Oh`amtrBZkeWMnStz;yKx%(KUou%^R4Qf85rLS zotR@Xhyuq9b13Y!%5;xlaaL6X@HK1%fc<6!N^zt1C6_4nip|nA73-<@+=yY?w%keM zf@$)DXHPybw1G+N;n%B!ognk3S~j8DT1m>CD;JkwnVVpYJOdQj3oK9Am=&fm$!#RY zE}>uPTi&RcX5->J$Rt@ZWYRg=l|8l~jt1;%z>aA4%$%HQ1j#$BKUOT^5O$BLIrGvu zRrA}O!)e(a%#dQjl4eH3Qiprw&Eg?!D_b~i!f`U6DyjJ3Ld&(7`GL|z$0}E_MMmn@ zeYYh~gw_X;7V!Z!REP!5a>?GjVA@NI zo&$|tn|_BG7D*bxxn8^5T+za+`5VDS?@fTFL$F(2dDc(gQH*bi)$9>_){l2gc~P|L zZXDcH*2tYKwsCLONHGV4&01m=r*BXY$z9MXu$RWwW+BSrvy;I-7t44S{!x-mw~lvoInur<<(g`9@&MD zmRcp!N#bjFawZ&CWCe|nE_Dv*Ivflb@%(OQjPa=A#vQV@vupdcrL$tJqas-@9mymf zih6BvB*5JBrq!ur*=r`4&C&%BExn%zs5YE+E_EGVI@sJW;+ix=ejQZJw{M0ACiP_N zp}r(zCRXhLXVV>&_0>pmi~wslzbfc6F=3K_7fnNxjQ|P=HJi0yv@IW>Bq3n_JVtFq4Oj8h6Md(evA@jw&1;e#c&YJLJg@Drt#$+_lCot|T-6a~ zXl;c2W*z?kiy!X_=(mCY0KR3Owoly^&+Vi9-X;G4iy!X_>9<4;yyYL$Ur?he^F}WJ z0FbM>&V+FRe{@$1yC1J-9DuI-e8r9TJcnX#bl%<}TsL~w3=Aj8xxX8E1?#@njhg=e zO86YRYyMZ>&n4cnJ|lCT@4-%m{{Rh8p`5!HZY7P+mW$UR)Lq+8X7lBLr-hk*oBdk; z^-==Dt^JnNPs+)f!{|gW`^{9rtJ?)t**<1;#@DxOe{cGWSLFJgq7?aAQnZcqWA<0m zR4#cAXP1tz?zT*bu|f86Vo3i0#73s{no|ne-X3E3-j(mS_WuB>LW(G=mkKFppc0B& zC}K$Tf?p zy0GvXadbjd#0eZONvcF)82JyauDACj==WNy?xuKK8wz9s zYlbjNF0#STUhiR2k!V^?JW23FR$)W?PD zUE6VZFtIxfXz`_aWmnXQ#H0aHc-yR-R!dL1)`#kO*~iMiiD!*-SsK_=;rEjU6w6jQ z@XT2XSrMZ|xmgX3f~xT9s=H%iHscHSXjMzjNs?Iz(hJ_opmbJ#-@We`(Y9POwx}R? z3INlpRuKz;I z7-O65M)u#Hxyv5Yl`6pzV(aXk~rjzis57uPMtgiQV>1U(0UDhPuMG6 zg}>A*tqvBxrVe*xwxbM~w> zjAmkFNiHjpwhC_>9y%PJJ|ojpZ5ssbk(G-fB6SN2#1_X{I;<{5Bt4eblIt{@fh95^ zdj(}2G_YIO(JjhZyX{@t+*18@^73a4#jQn#p3f2;y>J(_LE3iC$YEn9k7-XMW#L;B z<;9hSGkgj|kd}leL+gIg*zxzQl}9HZX@)h-!Yw`_y}@YrA60A|j zqB*A^Esmx=l6%zox2))UwVgbYo7pk(#~`}Swza$#sxnUbIC&ou77VwNJY=xYjIoV+ zZNznPs(s{nG4@Tr1G8fD$n(gdNg~HW^7=JR`|YiZ?pak?KK#8{KKu(;YIiGD`ywrl zZ26isFueHFN}^duG+0Kvqc;G29W}k#Z@4bmrNo%4giKD%p(K|j&jJPPS63euaywIQ zxQ}6o@C!6-z?j1KxUUBJ!qh@NF!6MavIj>jb&uw$(Hiw zGw@t-7-5#Rd#*f94rCJhA`~JGae{NxjJoitf;bf+>Cs* zk8owo$WVb}h(?SRwJ=>)vo)%_JKL>Wa|Nla6&|Hl@m9l-wQ8Yq?JVlra&V-FE<}qi zc0%(jXjw#eBI>9>Yn~)jFfPw7NyErO9yDe%w`j#x7ggJeY878_$lGy_9^a83Ozi|J z(#Inz5b~2L=whwJQp34nMFg!T-tuBdrWVO8{j5RAHsS#2^4Dh8?bT+lbJX6LX)Z~u zyox%hh*%c>^TdWFgEI|e#h2QPCJ-)d$cAFqw@RAmHbApHA!AuE)f!_m9=n?`1A(&F z9w(mwufjtPRt7_=DbuMLnAj_+;~UpkwQq^Hu1n)Y0JT6$zrh|u9htxdQ`on%qWq0} zJr3pfZua)7+jX^{s|-CkJf0^PSzSAG&7^c&ZttBb>8^S$#$23CoSYa(Y;?l09ZYWLTWKY_mz7c7em+e0IvHLS zNc91rT>!Zq9`QBke~Vl0wdvZ7UOZPcyYoD|bm`X>EvS>M!^?DX@R*~OcwLU8t=iTh zjrc7|DaOcA+DRNwB#$5gNm3W;(}NBjJgc3?ihPVN*D%KsT|?s8)DTnzUeS2piKucV zWXpmG@|Uu-Sn;}QD#ZKk%dV^bJznLa@ar=euTO6ip4}zYT3Dx&?>hvH#IR$BU>Iru zSPy9R->S3w&%R+}yc!03o@G^HvvT-%caO3RzEn!)EA*2!4?Ha?`tv4sB)RL=duTQGkda#2|lcwCR`?RT9 zF6@L|fnPE_?Vc6L$Ap<$IX#Sshy;aXW5+d?5RCL%{*CUld zwC~vGA+mB{w6P0}pv1}odtTV#uZ_Gl26D%~O0wp~rdc>gxnd#g+T9aH!%q(_c|B*Z zfByjJs=YSUYH42I7`Ml;`VFMjR+&xaOO2Zz>nwYAeq3(ywx#R?@or}NLV#>N<+q5_ z_kD(WCZ)=5*pOadt5K#fbSrZujg5G_)!X-Hr`@Zn!%Rw-jiGadb*a;u788jOOngc8G>Bt`LN1aGx;a+1 z-QE8Hhcj;&(#dQzWAN({9i)X$kP=oLuX^U%_`)-ZCuSzU#6vSHBXPC+F?(LCTUOh% zTe~W#(~3#F`>;r5RGQ46YL_2#+^{e*;~kijQob_wOpAWfL&KQTyl+?Ed%??}cig2D zDr5(SJh-$85Kh`uc4EP-i_e{@yF%@d#kp@QWR@5XI^+9768T568YDJlI(2a4RI)J2 zU}HtMr?)dUL%_^`jmu{vCHtnRk$cUWp7vyxBdwmwCZX>;OIi)fZfl3Zz5Hw+uJ z(2`23@%qTy+FBrkD{)MTapP6H1t;AEbLqWW+Mgm3o0807m17Yr2?97~JhYB>1C?Fd z-DJmim6h3?-bmL?$mwN0HPzGA?(aHZ6qaku!>QbRdphfzX(`0QeV1}y`D(-TT~Fnx zn{C_|o;&#k{Z-WHUTWMrEleY)ReC?-Q-fy;>vuS+`80BEi;}+dEE5dP?Y+L6I1$wyp#NYu4`6Qk<k4JLbn1;Q5U)m9?k)-h=DEIPGPySr

E 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 E7eFp?Bme*a diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/image/logo.png b/Andrey_portfolio-master/Andrey_portfolio-master/src/image/logo.png deleted file mode 100644 index fcb1ddc518fe997451a7a31e6d166786b9245476..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95467 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�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 HF6w^)tDVLI diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/image/main_picture.jpg b/Andrey_portfolio-master/Andrey_portfolio-master/src/image/main_picture.jpg deleted file mode 100644 index 5593e2945efb74adbea78cbec29f836c8f4d8440..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294170 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%0AA`44YeA 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

Q@G(DB95B)9+6jqkddub02!K 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%0D+tJ+h-)Gk>~jeCU6>XNIXviwoinL#tHu7?-3 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%0DWhTtKL= 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

SA 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 Vs`91mZ$c2GuuXM$RR}^K|JgJ?k<|bI diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/image/my_photo.jpg b/Andrey_portfolio-master/Andrey_portfolio-master/src/image/my_photo.jpg deleted file mode 100644 index c9861635e1bf13bb0b1c18056b1ba824dc0df378..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117946 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%0Dp1#83 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

").prependTo(this.mirrorContainer);var a=this.$element.find(">.parallax-slider"),n=!1;0==a.length?this.$slider=t("").prependTo(this.$mirror):(this.$slider=a.prependTo(this.$mirror),n=!0),this.$mirror.addClass("parallax-mirror").css({visibility:"hidden",zIndex:this.zIndex,position:"fixed",top:0,left:0,overflow:"hidden"}),this.$slider.addClass("parallax-slider").one("load",function(){h.naturalHeight&&h.naturalWidth||(h.naturalHeight=this.naturalHeight||this.height||1,h.naturalWidth=this.naturalWidth||this.width||1),h.aspectRatio=h.naturalWidth/h.naturalHeight,o.isSetup||o.setup(),o.sliders.push(h),o.isFresh=!1,o.requestRender()}),n||(this.$slider[0].src=this.imageSrc),(this.naturalHeight&&this.naturalWidth||this.$slider[0].complete||a.length>0)&&this.$slider.trigger("load")}!function(){for(var t=0,e=["ms","moz","webkit","o"],s=0;s=this.boxWidth?(this.imageWidth=r*this.aspectRatio|0,this.imageHeight=r,this.offsetBaseTop=a,t=this.imageWidth-this.boxWidth,"left"==this.positionX?this.offsetLeft=0:"right"==this.positionX?this.offsetLeft=-t:isNaN(this.positionX)?this.offsetLeft=-t/2|0:this.offsetLeft=Math.max(this.positionX,-t)):(this.imageWidth=this.boxWidth,this.imageHeight=this.boxWidth/this.aspectRatio|0,this.offsetLeft=0,t=this.imageHeight-r,"top"==this.positionY?this.offsetBaseTop=a:"bottom"==this.positionY?this.offsetBaseTop=a-t:isNaN(this.positionY)?this.offsetBaseTop=a-t/2|0:this.offsetBaseTop=a+Math.max(this.positionY,-t))},render:function(){var t=o.scrollTop,i=o.scrollLeft,e=this.overScrollFix?o.overScroll:0,s=t+o.winHeight;this.boxOffsetBottom>t&&this.boxOffsetTop<=s?(this.visibility="visible",this.mirrorTop=this.boxOffsetTop-t,this.mirrorLeft=this.boxOffsetLeft-i,this.offsetTop=this.offsetBaseTop-this.mirrorTop*(1-this.speed)):this.visibility="hidden",this.$mirror.css({transform:"translate3d("+this.mirrorLeft+"px, "+(this.mirrorTop-e)+"px, 0px)",visibility:this.visibility,height:this.boxHeight,width:this.boxWidth}),this.$slider.css({transform:"translate3d("+this.offsetLeft+"px, "+this.offsetTop+"px, 0px)",position:"absolute",height:this.imageHeight,width:this.imageWidth,maxWidth:"none"})}}),t.extend(o,{scrollTop:0,scrollLeft:0,winHeight:0,winWidth:0,docHeight:1<<30,docWidth:1<<30,sliders:[],isReady:!1,isFresh:!1,isBusy:!1,setup:function(){function s(){if(p==i.pageYOffset)return i.requestAnimationFrame(s),!1;p=i.pageYOffset,h.render(),i.requestAnimationFrame(s)}if(!this.isReady){var h=this,r=t(e),a=t(i),n=function(){o.winHeight=a.height(),o.winWidth=a.width(),o.docHeight=r.height(),o.docWidth=r.width()},l=function(){var t=a.scrollTop(),i=o.docHeight-o.winHeight,e=o.docWidth-o.winWidth;o.scrollTop=Math.max(0,Math.min(i,t)),o.scrollLeft=Math.max(0,Math.min(e,a.scrollLeft())),o.overScroll=Math.max(t-i,Math.min(t,0))};a.on("resize.px.parallax load.px.parallax",function(){n(),h.refresh(),o.isFresh=!1,o.requestRender()}).on("scroll.px.parallax load.px.parallax",function(){l(),o.requestRender()}),n(),l(),this.isReady=!0;var p=-1;s()}},configure:function(i){"object"==typeof i&&(delete i.refresh,delete i.render,t.extend(this.prototype,i))},refresh:function(){t.each(this.sliders,function(){this.refresh()}),this.isFresh=!0},render:function(){this.isFresh||this.refresh(),t.each(this.sliders,function(){this.render()})},requestRender:function(){var t=this;t.render(),t.isBusy=!1},destroy:function(e){var s,h=t(e).data("px.parallax");for(h.$mirror.remove(),s=0;s{ - location.assign("http://andrey_programmer.ru") || location.assign("#"); -}); diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/less/animate.less b/Andrey_portfolio-master/Andrey_portfolio-master/src/less/animate.less deleted file mode 100644 index 669bffd..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/less/animate.less +++ /dev/null @@ -1,33 +0,0 @@ - - - -.middle { - &.animated{ - -webkit-animation-duration: 1.5s; - animation-duration: 1.5s; - } - -} - -.animated{ - &.fadeInRight, - &.fadeInLeft { - -webkit-animation-duration: 1s; - animation-duration: 1s; - // animation-delay: - } -} - -.generate-duration(@n) when (@n > 0) { - .navbar-nav .nav-item { - &.item-@{n} { - -webkit-animation-duration: @n*.4s; - animation-duration: @n*.4s; - } - - } - - .generate-duration(@n - 1); -} - -.generate-duration(4); \ No newline at end of file diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/less/footer.less b/Andrey_portfolio-master/Andrey_portfolio-master/src/less/footer.less deleted file mode 100644 index 1dd9cff..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/less/footer.less +++ /dev/null @@ -1,57 +0,0 @@ -@import '\partails\params'; - - - -footer { - - h1 { - margin-bottom: 100px; - } - - .contacts { - .header { - - text-align: center; - - h1 { - -webkit-box-shadow: 0 11px 0 white, 0 20px 20px black; - box-shadow: 0 11px 0 white, 0 20px 20px black; - } - - div { - letter-spacing: 4px; - font-size: 1.2em; - - &.education { - text-align: justify; - } - - } - - } - - .item { - text-align: center; - margin-bottom: 2rem; - .ico { - margin-bottom: 1rem; - span{ - i { - color: @blueIconsColor ; - } - } - } - } - } - - .copyright { - background-color: @content_text_color; - color: white; - margin-bottom: 0; - - i { - color: @redIconsColor; - cursor: pointer; - } - } -} \ No newline at end of file diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/less/header.less b/Andrey_portfolio-master/Andrey_portfolio-master/src/less/header.less deleted file mode 100644 index eecbe76..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/less/header.less +++ /dev/null @@ -1,135 +0,0 @@ -@import '\partails\params'; - - -header.main_display { - margin-bottom: 120px; - .nav-menu { - position: fixed; - z-index: 50; - right: 0; - top: 0; - -webkit-transition: background-color 1s; - transition: background-color 1s; - width: 100%; - - - &.show { - height: 100%; - background-color: rgba(0, 0, 0, 0.8); - } - - button { - background-color: @navButtonColor; - margin-left: auto; - margin-right: 1rem; - margin-top: 1rem; - - .lines { - width: 30px; - height: 30px; - padding: 3px 0; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - - .line { - width: 30px; - height: 2px; - background-color: @navButtonLines ; - -webkit-transition: opacity .5s, -webkit-transform .5s; - transition: opacity .5s, -webkit-transform .5s; - transition: transform .5s, opacity .5s; - transition: transform .5s, opacity .5s, -webkit-transform .5s; - - &-first.x { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: translateY(11px) rotate(45deg); - transform: translateY(11px) rotate(45deg); - } - &-second.x { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - } - &-third.x { - -webkit-transform: translateY(-11px); - transform: translateY(-11px); - opacity: 0; - } - } - } - } - - .navbar { - // height: 100%; - - ul { - li{ - -webkit-transition: all .3s; - transition: all .3s; - a { - color: white; - display: block; - text-transform: uppercase; - font-size: 1rem; - letter-spacing: 5px; - position: relative; - height: 60px; - outline: none; - -webkit-transition: color .5s; - transition: color .5s; - } - - &:hover { - background-color: rgba(255, 255, 255, 0.3); - a{ - color: white; - text-decoration: underline; - } - } - } - } - } - } - - h1 { - // display: inline-block; - font-weight: 600; - color: @h4_color; - } - p { - letter-spacing: 5px; - font-weight: bold; - font-size: 15px; - &.logo-line { - -webkit-transform: translateX(-2rem); - transform: translateX(-2rem); - } - - img { - display: inline-block; - height: 5.5rem; - width: auto; - } - } - - - .middle { - max-width: 80%; - margin: 0 auto; - background-color: rgba(255, 255, 255, 0.6); - .skills { - font-size: 1rem; - } - } - - .empty { - height: 10rem; - } - -} diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/less/main.less b/Andrey_portfolio-master/Andrey_portfolio-master/src/less/main.less deleted file mode 100644 index 73b18be..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/less/main.less +++ /dev/null @@ -1,349 +0,0 @@ -@import '\partails\params'; - - - -main { - padding: 15px; - h1 { - margin-bottom: 100px; - } - .about_me { - margin-bottom: 100px; - - h4 { - color: @h4_color; - margin-bottom: 25px; - } - - div { - margin-bottom: 20px; - } - .header { - - text-align: center; - - h1 { - -webkit-box-shadow: 0 11px 0 white, 0 20px 20px black; - box-shadow: 0 11px 0 white, 0 20px 20px black; - } - - div { - letter-spacing: 4px; - font-size: 1.2em; - } - - } - - div{ - - color: @content_text_color; - &.description { - .article { - text-align: justify; - - .skills { - margin-bottom: -23px; - text-align: justify; - span { - margin: 0 3px 0 2px ; - font-size: 6px; - i { - -webkit-transform: translateY(-4px); - transform: translateY(-4px); - } - - } - } - } - - } - - .photo { - .wrapper_photo { - border-radius: 50%; - border: 1px solid black; - overflow: hidden; - max-height: 300px; - max-width: 300px; - - } - } - - .personal { - span { - margin-right: 0.6em; - } - div { - margin-bottom: 10px; - - &.name { - margin-bottom: 15px; - color: @personal_name_color; - letter-spacing: 2px; - font-size: 1.2em; - } - &.skype { - span { - color: @blueIconsColor ; - font-size: 1.3em; - i { - -webkit-transform: translateY(2px); - transform: translateY(2px); - } - } - } - &.e-mail { - span { - color: @blueIconsColor ; - font-size: 1.3em; - i { - -webkit-transform: translateY(2px); - transform: translateY(2px); - } - } - } - &.my_site { - a { - color: inherit; - text-decoration: underline; - } - span { - &.html { - color: @redIconsColor; - font-size: 1.3em; - i { - -webkit-transform: translateY(2px); - transform: translateY(2px); - } - } - &.hand{ - color: @blueIconsColor ; - font-size: 1.3em; - i { - -webkit-transform: translate(-104px, 21px); - transform: translate(-104px, 21px) } - } - } - } - } - } - } - } - - .resume { - margin-bottom: 150px; - - .header { - - text-align: center; - - h1 { - -webkit-box-shadow: 0 11px 0 white, 0 20px 20px black; - box-shadow: 0 11px 0 white, 0 20px 20px black; - } - - div { - letter-spacing: 4px; - font-size: 1.2em; - - &.education { - text-align: justify; - } - - } - - } - - h2 { - text-align: center; - margin-bottom: 50px; - } - .subheader { - text-align: center; - font-size: 14px; - display: inline-block; - background-color: @redIconsColor; - color: white; - font-weight: 600; - font-style: italic; - padding: 0 15px; - margin: 3rem 0; - } - - .ico { - text-align: center; - margin: 25px 0; - i { - color: @blueIconsColor ; - } - } - } - - .portfolio { - background-color: @content_text_color; - padding-top: 100px; - - .last-card { - margin-bottom: 8rem; - } - - .card { - position: relative; - overflow: hidden; - color: white; - background-color: rgba(0, 0, 0, 0.8); - text-align: center; - -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - box-shadow: 0 0 0 rgba(0, 0, 0, 0); - -webkit-transition: -webkit-box-shadow .3s; - transition: -webkit-box-shadow .3s; - transition: box-shadow .3s; - transition: box-shadow .3s, -webkit-box-shadow .3s; - - - .card-body { - position: absolute; - background-color: rgba(0, 0, 0, 0.6); - width: 100%; - height: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - opacity: 1; - -webkit-transition: opacity .3s; - transition: opacity .3s; - - .card-title { - text-transform: uppercase; - font-size: 1rem; - margin-bottom: 1rem; - color: @cardGreenColor; - } - - .wrapper { - -webkit-transition: -webkit-transform .3s; - transition: -webkit-transform .3s; - transition: transform .3s; - transition: transform .3s, -webkit-transform .3s; - } - - } - - .card-body-2 { - position: absolute; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - top: 0; - bottom: 0; - left: 0; - right: 0; - - - .card-look { - display: inline-block; - opacity: 0; - color: white; - -webkit-transform: translateY(-100px); - transform: translateY(-100px); - -webkit-transition: opacity .3s, color .3s, -webkit-transform .3s; - transition: opacity .3s, color .3s, -webkit-transform .3s; - transition: opacity .3s, color .3s, transform .3s; - transition: opacity .3s, color .3s, transform .3s, -webkit-transform .3s; - border: 3px solid @cardGreenColor; - padding: 5px 20px; - } - } - - - .card-img-top { - opacity: .7; - -webkit-transform: scale(1.2, 1.2); - transform: scale(1.2, 1.2); - -webkit-transition: -webkit-transform .3s; - transition: -webkit-transform .3s; - transition: transform .3s; - transition: transform .3s, -webkit-transform .3s; - - - } - - &:hover { - cursor: pointer; - -webkit-box-shadow: 0 0 30px rgba(0, 0, 0, 0.9); - box-shadow: 0 0 30px rgba(0, 0, 0, 0.9); - - .card-body { - opacity: 0; - .wrapper { - -webkit-transform: translateY(100px); - transform: translateY(100px); - } - } - - .card-img-top { - -webkit-transform: scale(1, 1); - transform: scale(1, 1); - } - - .card-look { - opacity: 1; - color: white; - -webkit-transform: translateY(0); - transform: translateY(0); - } - } - } - - - img { - width: 100%; - height: auto; - } - - - .header { - - - text-align: center; - color: white; - - h1 { - padding : 5px 25px; - margin-left: auto; - margin-right: auto; - -webkit-box-shadow: 0 11px 0 @content_text_color, 0 20px 20px white; - box-shadow: 0 11px 0 @content_text_color, 0 20px 20px white; - - } - - div { - max-width: 85%; - margin: auto; - letter-spacing: 4px; - font-size: 1.2em; - - &.education { - text-align: justify; - } - - } - - } - } - - -} diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/less/partails/params.less b/Andrey_portfolio-master/Andrey_portfolio-master/src/less/partails/params.less deleted file mode 100644 index 8e45c84..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/less/partails/params.less +++ /dev/null @@ -1,8 +0,0 @@ -@redIconsColor : #FF6347; -@blueIconsColor : #00AFF0; -@navButtonColor : #343a40; -@h4_color : #072704; -@content_text_color : #222; -@navButtonLines : #9A9DA0; -@personal_name_color: #555; -@cardGreenColor : #FF6347 ; /* #1ee30b; */ \ No newline at end of file diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/less/style.less b/Andrey_portfolio-master/Andrey_portfolio-master/src/less/style.less deleted file mode 100644 index 3cace6b..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/less/style.less +++ /dev/null @@ -1,4 +0,0 @@ -@import '\header'; -@import '\main'; -@import '\footer'; - diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/template.html b/Andrey_portfolio-master/Andrey_portfolio-master/src/template.html deleted file mode 100644 index a616892..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/template.html +++ /dev/null @@ -1,516 +0,0 @@ - - - - - Andrey_programmer - - - - - - - - - - - - - - - - - -
- - -
-
-
-

- alt="logo"> Сайт-портфолио веб-разработчика

-
-

Андрей Кадочников

-

Web-разработчик /
HTML-верстальщик

-

HTML5 / CSS3 / JavaScript / ES6 / TypeScript / jQuery / LESS -
/ SASS / Gulp / Bootstrap 4 / Webpack 4 / RxJS / Git / БЭМ

-
- -
-
-
- -
-
-
-
-
-
-
-

Обо мне

- -
Познакомимся поближе
- -
-
-
-
-

Немного о себе

-
- Доброго времени суток, меня зовут Андрей. Занимаюсь вёрсткой HTML-шаблонов и front-end разработкой (программированием сайтов). - Мои Ключевые навыки: -
-
- HTML5 - - - CSS3 - - - JavaScript - - - ES6 - - - TypeScript - - - jQuery - - - LESS - - - SASS - - - Gulp - - - Bootstrap 4 - - - Webpack 4 - - - RxJS - - - Git - - - БЭМ -
-
Пользуюсь последними версиями передовых продуктов Bootstrap и Webpack, что гарантирует что Ваш - сайт будет адаптивным и отлично выглядеть на всех устройствах. Вы можете заказать у меня разработку - сайта с нуля или связаться со мной для сотрудничества. -
-
-
-

Фото

-
- alt="Моё фото"> -
-
-
-

Персональная информация

-
-
Кадочников Андрей
-
-
Профессиональное создание сайтов -
(front-end developer): разработка сайтов, вёрстка адаптивных HTML-шаблонов, создание спецэффектов - с использованием JavaScript, jQuery, Bootstrap
-
День Рождения 13 февраля 1982 года
-
- - - Skype: Andrey-1302
-
- - - E-mail : andrey.programmer.1302@gmail.com
- -
-
- -
-
-
-
-
-
-
-
-

Резюме

- -
Мои знания и образование
- -
-
-
-
-

Образование

-
- - - -
-
-
Высшее
-
Южно-Уральский Государственный Университет, 2007г. Факультет технологий машиностроения. Специализация: - Автоматизация тех. процессов и производств в машиностроении. Квалификация - специалист. -
-
-
-
Дополнительные курсы и самообразование: -
-
    -
  • HTML/CSS, Wordpress - Учебный цент "Специалист" при МГТУ им. Н.Э. Баумана (есть сертификаты)
  • -
  • HTML/CSS/LESS - онлайн курсы HTML-академии
  • -
  • JavaScript, jQuery, ES6, Bootstrap, TypeScript, Gulp, Webpack, LESS/SASS - онлайн курсы и уроки - компании Webformyself
  • -
  • Чтение документации на библиотеки фреймворки и бандлеры
  • -
-
-
-
-

Знания и навыки

-
- - - -
-
-
Знания в области Web -
-
-
HTML-разметка, таблицы стилей CSS, препроцессоры LESS/SASS, язык программирования JavaScript, - его современный синтаксис ES6, библиотека jQuery, фреймворк Bootstrap, бандлеры Gulp и Webpack
-
-
-
Программы
-
Adobe Photoshop, Nodepad++, FileZilla
-
-
-
-
Ближайшие планы
-
В скором времени планирую изучение фреймворков React, Angular и Vue для разработки Web-приложений
-
-
-
-
-
-
-
-

Портфолио

- -
Здесь будут размещаться примеры моих работ -
куда я надеюсь попадёт и Ваш сайт :)
-
-
-
-
-
- alt="Card image cap"> -
-
-
Andrey_programmer.ru
-

Сайт-портфолио программиста

-

- 2018 г. - -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
-
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
-
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
-
-
-
-
-
-
-
-
-
-

Контакты

- -
связаться со мной
- -
-
-
-
-
-
- - - -
-

Адрес:

-

Россия, г.Москва м.Отрадное

-
-
-
- - - -
-

E-mail:

-

andrey.programmer.1302@gmail.com

-
-
-
- - - -
-

Вконтакте

-

https://vk.com/l0vec_snov

-
-
-
-
-
- - - -
-

Веб-сайт:

-

Andrey_programmer.ru

-
-
-
- - - -
-

Skype:

-

Andrey-1302

-
-
-
- - - / - - - -
-

телефон / whatsapp

-

+7 977 4638113

-
-
-
-
-
- - - -
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/webpack.config.js b/Andrey_portfolio-master/Andrey_portfolio-master/webpack.config.js deleted file mode 100644 index d0e3d2e..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/webpack.config.js +++ /dev/null @@ -1,121 +0,0 @@ -// npm i --save-dev webpack webpack-cli -// npm i -D html-webpack-plugin -// npm install --save-dev extract-text-webpack-plugin -// npm install --save-dev optimize-css-assets-webpack-plugin -// npm i -D mini-css-extract-plugin -// npm i -D less-loader -// npm i -D less -// npm install --save-dev css-loader -// npm install --save-dev ts-loader -// npm i -D css-loader style-loader -// npm install postcss-loader --save-dev -// npm i -D autoprefixer -// npm install babel-core babel-loader babel-preset-env babel-preset-stage-3 --save-dev -// npm install file-loader --save-dev -// npm install clean-webpack-plugin --save-dev -// npm install --save-dev webpack-dev-server - - - -const path = require('path'); -const webpack = require('webpack'); -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const MiniCssExtractPlugin = require("mini-css-extract-plugin"); -const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin"); -const CleanWebpackPlugin = require('clean-webpack-plugin'); - - - -module.exports = { - mode: "development", - context: path.resolve(__dirname, 'src'), - entry: { // Тут писать в порядке подключения в index.html - // vendor: ['jquery'], - bundle: './js/index.js' - }, - output: { - filename: '[name].[hash].js', // Можно filename: '[name].[chunkhash].js' но будут длинные имена файлов - path: path.resolve(__dirname, 'dist') - }, - - module: { - rules: [ - - { - test: /\.(png|jpg|gif|ico)$/, - use: { - loader: 'file-loader', - options: { - name: '[path][name].[hash].[ext]' - // name: '[path][name].[ext]' - } - } - }, - { - test: /\.js$/, - exclude: /node_modules/, - use: { - loader: "babel-loader" - } - }, - { - test: /\.css$/, - use: ['style-loader', MiniCssExtractPlugin.loader, 'css-loader'] - }, - { - test: /\.less$/, - use: [{ - loader: 'style-loader' - }, MiniCssExtractPlugin.loader, { - loader: 'css-loader', - options: { - sourceMap: true - } - }, - { - loader: 'postcss-loader' - }, - { - loader: 'less-loader', - options: { - sourceMap: true - } - } - ] - } - ] - }, - optimization: { // вместо 'common.js' - splitChunks: { - chunks: "all", - minChunks: 2 - } - }, - plugins: [ - - new HtmlWebpackPlugin({ - template: './template.html', - chunks: [/* 'vendor', */ 'bundle'], //скрипты. которые нужно подключить к html - name: 'index.html', - hash: true, - inject: true - }), - require('autoprefixer'), - new MiniCssExtractPlugin({ - filename: 'style.[contenthash].css', - }), - // new OptimizeCSSAssetsPlugin({}), // Минимизирует код css для отображения sourcemap нужно закомментировать данный плагин - new CleanWebpackPlugin(['dist']), // Плагин очищает папку dist перед пересозданием файлов (не работает при webpack -w, работает при webpack) - new webpack.HotModuleReplacementPlugin({}) - ], - devServer: { - // hot: true, - inline: true, - contentBase: path.join(__dirname, "dist"), - // compress: true, - port: 8080, - progress: true, - open: true, //чтобы страница автоматически запускалась при использовании dev-сервера - }, - devtool : 'source-map' // Для dev-разработки!!! для production 'eval-sourcemap' -}; \ No newline at end of file diff --git a/dist/bundle.b9bf46aaf589fa90a085.js b/dist/bundle.b9bf46aaf589fa90a085.js deleted file mode 100644 index ec96d71..0000000 --- a/dist/bundle.b9bf46aaf589fa90a085.js +++ /dev/null @@ -1,12400 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ function hotDisposeChunk(chunkId) { -/******/ delete installedChunks[chunkId]; -/******/ } -/******/ var parentHotUpdateCallback = window["webpackHotUpdate"]; -/******/ window["webpackHotUpdate"] = // eslint-disable-next-line no-unused-vars -/******/ function webpackHotUpdateCallback(chunkId, moreModules) { -/******/ hotAddUpdateChunk(chunkId, moreModules); -/******/ if (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules); -/******/ } ; -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotDownloadUpdateChunk(chunkId) { -/******/ var head = document.getElementsByTagName("head")[0]; -/******/ var script = document.createElement("script"); -/******/ script.charset = "utf-8"; -/******/ script.src = __webpack_require__.p + "" + chunkId + "." + hotCurrentHash + ".hot-update.js"; -/******/ ; -/******/ head.appendChild(script); -/******/ } -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotDownloadManifest(requestTimeout) { -/******/ requestTimeout = requestTimeout || 10000; -/******/ return new Promise(function(resolve, reject) { -/******/ if (typeof XMLHttpRequest === "undefined") -/******/ return reject(new Error("No browser support")); -/******/ try { -/******/ var request = new XMLHttpRequest(); -/******/ var requestPath = __webpack_require__.p + "" + hotCurrentHash + ".hot-update.json"; -/******/ request.open("GET", requestPath, true); -/******/ request.timeout = requestTimeout; -/******/ request.send(null); -/******/ } catch (err) { -/******/ return reject(err); -/******/ } -/******/ request.onreadystatechange = function() { -/******/ if (request.readyState !== 4) return; -/******/ if (request.status === 0) { -/******/ // timeout -/******/ reject( -/******/ new Error("Manifest request to " + requestPath + " timed out.") -/******/ ); -/******/ } else if (request.status === 404) { -/******/ // no update available -/******/ resolve(); -/******/ } else if (request.status !== 200 && request.status !== 304) { -/******/ // other failure -/******/ reject(new Error("Manifest request to " + requestPath + " failed.")); -/******/ } else { -/******/ // success -/******/ try { -/******/ var update = JSON.parse(request.responseText); -/******/ } catch (e) { -/******/ reject(e); -/******/ return; -/******/ } -/******/ resolve(update); -/******/ } -/******/ }; -/******/ }); -/******/ } -/******/ -/******/ var hotApplyOnUpdate = true; -/******/ var hotCurrentHash = "b9bf46aaf589fa90a085"; // eslint-disable-line no-unused-vars -/******/ var hotRequestTimeout = 10000; -/******/ var hotCurrentModuleData = {}; -/******/ var hotCurrentChildModule; // eslint-disable-line no-unused-vars -/******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars -/******/ var hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotCreateRequire(moduleId) { -/******/ var me = installedModules[moduleId]; -/******/ if (!me) return __webpack_require__; -/******/ var fn = function(request) { -/******/ if (me.hot.active) { -/******/ if (installedModules[request]) { -/******/ if (installedModules[request].parents.indexOf(moduleId) === -1) -/******/ installedModules[request].parents.push(moduleId); -/******/ } else { -/******/ hotCurrentParents = [moduleId]; -/******/ hotCurrentChildModule = request; -/******/ } -/******/ if (me.children.indexOf(request) === -1) me.children.push(request); -/******/ } else { -/******/ console.warn( -/******/ "[HMR] unexpected require(" + -/******/ request + -/******/ ") from disposed module " + -/******/ moduleId -/******/ ); -/******/ hotCurrentParents = []; -/******/ } -/******/ return __webpack_require__(request); -/******/ }; -/******/ var ObjectFactory = function ObjectFactory(name) { -/******/ return { -/******/ configurable: true, -/******/ enumerable: true, -/******/ get: function() { -/******/ return __webpack_require__[name]; -/******/ }, -/******/ set: function(value) { -/******/ __webpack_require__[name] = value; -/******/ } -/******/ }; -/******/ }; -/******/ for (var name in __webpack_require__) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call(__webpack_require__, name) && -/******/ name !== "e" -/******/ ) { -/******/ Object.defineProperty(fn, name, ObjectFactory(name)); -/******/ } -/******/ } -/******/ fn.e = function(chunkId) { -/******/ if (hotStatus === "ready") hotSetStatus("prepare"); -/******/ hotChunksLoading++; -/******/ return __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) { -/******/ finishChunkLoading(); -/******/ throw err; -/******/ }); -/******/ -/******/ function finishChunkLoading() { -/******/ hotChunksLoading--; -/******/ if (hotStatus === "prepare") { -/******/ if (!hotWaitingFilesMap[chunkId]) { -/******/ hotEnsureUpdateChunk(chunkId); -/******/ } -/******/ if (hotChunksLoading === 0 && hotWaitingFiles === 0) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ } -/******/ } -/******/ }; -/******/ return fn; -/******/ } -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotCreateModule(moduleId) { -/******/ var hot = { -/******/ // private stuff -/******/ _acceptedDependencies: {}, -/******/ _declinedDependencies: {}, -/******/ _selfAccepted: false, -/******/ _selfDeclined: false, -/******/ _disposeHandlers: [], -/******/ _main: hotCurrentChildModule !== moduleId, -/******/ -/******/ // Module API -/******/ active: true, -/******/ accept: function(dep, callback) { -/******/ if (typeof dep === "undefined") hot._selfAccepted = true; -/******/ else if (typeof dep === "function") hot._selfAccepted = dep; -/******/ else if (typeof dep === "object") -/******/ for (var i = 0; i < dep.length; i++) -/******/ hot._acceptedDependencies[dep[i]] = callback || function() {}; -/******/ else hot._acceptedDependencies[dep] = callback || function() {}; -/******/ }, -/******/ decline: function(dep) { -/******/ if (typeof dep === "undefined") hot._selfDeclined = true; -/******/ else if (typeof dep === "object") -/******/ for (var i = 0; i < dep.length; i++) -/******/ hot._declinedDependencies[dep[i]] = true; -/******/ else hot._declinedDependencies[dep] = true; -/******/ }, -/******/ dispose: function(callback) { -/******/ hot._disposeHandlers.push(callback); -/******/ }, -/******/ addDisposeHandler: function(callback) { -/******/ hot._disposeHandlers.push(callback); -/******/ }, -/******/ removeDisposeHandler: function(callback) { -/******/ var idx = hot._disposeHandlers.indexOf(callback); -/******/ if (idx >= 0) hot._disposeHandlers.splice(idx, 1); -/******/ }, -/******/ -/******/ // Management API -/******/ check: hotCheck, -/******/ apply: hotApply, -/******/ status: function(l) { -/******/ if (!l) return hotStatus; -/******/ hotStatusHandlers.push(l); -/******/ }, -/******/ addStatusHandler: function(l) { -/******/ hotStatusHandlers.push(l); -/******/ }, -/******/ removeStatusHandler: function(l) { -/******/ var idx = hotStatusHandlers.indexOf(l); -/******/ if (idx >= 0) hotStatusHandlers.splice(idx, 1); -/******/ }, -/******/ -/******/ //inherit from previous dispose call -/******/ data: hotCurrentModuleData[moduleId] -/******/ }; -/******/ hotCurrentChildModule = undefined; -/******/ return hot; -/******/ } -/******/ -/******/ var hotStatusHandlers = []; -/******/ var hotStatus = "idle"; -/******/ -/******/ function hotSetStatus(newStatus) { -/******/ hotStatus = newStatus; -/******/ for (var i = 0; i < hotStatusHandlers.length; i++) -/******/ hotStatusHandlers[i].call(null, newStatus); -/******/ } -/******/ -/******/ // while downloading -/******/ var hotWaitingFiles = 0; -/******/ var hotChunksLoading = 0; -/******/ var hotWaitingFilesMap = {}; -/******/ var hotRequestedFilesMap = {}; -/******/ var hotAvailableFilesMap = {}; -/******/ var hotDeferred; -/******/ -/******/ // The update info -/******/ var hotUpdate, hotUpdateNewHash; -/******/ -/******/ function toModuleId(id) { -/******/ var isNumber = +id + "" === id; -/******/ return isNumber ? +id : id; -/******/ } -/******/ -/******/ function hotCheck(apply) { -/******/ if (hotStatus !== "idle") -/******/ throw new Error("check() is only allowed in idle status"); -/******/ hotApplyOnUpdate = apply; -/******/ hotSetStatus("check"); -/******/ return hotDownloadManifest(hotRequestTimeout).then(function(update) { -/******/ if (!update) { -/******/ hotSetStatus("idle"); -/******/ return null; -/******/ } -/******/ hotRequestedFilesMap = {}; -/******/ hotWaitingFilesMap = {}; -/******/ hotAvailableFilesMap = update.c; -/******/ hotUpdateNewHash = update.h; -/******/ -/******/ hotSetStatus("prepare"); -/******/ var promise = new Promise(function(resolve, reject) { -/******/ hotDeferred = { -/******/ resolve: resolve, -/******/ reject: reject -/******/ }; -/******/ }); -/******/ hotUpdate = {}; -/******/ var chunkId = "bundle"; -/******/ { -/******/ // eslint-disable-line no-lone-blocks -/******/ /*globals chunkId */ -/******/ hotEnsureUpdateChunk(chunkId); -/******/ } -/******/ if ( -/******/ hotStatus === "prepare" && -/******/ hotChunksLoading === 0 && -/******/ hotWaitingFiles === 0 -/******/ ) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ return promise; -/******/ }); -/******/ } -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotAddUpdateChunk(chunkId, moreModules) { -/******/ if (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId]) -/******/ return; -/******/ hotRequestedFilesMap[chunkId] = false; -/******/ for (var moduleId in moreModules) { -/******/ if (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { -/******/ hotUpdate[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if (--hotWaitingFiles === 0 && hotChunksLoading === 0) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ } -/******/ -/******/ function hotEnsureUpdateChunk(chunkId) { -/******/ if (!hotAvailableFilesMap[chunkId]) { -/******/ hotWaitingFilesMap[chunkId] = true; -/******/ } else { -/******/ hotRequestedFilesMap[chunkId] = true; -/******/ hotWaitingFiles++; -/******/ hotDownloadUpdateChunk(chunkId); -/******/ } -/******/ } -/******/ -/******/ function hotUpdateDownloaded() { -/******/ hotSetStatus("ready"); -/******/ var deferred = hotDeferred; -/******/ hotDeferred = null; -/******/ if (!deferred) return; -/******/ if (hotApplyOnUpdate) { -/******/ // Wrap deferred object in Promise to mark it as a well-handled Promise to -/******/ // avoid triggering uncaught exception warning in Chrome. -/******/ // See https://bugs.chromium.org/p/chromium/issues/detail?id=465666 -/******/ Promise.resolve() -/******/ .then(function() { -/******/ return hotApply(hotApplyOnUpdate); -/******/ }) -/******/ .then( -/******/ function(result) { -/******/ deferred.resolve(result); -/******/ }, -/******/ function(err) { -/******/ deferred.reject(err); -/******/ } -/******/ ); -/******/ } else { -/******/ var outdatedModules = []; -/******/ for (var id in hotUpdate) { -/******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) { -/******/ outdatedModules.push(toModuleId(id)); -/******/ } -/******/ } -/******/ deferred.resolve(outdatedModules); -/******/ } -/******/ } -/******/ -/******/ function hotApply(options) { -/******/ if (hotStatus !== "ready") -/******/ throw new Error("apply() is only allowed in ready status"); -/******/ options = options || {}; -/******/ -/******/ var cb; -/******/ var i; -/******/ var j; -/******/ var module; -/******/ var moduleId; -/******/ -/******/ function getAffectedStuff(updateModuleId) { -/******/ var outdatedModules = [updateModuleId]; -/******/ var outdatedDependencies = {}; -/******/ -/******/ var queue = outdatedModules.slice().map(function(id) { -/******/ return { -/******/ chain: [id], -/******/ id: id -/******/ }; -/******/ }); -/******/ while (queue.length > 0) { -/******/ var queueItem = queue.pop(); -/******/ var moduleId = queueItem.id; -/******/ var chain = queueItem.chain; -/******/ module = installedModules[moduleId]; -/******/ if (!module || module.hot._selfAccepted) continue; -/******/ if (module.hot._selfDeclined) { -/******/ return { -/******/ type: "self-declined", -/******/ chain: chain, -/******/ moduleId: moduleId -/******/ }; -/******/ } -/******/ if (module.hot._main) { -/******/ return { -/******/ type: "unaccepted", -/******/ chain: chain, -/******/ moduleId: moduleId -/******/ }; -/******/ } -/******/ for (var i = 0; i < module.parents.length; i++) { -/******/ var parentId = module.parents[i]; -/******/ var parent = installedModules[parentId]; -/******/ if (!parent) continue; -/******/ if (parent.hot._declinedDependencies[moduleId]) { -/******/ return { -/******/ type: "declined", -/******/ chain: chain.concat([parentId]), -/******/ moduleId: moduleId, -/******/ parentId: parentId -/******/ }; -/******/ } -/******/ if (outdatedModules.indexOf(parentId) !== -1) continue; -/******/ if (parent.hot._acceptedDependencies[moduleId]) { -/******/ if (!outdatedDependencies[parentId]) -/******/ outdatedDependencies[parentId] = []; -/******/ addAllToSet(outdatedDependencies[parentId], [moduleId]); -/******/ continue; -/******/ } -/******/ delete outdatedDependencies[parentId]; -/******/ outdatedModules.push(parentId); -/******/ queue.push({ -/******/ chain: chain.concat([parentId]), -/******/ id: parentId -/******/ }); -/******/ } -/******/ } -/******/ -/******/ return { -/******/ type: "accepted", -/******/ moduleId: updateModuleId, -/******/ outdatedModules: outdatedModules, -/******/ outdatedDependencies: outdatedDependencies -/******/ }; -/******/ } -/******/ -/******/ function addAllToSet(a, b) { -/******/ for (var i = 0; i < b.length; i++) { -/******/ var item = b[i]; -/******/ if (a.indexOf(item) === -1) a.push(item); -/******/ } -/******/ } -/******/ -/******/ // at begin all updates modules are outdated -/******/ // the "outdated" status can propagate to parents if they don't accept the children -/******/ var outdatedDependencies = {}; -/******/ var outdatedModules = []; -/******/ var appliedUpdate = {}; -/******/ -/******/ var warnUnexpectedRequire = function warnUnexpectedRequire() { -/******/ console.warn( -/******/ "[HMR] unexpected require(" + result.moduleId + ") to disposed module" -/******/ ); -/******/ }; -/******/ -/******/ for (var id in hotUpdate) { -/******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) { -/******/ moduleId = toModuleId(id); -/******/ /** @type {TODO} */ -/******/ var result; -/******/ if (hotUpdate[id]) { -/******/ result = getAffectedStuff(moduleId); -/******/ } else { -/******/ result = { -/******/ type: "disposed", -/******/ moduleId: id -/******/ }; -/******/ } -/******/ /** @type {Error|false} */ -/******/ var abortError = false; -/******/ var doApply = false; -/******/ var doDispose = false; -/******/ var chainInfo = ""; -/******/ if (result.chain) { -/******/ chainInfo = "\nUpdate propagation: " + result.chain.join(" -> "); -/******/ } -/******/ switch (result.type) { -/******/ case "self-declined": -/******/ if (options.onDeclined) options.onDeclined(result); -/******/ if (!options.ignoreDeclined) -/******/ abortError = new Error( -/******/ "Aborted because of self decline: " + -/******/ result.moduleId + -/******/ chainInfo -/******/ ); -/******/ break; -/******/ case "declined": -/******/ if (options.onDeclined) options.onDeclined(result); -/******/ if (!options.ignoreDeclined) -/******/ abortError = new Error( -/******/ "Aborted because of declined dependency: " + -/******/ result.moduleId + -/******/ " in " + -/******/ result.parentId + -/******/ chainInfo -/******/ ); -/******/ break; -/******/ case "unaccepted": -/******/ if (options.onUnaccepted) options.onUnaccepted(result); -/******/ if (!options.ignoreUnaccepted) -/******/ abortError = new Error( -/******/ "Aborted because " + moduleId + " is not accepted" + chainInfo -/******/ ); -/******/ break; -/******/ case "accepted": -/******/ if (options.onAccepted) options.onAccepted(result); -/******/ doApply = true; -/******/ break; -/******/ case "disposed": -/******/ if (options.onDisposed) options.onDisposed(result); -/******/ doDispose = true; -/******/ break; -/******/ default: -/******/ throw new Error("Unexception type " + result.type); -/******/ } -/******/ if (abortError) { -/******/ hotSetStatus("abort"); -/******/ return Promise.reject(abortError); -/******/ } -/******/ if (doApply) { -/******/ appliedUpdate[moduleId] = hotUpdate[moduleId]; -/******/ addAllToSet(outdatedModules, result.outdatedModules); -/******/ for (moduleId in result.outdatedDependencies) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call( -/******/ result.outdatedDependencies, -/******/ moduleId -/******/ ) -/******/ ) { -/******/ if (!outdatedDependencies[moduleId]) -/******/ outdatedDependencies[moduleId] = []; -/******/ addAllToSet( -/******/ outdatedDependencies[moduleId], -/******/ result.outdatedDependencies[moduleId] -/******/ ); -/******/ } -/******/ } -/******/ } -/******/ if (doDispose) { -/******/ addAllToSet(outdatedModules, [result.moduleId]); -/******/ appliedUpdate[moduleId] = warnUnexpectedRequire; -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Store self accepted outdated modules to require them later by the module system -/******/ var outdatedSelfAcceptedModules = []; -/******/ for (i = 0; i < outdatedModules.length; i++) { -/******/ moduleId = outdatedModules[i]; -/******/ if ( -/******/ installedModules[moduleId] && -/******/ installedModules[moduleId].hot._selfAccepted -/******/ ) -/******/ outdatedSelfAcceptedModules.push({ -/******/ module: moduleId, -/******/ errorHandler: installedModules[moduleId].hot._selfAccepted -/******/ }); -/******/ } -/******/ -/******/ // Now in "dispose" phase -/******/ hotSetStatus("dispose"); -/******/ Object.keys(hotAvailableFilesMap).forEach(function(chunkId) { -/******/ if (hotAvailableFilesMap[chunkId] === false) { -/******/ hotDisposeChunk(chunkId); -/******/ } -/******/ }); -/******/ -/******/ var idx; -/******/ var queue = outdatedModules.slice(); -/******/ while (queue.length > 0) { -/******/ moduleId = queue.pop(); -/******/ module = installedModules[moduleId]; -/******/ if (!module) continue; -/******/ -/******/ var data = {}; -/******/ -/******/ // Call dispose handlers -/******/ var disposeHandlers = module.hot._disposeHandlers; -/******/ for (j = 0; j < disposeHandlers.length; j++) { -/******/ cb = disposeHandlers[j]; -/******/ cb(data); -/******/ } -/******/ hotCurrentModuleData[moduleId] = data; -/******/ -/******/ // disable module (this disables requires from this module) -/******/ module.hot.active = false; -/******/ -/******/ // remove module from cache -/******/ delete installedModules[moduleId]; -/******/ -/******/ // when disposing there is no need to call dispose handler -/******/ delete outdatedDependencies[moduleId]; -/******/ -/******/ // remove "parents" references from all children -/******/ for (j = 0; j < module.children.length; j++) { -/******/ var child = installedModules[module.children[j]]; -/******/ if (!child) continue; -/******/ idx = child.parents.indexOf(moduleId); -/******/ if (idx >= 0) { -/******/ child.parents.splice(idx, 1); -/******/ } -/******/ } -/******/ } -/******/ -/******/ // remove outdated dependency from module children -/******/ var dependency; -/******/ var moduleOutdatedDependencies; -/******/ for (moduleId in outdatedDependencies) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId) -/******/ ) { -/******/ module = installedModules[moduleId]; -/******/ if (module) { -/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; -/******/ for (j = 0; j < moduleOutdatedDependencies.length; j++) { -/******/ dependency = moduleOutdatedDependencies[j]; -/******/ idx = module.children.indexOf(dependency); -/******/ if (idx >= 0) module.children.splice(idx, 1); -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Not in "apply" phase -/******/ hotSetStatus("apply"); -/******/ -/******/ hotCurrentHash = hotUpdateNewHash; -/******/ -/******/ // insert new code -/******/ for (moduleId in appliedUpdate) { -/******/ if (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) { -/******/ modules[moduleId] = appliedUpdate[moduleId]; -/******/ } -/******/ } -/******/ -/******/ // call accept handlers -/******/ var error = null; -/******/ for (moduleId in outdatedDependencies) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId) -/******/ ) { -/******/ module = installedModules[moduleId]; -/******/ if (module) { -/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; -/******/ var callbacks = []; -/******/ for (i = 0; i < moduleOutdatedDependencies.length; i++) { -/******/ dependency = moduleOutdatedDependencies[i]; -/******/ cb = module.hot._acceptedDependencies[dependency]; -/******/ if (cb) { -/******/ if (callbacks.indexOf(cb) !== -1) continue; -/******/ callbacks.push(cb); -/******/ } -/******/ } -/******/ for (i = 0; i < callbacks.length; i++) { -/******/ cb = callbacks[i]; -/******/ try { -/******/ cb(moduleOutdatedDependencies); -/******/ } catch (err) { -/******/ if (options.onErrored) { -/******/ options.onErrored({ -/******/ type: "accept-errored", -/******/ moduleId: moduleId, -/******/ dependencyId: moduleOutdatedDependencies[i], -/******/ error: err -/******/ }); -/******/ } -/******/ if (!options.ignoreErrored) { -/******/ if (!error) error = err; -/******/ } -/******/ } -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Load self accepted modules -/******/ for (i = 0; i < outdatedSelfAcceptedModules.length; i++) { -/******/ var item = outdatedSelfAcceptedModules[i]; -/******/ moduleId = item.module; -/******/ hotCurrentParents = [moduleId]; -/******/ try { -/******/ __webpack_require__(moduleId); -/******/ } catch (err) { -/******/ if (typeof item.errorHandler === "function") { -/******/ try { -/******/ item.errorHandler(err); -/******/ } catch (err2) { -/******/ if (options.onErrored) { -/******/ options.onErrored({ -/******/ type: "self-accept-error-handler-errored", -/******/ moduleId: moduleId, -/******/ error: err2, -/******/ originalError: err -/******/ }); -/******/ } -/******/ if (!options.ignoreErrored) { -/******/ if (!error) error = err2; -/******/ } -/******/ if (!error) error = err; -/******/ } -/******/ } else { -/******/ if (options.onErrored) { -/******/ options.onErrored({ -/******/ type: "self-accept-errored", -/******/ moduleId: moduleId, -/******/ error: err -/******/ }); -/******/ } -/******/ if (!options.ignoreErrored) { -/******/ if (!error) error = err; -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // handle errors in accept handlers and self accepted module load -/******/ if (error) { -/******/ hotSetStatus("fail"); -/******/ return Promise.reject(error); -/******/ } -/******/ -/******/ hotSetStatus("idle"); -/******/ return new Promise(function(resolve) { -/******/ resolve(outdatedModules); -/******/ }); -/******/ } -/******/ -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {}, -/******/ hot: hotCreateModule(moduleId), -/******/ parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp), -/******/ children: [] -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId)); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // __webpack_hash__ -/******/ __webpack_require__.h = function() { return hotCurrentHash; }; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return hotCreateRequire("./js/index.js")(__webpack_require__.s = "./js/index.js"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "../node_modules/jquery/dist/jquery.js": -/*!*********************************************!*\ - !*** ../node_modules/jquery/dist/jquery.js ***! - \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - * jQuery JavaScript Library v3.3.1 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2018-01-20T17:24Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var document = window.document; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - - - - var preservedScriptAttributes = { - type: true, - src: true, - noModule: true - }; - - function DOMEval( code, doc, node ) { - doc = doc || document; - - var i, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - if ( node[ i ] ) { - script[ i ] = node[ i ]; - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.3.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android <=4.0 only - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && Array.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - - /* eslint-disable no-unused-vars */ - // See https://github.com/eslint/eslint/issues/6125 - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - DOMEval( code ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android <=4.0 only - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.3 - * https://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-08-08 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - disabledAncestor = addCombinator( - function( elem ) { - return elem.disabled === true && ("form" in elem || "label" in elem); - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[i] = "#" + nid + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement("fieldset"); - - try { - return !!fn( el ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - disabledAncestor( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( preferredDoc !== document && - (subWindow = document.defaultView) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( el ) { - el.className = "i"; - return !el.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( el ) { - el.appendChild( document.createComment("") ); - return !el.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID filter and find - if ( support.getById ) { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( (elem = elems[i++]) ) { - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( el ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( el ) { - el.innerHTML = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll(":enabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll(":disabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( el ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return (sel + "").replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( (oldCache = uniqueCache[ key ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( el ) { - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( el ) { - el.innerHTML = ""; - return el.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( el ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( el ) { - return el.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -}; -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( nodeName( elem, "iframe" ) ) { - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the master Deferred - master = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return master.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); - } - - return master.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - jQuery.contains( elem.ownerDocument, elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - -var swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // Support: IE <=9 only - option: [ 1, "" ], - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] -}; - -// Support: IE <=9 only -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); -var documentElement = document.documentElement; - - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 only -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - // Make a writable jQuery.Event from the native event object - var event = jQuery.event.fix( nativeEvent ); - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - /* eslint-disable max-len */ - - // See https://github.com/eslint/eslint/issues/3229 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - - /* eslint-enable */ - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - div.style.position = "absolute"; - scrollboxSizeVal = div.offsetWidth === 36 || "absolute"; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style; - -// Return a css property mapped to a potentially vendor prefixed property -function vendorPropName( name ) { - - // Shortcut for names that are not vendor prefixed - if ( name in emptyStyle ) { - return name; - } - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a property mapped along what jQuery.cssProps suggests or to -// a vendor prefixed property. -function finalPropName( name ) { - var ret = jQuery.cssProps[ name ]; - if ( !ret ) { - ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; - } - return ret; -} - -function setPositiveNumber( elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - ) ); - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - val = curCSS( elem, dimension, styles ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox; - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - // Check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = valueIsBorderBox && - ( support.boxSizingReliable() || val === elem.style[ dimension ] ); - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - if ( val === "auto" || - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) { - - val = elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ]; - - // offsetWidth/offsetHeight provide border-box values - valueIsBorderBox = true; - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - if ( type === "number" ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra && boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ); - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && support.scrollboxSize() === styles.position ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && - ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || - jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = Date.now(); - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - - -jQuery._evalUrl = function( url ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - "throws": true - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - - - - - - - -
-
-
-
- -
-
-
- -
-
-
-

- logo - Сайт-портфолио веб-разработчика -

-
-

Андрей Кадочников

-

Web-разработчик / -
HTML-верстальщик

-

HTML5 / CSS3 / JavaScript / ES6 / TypeScript / jQuery / LESS -
/ SASS / Gulp / Bootstrap 4 / Webpack 4 / RxJS / Git / БЭМ

-
- -
-
-
-
- -
-
-
-
-
-
-

Обо мне

- -
Познакомимся поближе
- -
-
-
-
-

Немного о себе

-
- Доброго времени суток, меня зовут Андрей. Занимаюсь вёрсткой HTML-шаблонов и front-end разработкой (программированием сайтов). - Мои Ключевые навыки: -
-
- HTML5 - - - CSS3 - - - JavaScript - - - ES6 - - - TypeScript - - - jQuery - - - LESS - - - SASS - - - Gulp - - - Bootstrap 4 - - - Webpack 4 - - - RxJS - - - Git - - - БЭМ -
-
Пользуюсь последними версиями передовых продуктов Bootstrap и Webpack, что гарантирует что Ваш - сайт будет адаптивным и отлично выглядеть на всех устройствах. Вы можете заказать у меня разработку - сайта с нуля или связаться со мной для сотрудничества. -
-
-
-

Фото

-
- Моё фото -
-
-
-

Персональная информация

-
-
Кадочников Андрей
-
-
Профессиональное создание сайтов -
(front-end developer): разработка сайтов, вёрстка адаптивных HTML-шаблонов, создание - спецэффектов с использованием JavaScript, jQuery, Bootstrap
-
День Рождения 13 февраля 1982 года
-
- - - Skype: Andrey-1302
-
- - - E-mail : andrey.programmer.1302@gmail.com
- -
-
- -
-
-
-
-
-
-
-
-

Резюме

- -
Мои знания и образование
- -
-
-
-
-

Образование

-
- - - -
-
-
Высшее
-
Южно-Уральский Государственный Университет, 2007г. Факультет технологий машиностроения. Специализация: - Автоматизация тех. процессов и производств в машиностроении. Квалификация - специалист. -
-
-
-
Дополнительные курсы и самообразование: -
-
    -
  • HTML/CSS, Wordpress - Учебный цент "Специалист" при МГТУ им. Н.Э. Баумана (есть сертификаты)
  • -
  • HTML/CSS/LESS - онлайн курсы HTML-академии
  • -
  • JavaScript, jQuery, ES6, Bootstrap, TypeScript, Gulp, Webpack, LESS/SASS - онлайн курсы и - уроки компании Webformyself
  • -
  • Чтение документации на библиотеки фреймворки и бандлеры
  • -
-
-
-
-

Знания и навыки

-
- - - -
-
-
Знания в области Web -
-
-
HTML-разметка, таблицы стилей CSS, препроцессоры LESS/SASS, язык программирования JavaScript, - его современный синтаксис ES6, библиотека jQuery, фреймворк Bootstrap, бандлеры Gulp - и Webpack
-
-
-
Программы
-
Adobe Photoshop, Nodepad++, FileZilla
-
-
-
-
Ближайшие планы
-
В скором времени планирую изучение фреймворков React, Angular и Vue для разработки Web-приложений
-
-
-
-
-
-
-
-
-
-

Портфолио

- -
Здесь будут размещаться примеры моих работ -
куда я надеюсь попадёт и Ваш сайт :)
-
-
-
-
-
- Card image cap -
-
-
Andrey-programmer.ru
-

Сайт-портфолио программиста

-

- 2018 г. - -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
-
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
-
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
- Card image cap -
-
-
http://_______________
-

This card has supporting...

-

- Last updated 3 mins ago -

-
-
-
-
Посмотреть
-
-
-
-
-
-
-
-
-
-
-
-
-

Контакты

- -
связаться со мной
- -
-
-
-
-
-
- - - -
-

Адрес:

-

Россия, г.Москва м.Отрадное

-
-
-
- - - -
-

E-mail:

-

andrey.programmer.1302@gmail.com

-
-
-
- - - -
-

Вконтакте

-

https://vk.com/l0vec_snov

-
-
-
-
-
- - - -
-

Веб-сайт:

-

Andrey-programmer.ru

-
-
-
- - - -
-

Skype:

-

Andrey-1302

-
-
-
- - - / - - - -
-

телефон / whatsapp

-

+7 977 4638113

-
-
-
-
-
- - - -
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dist/style.a23f76771d1e620ad174.css b/dist/style.a23f76771d1e620ad174.css deleted file mode 100644 index 3340f08..0000000 --- a/dist/style.a23f76771d1e620ad174.css +++ /dev/null @@ -1,4053 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,400i,600,700&subset=cyrillic); -@charset "UTF-8"; - -/*! - * animate.css -http://daneden.me/animate - * Version - 3.6.0 - * Licensed under the MIT license - http://opensource.org/licenses/MIT - * - * Copyright (c) 2018 Daniel Eden - */ - -.animated { - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -.animated.infinite { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -@-webkit-keyframes bounce { - from, - 20%, - 53%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 40%, - 43% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -30px, 0); - transform: translate3d(0, -30px, 0); - } - - 70% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -15px, 0); - transform: translate3d(0, -15px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -4px, 0); - transform: translate3d(0, -4px, 0); - } -} - -@keyframes bounce { - from, - 20%, - 53%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 40%, - 43% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -30px, 0); - transform: translate3d(0, -30px, 0); - } - - 70% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -15px, 0); - transform: translate3d(0, -15px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -4px, 0); - transform: translate3d(0, -4px, 0); - } -} - -.bounce { - -webkit-animation-name: bounce; - animation-name: bounce; - -webkit-transform-origin: center bottom; - transform-origin: center bottom; -} - -@-webkit-keyframes flash { - from, - 50%, - to { - opacity: 1; - } - - 25%, - 75% { - opacity: 0; - } -} - -@keyframes flash { - from, - 50%, - to { - opacity: 1; - } - - 25%, - 75% { - opacity: 0; - } -} - -.flash { - -webkit-animation-name: flash; - animation-name: flash; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes pulse { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 50% { - -webkit-transform: scale3d(1.05, 1.05, 1.05); - transform: scale3d(1.05, 1.05, 1.05); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes pulse { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 50% { - -webkit-transform: scale3d(1.05, 1.05, 1.05); - transform: scale3d(1.05, 1.05, 1.05); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.pulse { - -webkit-animation-name: pulse; - animation-name: pulse; -} - -@-webkit-keyframes rubberBand { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 30% { - -webkit-transform: scale3d(1.25, 0.75, 1); - transform: scale3d(1.25, 0.75, 1); - } - - 40% { - -webkit-transform: scale3d(0.75, 1.25, 1); - transform: scale3d(0.75, 1.25, 1); - } - - 50% { - -webkit-transform: scale3d(1.15, 0.85, 1); - transform: scale3d(1.15, 0.85, 1); - } - - 65% { - -webkit-transform: scale3d(0.95, 1.05, 1); - transform: scale3d(0.95, 1.05, 1); - } - - 75% { - -webkit-transform: scale3d(1.05, 0.95, 1); - transform: scale3d(1.05, 0.95, 1); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes rubberBand { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 30% { - -webkit-transform: scale3d(1.25, 0.75, 1); - transform: scale3d(1.25, 0.75, 1); - } - - 40% { - -webkit-transform: scale3d(0.75, 1.25, 1); - transform: scale3d(0.75, 1.25, 1); - } - - 50% { - -webkit-transform: scale3d(1.15, 0.85, 1); - transform: scale3d(1.15, 0.85, 1); - } - - 65% { - -webkit-transform: scale3d(0.95, 1.05, 1); - transform: scale3d(0.95, 1.05, 1); - } - - 75% { - -webkit-transform: scale3d(1.05, 0.95, 1); - transform: scale3d(1.05, 0.95, 1); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.rubberBand { - -webkit-animation-name: rubberBand; - animation-name: rubberBand; -} - -@-webkit-keyframes shake { - from, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, - 30%, - 50%, - 70%, - 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, - 40%, - 60%, - 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -@keyframes shake { - from, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, - 30%, - 50%, - 70%, - 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, - 40%, - 60%, - 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -.shake { - -webkit-animation-name: shake; - animation-name: shake; -} - -@-webkit-keyframes headShake { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 6.5% { - -webkit-transform: translateX(-6px) rotateY(-9deg); - transform: translateX(-6px) rotateY(-9deg); - } - - 18.5% { - -webkit-transform: translateX(5px) rotateY(7deg); - transform: translateX(5px) rotateY(7deg); - } - - 31.5% { - -webkit-transform: translateX(-3px) rotateY(-5deg); - transform: translateX(-3px) rotateY(-5deg); - } - - 43.5% { - -webkit-transform: translateX(2px) rotateY(3deg); - transform: translateX(2px) rotateY(3deg); - } - - 50% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes headShake { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 6.5% { - -webkit-transform: translateX(-6px) rotateY(-9deg); - transform: translateX(-6px) rotateY(-9deg); - } - - 18.5% { - -webkit-transform: translateX(5px) rotateY(7deg); - transform: translateX(5px) rotateY(7deg); - } - - 31.5% { - -webkit-transform: translateX(-3px) rotateY(-5deg); - transform: translateX(-3px) rotateY(-5deg); - } - - 43.5% { - -webkit-transform: translateX(2px) rotateY(3deg); - transform: translateX(2px) rotateY(3deg); - } - - 50% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -.headShake { - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-name: headShake; - animation-name: headShake; -} - -@-webkit-keyframes swing { - 20% { - -webkit-transform: rotate3d(0, 0, 1, 15deg); - transform: rotate3d(0, 0, 1, 15deg); - } - - 40% { - -webkit-transform: rotate3d(0, 0, 1, -10deg); - transform: rotate3d(0, 0, 1, -10deg); - } - - 60% { - -webkit-transform: rotate3d(0, 0, 1, 5deg); - transform: rotate3d(0, 0, 1, 5deg); - } - - 80% { - -webkit-transform: rotate3d(0, 0, 1, -5deg); - transform: rotate3d(0, 0, 1, -5deg); - } - - to { - -webkit-transform: rotate3d(0, 0, 1, 0deg); - transform: rotate3d(0, 0, 1, 0deg); - } -} - -@keyframes swing { - 20% { - -webkit-transform: rotate3d(0, 0, 1, 15deg); - transform: rotate3d(0, 0, 1, 15deg); - } - - 40% { - -webkit-transform: rotate3d(0, 0, 1, -10deg); - transform: rotate3d(0, 0, 1, -10deg); - } - - 60% { - -webkit-transform: rotate3d(0, 0, 1, 5deg); - transform: rotate3d(0, 0, 1, 5deg); - } - - 80% { - -webkit-transform: rotate3d(0, 0, 1, -5deg); - transform: rotate3d(0, 0, 1, -5deg); - } - - to { - -webkit-transform: rotate3d(0, 0, 1, 0deg); - transform: rotate3d(0, 0, 1, 0deg); - } -} - -.swing { - -webkit-transform-origin: top center; - transform-origin: top center; - -webkit-animation-name: swing; - animation-name: swing; -} - -@-webkit-keyframes tada { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 10%, - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - } - - 30%, - 50%, - 70%, - 90% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - } - - 40%, - 60%, - 80% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes tada { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 10%, - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - } - - 30%, - 50%, - 70%, - 90% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - } - - 40%, - 60%, - 80% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.tada { - -webkit-animation-name: tada; - animation-name: tada; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes wobble { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 15% { - -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - } - - 30% { - -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - } - - 45% { - -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - } - - 60% { - -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - } - - 75% { - -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes wobble { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 15% { - -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - } - - 30% { - -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - } - - 45% { - -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - } - - 60% { - -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - } - - 75% { - -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.wobble { - -webkit-animation-name: wobble; - animation-name: wobble; -} - -@-webkit-keyframes jello { - from, - 11.1%, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 22.2% { - -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); - transform: skewX(-12.5deg) skewY(-12.5deg); - } - - 33.3% { - -webkit-transform: skewX(6.25deg) skewY(6.25deg); - transform: skewX(6.25deg) skewY(6.25deg); - } - - 44.4% { - -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); - transform: skewX(-3.125deg) skewY(-3.125deg); - } - - 55.5% { - -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); - transform: skewX(1.5625deg) skewY(1.5625deg); - } - - 66.6% { - -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); - transform: skewX(-0.78125deg) skewY(-0.78125deg); - } - - 77.7% { - -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); - transform: skewX(0.390625deg) skewY(0.390625deg); - } - - 88.8% { - -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - } -} - -@keyframes jello { - from, - 11.1%, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 22.2% { - -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); - transform: skewX(-12.5deg) skewY(-12.5deg); - } - - 33.3% { - -webkit-transform: skewX(6.25deg) skewY(6.25deg); - transform: skewX(6.25deg) skewY(6.25deg); - } - - 44.4% { - -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); - transform: skewX(-3.125deg) skewY(-3.125deg); - } - - 55.5% { - -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); - transform: skewX(1.5625deg) skewY(1.5625deg); - } - - 66.6% { - -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); - transform: skewX(-0.78125deg) skewY(-0.78125deg); - } - - 77.7% { - -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); - transform: skewX(0.390625deg) skewY(0.390625deg); - } - - 88.8% { - -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - } -} - -.jello { - -webkit-animation-name: jello; - animation-name: jello; - -webkit-transform-origin: center; - transform-origin: center; -} - -@-webkit-keyframes bounceIn { - from, - 20%, - 40%, - 60%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 20% { - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 40% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03); - } - - 80% { - -webkit-transform: scale3d(0.97, 0.97, 0.97); - transform: scale3d(0.97, 0.97, 0.97); - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes bounceIn { - from, - 20%, - 40%, - 60%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 20% { - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 40% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03); - } - - 80% { - -webkit-transform: scale3d(0.97, 0.97, 0.97); - transform: scale3d(0.97, 0.97, 0.97); - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.bounceIn { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-name: bounceIn; - animation-name: bounceIn; -} - -@-webkit-keyframes bounceInDown { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -3000px, 0); - transform: translate3d(0, -3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, 25px, 0); - transform: translate3d(0, 25px, 0); - } - - 75% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, 5px, 0); - transform: translate3d(0, 5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInDown { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -3000px, 0); - transform: translate3d(0, -3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, 25px, 0); - transform: translate3d(0, 25px, 0); - } - - 75% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, 5px, 0); - transform: translate3d(0, 5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInDown { - -webkit-animation-name: bounceInDown; - animation-name: bounceInDown; -} - -@-webkit-keyframes bounceInLeft { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(-3000px, 0, 0); - transform: translate3d(-3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(25px, 0, 0); - transform: translate3d(25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(5px, 0, 0); - transform: translate3d(5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInLeft { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(-3000px, 0, 0); - transform: translate3d(-3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(25px, 0, 0); - transform: translate3d(25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(5px, 0, 0); - transform: translate3d(5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInLeft { - -webkit-animation-name: bounceInLeft; - animation-name: bounceInLeft; -} - -@-webkit-keyframes bounceInRight { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(3000px, 0, 0); - transform: translate3d(3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(-25px, 0, 0); - transform: translate3d(-25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(-5px, 0, 0); - transform: translate3d(-5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInRight { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(3000px, 0, 0); - transform: translate3d(3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(-25px, 0, 0); - transform: translate3d(-25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(-5px, 0, 0); - transform: translate3d(-5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInRight { - -webkit-animation-name: bounceInRight; - animation-name: bounceInRight; -} - -@-webkit-keyframes bounceInUp { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(0, 3000px, 0); - transform: translate3d(0, 3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 75% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -5px, 0); - transform: translate3d(0, -5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInUp { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(0, 3000px, 0); - transform: translate3d(0, 3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 75% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -5px, 0); - transform: translate3d(0, -5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInUp { - -webkit-animation-name: bounceInUp; - animation-name: bounceInUp; -} - -@-webkit-keyframes bounceOut { - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 50%, - 55% { - opacity: 1; - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } -} - -@keyframes bounceOut { - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 50%, - 55% { - opacity: 1; - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } -} - -.bounceOut { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-name: bounceOut; - animation-name: bounceOut; -} - -@-webkit-keyframes bounceOutDown { - 20% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -@keyframes bounceOutDown { - 20% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -.bounceOutDown { - -webkit-animation-name: bounceOutDown; - animation-name: bounceOutDown; -} - -@-webkit-keyframes bounceOutLeft { - 20% { - opacity: 1; - -webkit-transform: translate3d(20px, 0, 0); - transform: translate3d(20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -@keyframes bounceOutLeft { - 20% { - opacity: 1; - -webkit-transform: translate3d(20px, 0, 0); - transform: translate3d(20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -.bounceOutLeft { - -webkit-animation-name: bounceOutLeft; - animation-name: bounceOutLeft; -} - -@-webkit-keyframes bounceOutRight { - 20% { - opacity: 1; - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -@keyframes bounceOutRight { - 20% { - opacity: 1; - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -.bounceOutRight { - -webkit-animation-name: bounceOutRight; - animation-name: bounceOutRight; -} - -@-webkit-keyframes bounceOutUp { - 20% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, 20px, 0); - transform: translate3d(0, 20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -@keyframes bounceOutUp { - 20% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, 20px, 0); - transform: translate3d(0, 20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -.bounceOutUp { - -webkit-animation-name: bounceOutUp; - animation-name: bounceOutUp; -} - -@-webkit-keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -@keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -.fadeIn { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} - -@-webkit-keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInDown { - -webkit-animation-name: fadeInDown; - animation-name: fadeInDown; -} - -@-webkit-keyframes fadeInDownBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInDownBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInDownBig { - -webkit-animation-name: fadeInDownBig; - animation-name: fadeInDownBig; -} - -@-webkit-keyframes fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInLeft { - -webkit-animation-name: fadeInLeft; - animation-name: fadeInLeft; -} - -@-webkit-keyframes fadeInLeftBig { - from { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInLeftBig { - from { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInLeftBig { - -webkit-animation-name: fadeInLeftBig; - animation-name: fadeInLeftBig; -} - -@-webkit-keyframes fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInRight { - -webkit-animation-name: fadeInRight; - animation-name: fadeInRight; -} - -@-webkit-keyframes fadeInRightBig { - from { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInRightBig { - from { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInRightBig { - -webkit-animation-name: fadeInRightBig; - animation-name: fadeInRightBig; -} - -@-webkit-keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInUp { - -webkit-animation-name: fadeInUp; - animation-name: fadeInUp; -} - -@-webkit-keyframes fadeInUpBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInUpBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInUpBig { - -webkit-animation-name: fadeInUpBig; - animation-name: fadeInUpBig; -} - -@-webkit-keyframes fadeOut { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - -@keyframes fadeOut { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - -.fadeOut { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} - -@-webkit-keyframes fadeOutDown { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes fadeOutDown { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -.fadeOutDown { - -webkit-animation-name: fadeOutDown; - animation-name: fadeOutDown; -} - -@-webkit-keyframes fadeOutDownBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -@keyframes fadeOutDownBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -.fadeOutDownBig { - -webkit-animation-name: fadeOutDownBig; - animation-name: fadeOutDownBig; -} - -@-webkit-keyframes fadeOutLeft { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes fadeOutLeft { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -.fadeOutLeft { - -webkit-animation-name: fadeOutLeft; - animation-name: fadeOutLeft; -} - -@-webkit-keyframes fadeOutLeftBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -@keyframes fadeOutLeftBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -.fadeOutLeftBig { - -webkit-animation-name: fadeOutLeftBig; - animation-name: fadeOutLeftBig; -} - -@-webkit-keyframes fadeOutRight { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -@keyframes fadeOutRight { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -.fadeOutRight { - -webkit-animation-name: fadeOutRight; - animation-name: fadeOutRight; -} - -@-webkit-keyframes fadeOutRightBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -@keyframes fadeOutRightBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -.fadeOutRightBig { - -webkit-animation-name: fadeOutRightBig; - animation-name: fadeOutRightBig; -} - -@-webkit-keyframes fadeOutUp { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes fadeOutUp { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.fadeOutUp { - -webkit-animation-name: fadeOutUp; - animation-name: fadeOutUp; -} - -@-webkit-keyframes fadeOutUpBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -@keyframes fadeOutUpBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -.fadeOutUpBig { - -webkit-animation-name: fadeOutUpBig; - animation-name: fadeOutUpBig; -} - -@-webkit-keyframes flip { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -@keyframes flip { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -.animated.flip { - -webkit-backface-visibility: visible; - backface-visibility: visible; - -webkit-animation-name: flip; - animation-name: flip; -} - -@-webkit-keyframes flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@keyframes flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -.flipInX { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInX; - animation-name: flipInX; -} - -@-webkit-keyframes flipInY { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@keyframes flipInY { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -.flipInY { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInY; - animation-name: flipInY; -} - -@-webkit-keyframes flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -@keyframes flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -.flipOutX { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-name: flipOutX; - animation-name: flipOutX; - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; -} - -@-webkit-keyframes flipOutY { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - opacity: 0; - } -} - -@keyframes flipOutY { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - opacity: 0; - } -} - -.flipOutY { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipOutY; - animation-name: flipOutY; -} - -@-webkit-keyframes lightSpeedIn { - from { - -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); - transform: translate3d(100%, 0, 0) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: skewX(20deg); - transform: skewX(20deg); - opacity: 1; - } - - 80% { - -webkit-transform: skewX(-5deg); - transform: skewX(-5deg); - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes lightSpeedIn { - from { - -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); - transform: translate3d(100%, 0, 0) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: skewX(20deg); - transform: skewX(20deg); - opacity: 1; - } - - 80% { - -webkit-transform: skewX(-5deg); - transform: skewX(-5deg); - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.lightSpeedIn { - -webkit-animation-name: lightSpeedIn; - animation-name: lightSpeedIn; - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; -} - -@-webkit-keyframes lightSpeedOut { - from { - opacity: 1; - } - - to { - -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); - transform: translate3d(100%, 0, 0) skewX(30deg); - opacity: 0; - } -} - -@keyframes lightSpeedOut { - from { - opacity: 1; - } - - to { - -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); - transform: translate3d(100%, 0, 0) skewX(30deg); - opacity: 0; - } -} - -.lightSpeedOut { - -webkit-animation-name: lightSpeedOut; - animation-name: lightSpeedOut; - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; -} - -@-webkit-keyframes rotateIn { - from { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, -200deg); - transform: rotate3d(0, 0, 1, -200deg); - opacity: 0; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateIn { - from { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, -200deg); - transform: rotate3d(0, 0, 1, -200deg); - opacity: 0; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateIn { - -webkit-animation-name: rotateIn; - animation-name: rotateIn; -} - -@-webkit-keyframes rotateInDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInDownLeft { - -webkit-animation-name: rotateInDownLeft; - animation-name: rotateInDownLeft; -} - -@-webkit-keyframes rotateInDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInDownRight { - -webkit-animation-name: rotateInDownRight; - animation-name: rotateInDownRight; -} - -@-webkit-keyframes rotateInUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInUpLeft { - -webkit-animation-name: rotateInUpLeft; - animation-name: rotateInUpLeft; -} - -@-webkit-keyframes rotateInUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -90deg); - transform: rotate3d(0, 0, 1, -90deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -90deg); - transform: rotate3d(0, 0, 1, -90deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInUpRight { - -webkit-animation-name: rotateInUpRight; - animation-name: rotateInUpRight; -} - -@-webkit-keyframes rotateOut { - from { - -webkit-transform-origin: center; - transform-origin: center; - opacity: 1; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, 200deg); - transform: rotate3d(0, 0, 1, 200deg); - opacity: 0; - } -} - -@keyframes rotateOut { - from { - -webkit-transform-origin: center; - transform-origin: center; - opacity: 1; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, 200deg); - transform: rotate3d(0, 0, 1, 200deg); - opacity: 0; - } -} - -.rotateOut { - -webkit-animation-name: rotateOut; - animation-name: rotateOut; -} - -@-webkit-keyframes rotateOutDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } -} - -@keyframes rotateOutDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } -} - -.rotateOutDownLeft { - -webkit-animation-name: rotateOutDownLeft; - animation-name: rotateOutDownLeft; -} - -@-webkit-keyframes rotateOutDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -@keyframes rotateOutDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -.rotateOutDownRight { - -webkit-animation-name: rotateOutDownRight; - animation-name: rotateOutDownRight; -} - -@-webkit-keyframes rotateOutUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -@keyframes rotateOutUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -.rotateOutUpLeft { - -webkit-animation-name: rotateOutUpLeft; - animation-name: rotateOutUpLeft; -} - -@-webkit-keyframes rotateOutUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 90deg); - transform: rotate3d(0, 0, 1, 90deg); - opacity: 0; - } -} - -@keyframes rotateOutUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 90deg); - transform: rotate3d(0, 0, 1, 90deg); - opacity: 0; - } -} - -.rotateOutUpRight { - -webkit-animation-name: rotateOutUpRight; - animation-name: rotateOutUpRight; -} - -@-webkit-keyframes hinge { - 0% { - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, - 60% { - -webkit-transform: rotate3d(0, 0, 1, 80deg); - transform: rotate3d(0, 0, 1, 80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40%, - 80% { - -webkit-transform: rotate3d(0, 0, 1, 60deg); - transform: rotate3d(0, 0, 1, 60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 700px, 0); - transform: translate3d(0, 700px, 0); - opacity: 0; - } -} - -@keyframes hinge { - 0% { - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, - 60% { - -webkit-transform: rotate3d(0, 0, 1, 80deg); - transform: rotate3d(0, 0, 1, 80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40%, - 80% { - -webkit-transform: rotate3d(0, 0, 1, 60deg); - transform: rotate3d(0, 0, 1, 60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 700px, 0); - transform: translate3d(0, 700px, 0); - opacity: 0; - } -} - -.hinge { - -webkit-animation-duration: 2s; - animation-duration: 2s; - -webkit-animation-name: hinge; - animation-name: hinge; -} - -@-webkit-keyframes jackInTheBox { - from { - opacity: 0; - -webkit-transform: scale(0.1) rotate(30deg); - transform: scale(0.1) rotate(30deg); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - } - - 50% { - -webkit-transform: rotate(-10deg); - transform: rotate(-10deg); - } - - 70% { - -webkit-transform: rotate(3deg); - transform: rotate(3deg); - } - - to { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes jackInTheBox { - from { - opacity: 0; - -webkit-transform: scale(0.1) rotate(30deg); - transform: scale(0.1) rotate(30deg); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - } - - 50% { - -webkit-transform: rotate(-10deg); - transform: rotate(-10deg); - } - - 70% { - -webkit-transform: rotate(3deg); - transform: rotate(3deg); - } - - to { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); - } -} - -.jackInTheBox { - -webkit-animation-name: jackInTheBox; - animation-name: jackInTheBox; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollIn { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes rollIn { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.rollIn { - -webkit-animation-name: rollIn; - animation-name: rollIn; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollOut { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - } -} - -@keyframes rollOut { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - } -} - -.rollOut { - -webkit-animation-name: rollOut; - animation-name: rollOut; -} - -@-webkit-keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 50% { - opacity: 1; - } -} - -@keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 50% { - opacity: 1; - } -} - -.zoomIn { - -webkit-animation-name: zoomIn; - animation-name: zoomIn; -} - -@-webkit-keyframes zoomInDown { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInDown { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInDown { - -webkit-animation-name: zoomInDown; - animation-name: zoomInDown; -} - -@-webkit-keyframes zoomInLeft { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInLeft { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInLeft { - -webkit-animation-name: zoomInLeft; - animation-name: zoomInLeft; -} - -@-webkit-keyframes zoomInRight { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInRight { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInRight { - -webkit-animation-name: zoomInRight; - animation-name: zoomInRight; -} - -@-webkit-keyframes zoomInUp { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInUp { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInUp { - -webkit-animation-name: zoomInUp; - animation-name: zoomInUp; -} - -@-webkit-keyframes zoomOut { - from { - opacity: 1; - } - - 50% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - to { - opacity: 0; - } -} - -@keyframes zoomOut { - from { - opacity: 1; - } - - 50% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - to { - opacity: 0; - } -} - -.zoomOut { - -webkit-animation-name: zoomOut; - animation-name: zoomOut; -} - -@-webkit-keyframes zoomOutDown { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomOutDown { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomOutDown { - -webkit-animation-name: zoomOutDown; - animation-name: zoomOutDown; -} - -@-webkit-keyframes zoomOutLeft { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); - transform: scale(0.1) translate3d(-2000px, 0, 0); - -webkit-transform-origin: left center; - transform-origin: left center; - } -} - -@keyframes zoomOutLeft { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); - transform: scale(0.1) translate3d(-2000px, 0, 0); - -webkit-transform-origin: left center; - transform-origin: left center; - } -} - -.zoomOutLeft { - -webkit-animation-name: zoomOutLeft; - animation-name: zoomOutLeft; -} - -@-webkit-keyframes zoomOutRight { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); - transform: scale(0.1) translate3d(2000px, 0, 0); - -webkit-transform-origin: right center; - transform-origin: right center; - } -} - -@keyframes zoomOutRight { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); - transform: scale(0.1) translate3d(2000px, 0, 0); - -webkit-transform-origin: right center; - transform-origin: right center; - } -} - -.zoomOutRight { - -webkit-animation-name: zoomOutRight; - animation-name: zoomOutRight; -} - -@-webkit-keyframes zoomOutUp { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomOutUp { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomOutUp { - -webkit-animation-name: zoomOutUp; - animation-name: zoomOutUp; -} - -@-webkit-keyframes slideInDown { - from { - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInDown { - from { - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInDown { - -webkit-animation-name: slideInDown; - animation-name: slideInDown; -} - -@-webkit-keyframes slideInLeft { - from { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInLeft { - from { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInLeft { - -webkit-animation-name: slideInLeft; - animation-name: slideInLeft; -} - -@-webkit-keyframes slideInRight { - from { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInRight { - from { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInRight { - -webkit-animation-name: slideInRight; - animation-name: slideInRight; -} - -@-webkit-keyframes slideInUp { - from { - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInUp { - from { - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInUp { - -webkit-animation-name: slideInUp; - animation-name: slideInUp; -} - -@-webkit-keyframes slideOutDown { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes slideOutDown { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -.slideOutDown { - -webkit-animation-name: slideOutDown; - animation-name: slideOutDown; -} - -@-webkit-keyframes slideOutLeft { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes slideOutLeft { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -.slideOutLeft { - -webkit-animation-name: slideOutLeft; - animation-name: slideOutLeft; -} - -@-webkit-keyframes slideOutRight { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -@keyframes slideOutRight { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -.slideOutRight { - -webkit-animation-name: slideOutRight; - animation-name: slideOutRight; -} - -@-webkit-keyframes slideOutUp { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes slideOutUp { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.slideOutUp { - -webkit-animation-name: slideOutUp; - animation-name: slideOutUp; -} - -body { - font-family: 'Open Sans', sans-serif; -} - -.main_display { - text-transform: uppercase; -} - - - -.parallax-window { - min-height: 100vh; - background-color: transparent; - text-align: center; - /* background-image: url('../image/main_picture.jpg'); */ - background-size: cover; - background-repeat: no-repeat; - background-position: center center; -} - -section { - margin-bottom: 15px; -} - -img { - max-width: 100%; -} - -/* #1ee30b; */ -header.main_display { - margin-bottom: 120px; -} -header.main_display .nav-menu { - position: fixed; - z-index: 50; - right: 0; - top: 0; - transition: background-color 1s; - width: 100%; -} -header.main_display .nav-menu.show { - height: 100%; - background-color: rgba(0, 0, 0, 0.8); -} -header.main_display .nav-menu button { - background-color: #343a40; - margin-left: auto; - margin-right: 1rem; - margin-top: 1rem; -} -header.main_display .nav-menu button .lines { - width: 30px; - height: 30px; - padding: 3px 0; - justify-content: space-between; - align-items: center; -} -header.main_display .nav-menu button .lines .line { - width: 30px; - height: 2px; - background-color: #9A9DA0; - transition: opacity 0.5s, -webkit-transform 0.5s; - transition: opacity .5s, -webkit-transform .5s; - transition: transform .5s, opacity .5s; - transition: transform .5s, opacity .5s, -webkit-transform .5s; - transition: transform 0.5s, opacity 0.5s, -webkit-transform 0.5s; -} -header.main_display .nav-menu button .lines .line-first.x { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: translateY(11px) rotate(45deg); - transform: translateY(11px) rotate(45deg); -} -header.main_display .nav-menu button .lines .line-second.x { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); -} -header.main_display .nav-menu button .lines .line-third.x { - -webkit-transform: translateY(-11px); - transform: translateY(-11px); - opacity: 0; -} -header.main_display .nav-menu .navbar ul li { - transition: all .3s; -} -header.main_display .nav-menu .navbar ul li a { - color: white; - display: block; - text-transform: uppercase; - font-size: 1rem; - letter-spacing: 5px; - position: relative; - height: 60px; - outline: none; - transition: color .5s; -} -header.main_display .nav-menu .navbar ul li:hover { - background-color: rgba(255, 255, 255, 0.3); -} -header.main_display .nav-menu .navbar ul li:hover a { - color: white; - text-decoration: underline; -} -header.main_display p { - letter-spacing: 5px; - font-weight: bold; - font-size: 15px; -} -header.main_display p.logo-line { - -webkit-transform: translateX(-2rem); - transform: translateX(-2rem); -} -header.main_display p img { - display: inline-block; - height: 5.5rem; - width: auto; -} -header.main_display .middle { - max-width: 80%; - margin: 0 auto; - background-color: rgba(255, 255, 255, 0.6); -} -header.main_display .middle h1 { - font-size: 1.8rem; - font-weight: 600; - color: #072704; -} -header.main_display .middle .skills { - font-size: 1rem; -} -header.main_display .empty { - height: 10rem; -} -main { - padding: 15px; -} -main h2 { - margin-bottom: 100px; -} -main .about_me { - margin-bottom: 100px; -} -main .about_me h4 { - color: #072704; - margin-bottom: 25px; -} -main .about_me div { - margin-bottom: 20px; -} -main .about_me .header { - text-align: center; -} -main .about_me .header h2 { - box-shadow: 0 11px 0 white, 0 20px 20px black; -} -main .about_me .header div { - letter-spacing: 4px; - font-size: 1.2em; -} -main .about_me div { - color: #222; -} -main .about_me div.description .article { - text-align: justify; -} -main .about_me div.description .article .skills { - margin-bottom: -23px; - text-align: justify; -} -main .about_me div.description .article .skills span { - margin: 0 3px 0 2px ; - font-size: 6px; -} -main .about_me div.description .article .skills span i { - -webkit-transform: translateY(-4px); - transform: translateY(-4px); -} -main .about_me div .photo .wrapper_photo { - border-radius: 50%; - border: 1px solid black; - overflow: hidden; - max-height: 300px; - max-width: 300px; -} -main .about_me div .personal span { - margin-right: 0.6em; -} -main .about_me div .personal div { - margin-bottom: 10px; -} -main .about_me div .personal div.name { - margin-bottom: 15px; - color: #555; - letter-spacing: 2px; - font-size: 1.2em; -} -main .about_me div .personal div.skype span { - color: #00AFF0; - font-size: 1.3em; -} -main .about_me div .personal div.skype span i { - -webkit-transform: translateY(2px); - transform: translateY(2px); -} -main .about_me div .personal div.e-mail span { - color: #00AFF0; - font-size: 1.3em; -} -main .about_me div .personal div.e-mail span i { - -webkit-transform: translateY(2px); - transform: translateY(2px); -} -main .about_me div .personal div.my_site a { - color: inherit; - text-decoration: underline; -} -main .about_me div .personal div.my_site span.html { - color: #FF6347; - font-size: 1.3em; -} -main .about_me div .personal div.my_site span.html i { - -webkit-transform: translateY(2px); - transform: translateY(2px); -} -main .about_me div .personal div.my_site span.hand { - color: #00AFF0; - font-size: 1.3em; -} -main .about_me div .personal div.my_site span.hand i { - -webkit-transform: translate(-104px, 21px); - transform: translate(-104px, 21px); -} -main .resume { - margin-bottom: 150px; -} -main .resume .header { - text-align: center; -} -main .resume .header h2 { - box-shadow: 0 11px 0 white, 0 20px 20px black; -} -main .resume .header div { - letter-spacing: 4px; - font-size: 1.2em; -} -main .resume .header div.education { - text-align: justify; -} -main .resume h2 { - text-align: center; -} -main .resume .subheader { - text-align: center; - font-size: 14px; - display: inline-block; - background-color: #FF6347; - color: white; - font-weight: 600; - font-style: italic; - padding: 0 15px; - margin: 3rem 0; -} -main .resume .ico { - text-align: center; - margin: 25px 0; -} -main .resume .ico i { - color: #00AFF0; -} -main .portfolio { - background-color: #222; - padding-top: 100px; -} -main .portfolio .last-card { - margin-bottom: 8rem; -} -main .portfolio .card { - position: relative; - overflow: hidden; - color: white; - background-color: rgba(0, 0, 0, 0.8); - text-align: center; - box-shadow: 0 0 0 rgba(0, 0, 0, 0); - transition: box-shadow 0.3s; -} -main .portfolio .card .card-body { - position: absolute; - background-color: rgba(0, 0, 0, 0.6); - width: 100%; - height: 100%; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - opacity: 1; - transition: opacity .3s; -} -main .portfolio .card .card-body .card-title { - text-transform: uppercase; - font-size: 1rem; - margin-bottom: 1rem; - color: #FF6347; -} -main .portfolio .card .card-body .wrapper { - transition: -webkit-transform 0.3s; - transition: -webkit-transform .3s; - transition: transform .3s; - transition: transform .3s, -webkit-transform .3s; - transition: transform 0.3s, -webkit-transform 0.3s; -} -main .portfolio .card .card-body-2 { - position: absolute; - justify-content: center; - align-items: center; - top: 0; - bottom: 0; - left: 0; - right: 0; -} -main .portfolio .card .card-body-2 .card-look { - display: inline-block; - opacity: 0; - color: white; - -webkit-transform: translateY(-100px); - transform: translateY(-100px); - transition: opacity 0.3s, color 0.3s, -webkit-transform 0.3s; - transition: opacity .3s, color .3s, -webkit-transform .3s; - transition: opacity .3s, color .3s, transform .3s; - transition: opacity .3s, color .3s, transform .3s, -webkit-transform .3s; - transition: opacity 0.3s, color 0.3s, transform 0.3s, -webkit-transform 0.3s; - border: 3px solid #FF6347; - padding: 5px 20px; -} -main .portfolio .card .card-img-top { - opacity: .7; - -webkit-transform: scale(1.2, 1.2); - transform: scale(1.2, 1.2); - transition: -webkit-transform 0.3s; - transition: -webkit-transform .3s; - transition: transform .3s; - transition: transform .3s, -webkit-transform .3s; - transition: transform 0.3s, -webkit-transform 0.3s; -} -main .portfolio .card:hover { - cursor: pointer; - box-shadow: 0 0 30px rgba(0, 0, 0, 0.9); -} -main .portfolio .card:hover .card-body { - opacity: 0; -} -main .portfolio .card:hover .card-body .wrapper { - -webkit-transform: translateY(100px); - transform: translateY(100px); -} -main .portfolio .card:hover .card-img-top { - -webkit-transform: scale(1, 1); - transform: scale(1, 1); -} -main .portfolio .card:hover .card-look { - opacity: 1; - color: white; - -webkit-transform: translateY(0); - transform: translateY(0); -} -main .portfolio img { - width: 100%; - height: auto; -} -main .portfolio .header { - text-align: center; - color: white; -} -main .portfolio .header h2 { - padding: 5px 25px; - margin-left: auto; - margin-right: auto; - box-shadow: 0 11px 0 #222, 0 20px 20px white; -} -main .portfolio .header div { - max-width: 85%; - margin: auto; - letter-spacing: 4px; - font-size: 1.2em; -} -main .portfolio .header div.education { - text-align: justify; -} -footer h2 { - margin-bottom: 100px; -} -footer .contacts .header { - text-align: center; -} -footer .contacts .header h2 { - box-shadow: 0 11px 0 white, 0 20px 20px black; -} -footer .contacts .header div { - letter-spacing: 4px; - font-size: 1.2em; -} -footer .contacts .header div.education { - text-align: justify; -} -footer .contacts .item { - text-align: center; - margin-bottom: 2rem; -} -footer .contacts .item .ico { - margin-bottom: 1rem; -} -footer .contacts .item .ico span i { - color: #00AFF0; -} -footer .copyright { - background-color: #222; - color: white; - margin-bottom: 0; -} -footer .copyright i { - color: #FF6347; - cursor: pointer; -} - -.middle.animated { - -webkit-animation-duration: 1.5s; - animation-duration: 1.5s; -} -.animated.fadeInRight, -.animated.fadeInLeft { - -webkit-animation-duration: 1s; - animation-duration: 1s; -} -.navbar-nav .nav-item.item-4 { - -webkit-animation-duration: 1.6s; - animation-duration: 1.6s; -} -.navbar-nav .nav-item.item-3 { - -webkit-animation-duration: 1.2s; - animation-duration: 1.2s; -} -.navbar-nav .nav-item.item-2 { - -webkit-animation-duration: 0.8s; - animation-duration: 0.8s; -} -.navbar-nav .nav-item.item-1 { - -webkit-animation-duration: 0.4s; - animation-duration: 0.4s; -} - - -/* Large Devices, Wide Screens */ -@media only screen and (max-width : 1200px) { - main .about_me div .personal div.my_site span.hand i { - transform: translate(183px, -11px); - } - - header.main_display h1 { - font-size: 1.5rem; - } - - - header.main_display, - section.about_me{ - margin-bottom: 35px; - } - - header p.web_html, - header p.skills { - font-size: 14px ! important; - } - - header p.web_html { - margin-bottom: 9px; - } -} - - -@media only screen and (max-width : 954px) { - header.main_display .middle .skills{ - display: none; - } -} - - - -/* Medium Devices, Desktops */ -@media only screen and (max-width : 992px) { - - main .about_me div .personal div.my_site span.hand i { - transform: translate(-104px, 19px); - } - - footer .contacts .header h1 { - margin-bottom: 70px; - } - - main .portfolio .card .card-body .card-title { - font-size: 0.8rem; - } -} - -/* Small Devices, Tablets */ -@media only screen and (max-width : 768px) { - main .portfolio .card .card-body .card-title { - font-size: 0.7rem; - } - - main .portfolio { - padding-top: 50px; - } - - main .portfolio .header div { - font-size: 1rem; - } - - main .portfolio .header h1 { - margin-bottom: 47px; - } - -} - - -/* Small Devices, Tablets */ -@media only screen and (max-width : 576px) { - #portfolio__ .row.mb-sm-5 { - padding-left: 60px; - padding-right: 60px; - } - - main .portfolio .last-card { - margin-bottom: 4rem; - } - -} - -@media only screen and (max-width : 544px) { - main .portfolio .header div { - font-size: 0.8rem; - } -} - - -/* Extra Small Devices, Phones */ -@media only screen and (max-width : 480px) { - header.main_display p img { - transform: translateX(-106px) !important; - } - - h1{ - font-size: 1.7rem !important; - } -} - - -/*# sourceMappingURL=style.a23f76771d1e620ad174.css.map*/ \ No newline at end of file diff --git a/dist/style.a23f76771d1e620ad174.css.map b/dist/style.a23f76771d1e620ad174.css.map deleted file mode 100644 index 05fe1bb..0000000 --- a/dist/style.a23f76771d1e620ad174.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./css/animate.css","webpack:///./css/style.css (1)","webpack:///./less/style.less","webpack:///./less/animate.less","webpack:///./css/media.css"],"names":[],"mappings":";AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;ACr6GA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AC1BA,cAAc;AACd;EACE,qBAAqB;CACtB;AACD;EACE,gBAAgB;EAChB,YAAY;EACZ,SAAS;EACT,OAAO;EACP,gCAAgC;EAChC,YAAY;CACb;AACD;EACE,aAAa;EACb,qCAAqC;CACtC;AACD;EACE,0BAA0B;EAC1B,kBAAkB;EAClB,mBAAmB;EACnB,iBAAiB;CAClB;AACD;EACE,YAAY;EACZ,aAAa;EACb,eAAe;EACf,+BAA+B;EAC/B,oBAAoB;CACrB;AACD;EACE,YAAY;EACZ,YAAY;EACZ,0BAA0B;EAC1B,iDAAiD;EACjD,+CAA+C;EAC/C,uCAAuC;EACvC,8DAA8D;EAC9D,iEAAiE;CAClE;AACD;EACE,wCAAwC;EACxC,gCAAgC;EAChC,kDAAkD;EAClD,0CAA0C;CAC3C;AACD;EACE,wCAAwC;EACxC,gCAAgC;EAChC,kCAAkC;EAClC,0BAA0B;CAC3B;AACD;EACE,qCAAqC;EACrC,6BAA6B;EAC7B,WAAW;CACZ;AACD;EACE,oBAAoB;CACrB;AACD;EACE,aAAa;EACb,eAAe;EACf,0BAA0B;EAC1B,gBAAgB;EAChB,oBAAoB;EACpB,mBAAmB;EACnB,aAAa;EACb,cAAc;EACd,sBAAsB;CACvB;AACD;EACE,2CAA2C;CAC5C;AACD;EACE,aAAa;EACb,2BAA2B;CAC5B;AACD;EACE,oBAAoB;EACpB,kBAAkB;EAClB,gBAAgB;CACjB;AACD;EACE,qCAAqC;EACrC,6BAA6B;CAC9B;AACD;EACE,sBAAsB;EACtB,eAAe;EACf,YAAY;CACb;AACD;EACE,eAAe;EACf,eAAe;EACf,2CAA2C;CAC5C;AACD;EACE,kBAAkB;EAClB,iBAAiB;EACjB,eAAe;CAChB;AACD;EACE,gBAAgB;CACjB;AACD;EACE,cAAc;CACf;AACD;EACE,cAAc;CACf;AACD;EACE,qBAAqB;CACtB;AACD;EACE,qBAAqB;CACtB;AACD;EACE,eAAe;EACf,oBAAoB;CACrB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,8CAA8C;CAC/C;AACD;EACE,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,YAAY;CACb;AACD;EACE,oBAAoB;CACrB;AACD;EACE,qBAAqB;EACrB,oBAAoB;CACrB;AACD;EACE,qBAAqB;EACrB,eAAe;CAChB;AACD;EACE,oCAAoC;EACpC,4BAA4B;CAC7B;AACD;EACE,mBAAmB;EACnB,wBAAwB;EACxB,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;CAClB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,oBAAoB;EACpB,YAAY;EACZ,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,mCAAmC;EACnC,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,mCAAmC;EACnC,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,mCAAmC;EACnC,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,2CAA2C;EAC3C,mCAAmC;CACpC;AACD;EACE,qBAAqB;CACtB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,8CAA8C;CAC/C;AACD;EACE,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,mBAAmB;EACnB,gBAAgB;EAChB,sBAAsB;EACtB,0BAA0B;EAC1B,aAAa;EACb,iBAAiB;EACjB,mBAAmB;EACnB,gBAAgB;EAChB,eAAe;CAChB;AACD;EACE,mBAAmB;EACnB,eAAe;CAChB;AACD;EACE,eAAe;CAChB;AACD;EACE,uBAAuB;EACvB,mBAAmB;CACpB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,mBAAmB;EACnB,iBAAiB;EACjB,aAAa;EACb,qCAAqC;EACrC,mBAAmB;EACnB,mCAAmC;EACnC,4BAA4B;CAC7B;AACD;EACE,mBAAmB;EACnB,qCAAqC;EACrC,YAAY;EACZ,aAAa;EACb,cAAc;EACd,uBAAuB;EACvB,wBAAwB;EACxB,oBAAoB;EACpB,WAAW;EACX,wBAAwB;CACzB;AACD;EACE,0BAA0B;EAC1B,gBAAgB;EAChB,oBAAoB;EACpB,eAAe;CAChB;AACD;EACE,mCAAmC;EACnC,kCAAkC;EAClC,0BAA0B;EAC1B,iDAAiD;EACjD,mDAAmD;CACpD;AACD;EACE,mBAAmB;EACnB,wBAAwB;EACxB,oBAAoB;EACpB,OAAO;EACP,UAAU;EACV,QAAQ;EACR,SAAS;CACV;AACD;EACE,sBAAsB;EACtB,WAAW;EACX,aAAa;EACb,sCAAsC;EACtC,8BAA8B;EAC9B,6DAA6D;EAC7D,0DAA0D;EAC1D,kDAAkD;EAClD,yEAAyE;EACzE,6EAA6E;EAC7E,0BAA0B;EAC1B,kBAAkB;CACnB;AACD;EACE,YAAY;EACZ,mCAAmC;EACnC,2BAA2B;EAC3B,mCAAmC;EACnC,kCAAkC;EAClC,0BAA0B;EAC1B,iDAAiD;EACjD,mDAAmD;CACpD;AACD;EACE,gBAAgB;EAChB,wCAAwC;CACzC;AACD;EACE,WAAW;CACZ;AACD;EACE,qCAAqC;EACrC,6BAA6B;CAC9B;AACD;EACE,+BAA+B;EAC/B,uBAAuB;CACxB;AACD;EACE,WAAW;EACX,aAAa;EACb,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,YAAY;EACZ,aAAa;CACd;AACD;EACE,mBAAmB;EACnB,aAAa;CACd;AACD;EACE,kBAAkB;EAClB,kBAAkB;EAClB,mBAAmB;EACnB,6CAA6C;CAC9C;AACD;EACE,eAAe;EACf,aAAa;EACb,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,qBAAqB;CACtB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,8CAA8C;CAC/C;AACD;EACE,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,mBAAmB;EACnB,oBAAoB;CACrB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,eAAe;CAChB;AACD;EACE,uBAAuB;EACvB,aAAa;EACb,iBAAiB;CAClB;AACD;EACE,eAAe;EACf,gBAAgB;CACjB;;AC3YD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;;EAEE,+BAA+B;EAC/B,uBAAuB;CACxB;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;;;ACvBD;AACA;AACA;AACA,2C;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,4B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,K;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA","file":"style.a23f76771d1e620ad174.css","sourcesContent":["@charset \"UTF-8\";\n\n/*!\n * animate.css -http://daneden.me/animate\n * Version - 3.6.0\n * Licensed under the MIT license - http://opensource.org/licenses/MIT\n *\n * Copyright (c) 2018 Daniel Eden\n */\n\n.animated {\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n -webkit-animation-fill-mode: both;\n animation-fill-mode: both;\n}\n\n.animated.infinite {\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n}\n\n@-webkit-keyframes bounce {\n from,\n 20%,\n 53%,\n 80%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 40%,\n 43% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n -webkit-transform: translate3d(0, -30px, 0);\n transform: translate3d(0, -30px, 0);\n }\n\n 70% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n -webkit-transform: translate3d(0, -15px, 0);\n transform: translate3d(0, -15px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, -4px, 0);\n transform: translate3d(0, -4px, 0);\n }\n}\n\n@keyframes bounce {\n from,\n 20%,\n 53%,\n 80%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 40%,\n 43% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n -webkit-transform: translate3d(0, -30px, 0);\n transform: translate3d(0, -30px, 0);\n }\n\n 70% {\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n -webkit-transform: translate3d(0, -15px, 0);\n transform: translate3d(0, -15px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, -4px, 0);\n transform: translate3d(0, -4px, 0);\n }\n}\n\n.bounce {\n -webkit-animation-name: bounce;\n animation-name: bounce;\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n}\n\n@-webkit-keyframes flash {\n from,\n 50%,\n to {\n opacity: 1;\n }\n\n 25%,\n 75% {\n opacity: 0;\n }\n}\n\n@keyframes flash {\n from,\n 50%,\n to {\n opacity: 1;\n }\n\n 25%,\n 75% {\n opacity: 0;\n }\n}\n\n.flash {\n -webkit-animation-name: flash;\n animation-name: flash;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes pulse {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.05, 1.05, 1.05);\n transform: scale3d(1.05, 1.05, 1.05);\n }\n\n to {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes pulse {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.05, 1.05, 1.05);\n transform: scale3d(1.05, 1.05, 1.05);\n }\n\n to {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.pulse {\n -webkit-animation-name: pulse;\n animation-name: pulse;\n}\n\n@-webkit-keyframes rubberBand {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 30% {\n -webkit-transform: scale3d(1.25, 0.75, 1);\n transform: scale3d(1.25, 0.75, 1);\n }\n\n 40% {\n -webkit-transform: scale3d(0.75, 1.25, 1);\n transform: scale3d(0.75, 1.25, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.15, 0.85, 1);\n transform: scale3d(1.15, 0.85, 1);\n }\n\n 65% {\n -webkit-transform: scale3d(0.95, 1.05, 1);\n transform: scale3d(0.95, 1.05, 1);\n }\n\n 75% {\n -webkit-transform: scale3d(1.05, 0.95, 1);\n transform: scale3d(1.05, 0.95, 1);\n }\n\n to {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes rubberBand {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 30% {\n -webkit-transform: scale3d(1.25, 0.75, 1);\n transform: scale3d(1.25, 0.75, 1);\n }\n\n 40% {\n -webkit-transform: scale3d(0.75, 1.25, 1);\n transform: scale3d(0.75, 1.25, 1);\n }\n\n 50% {\n -webkit-transform: scale3d(1.15, 0.85, 1);\n transform: scale3d(1.15, 0.85, 1);\n }\n\n 65% {\n -webkit-transform: scale3d(0.95, 1.05, 1);\n transform: scale3d(0.95, 1.05, 1);\n }\n\n 75% {\n -webkit-transform: scale3d(1.05, 0.95, 1);\n transform: scale3d(1.05, 0.95, 1);\n }\n\n to {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.rubberBand {\n -webkit-animation-name: rubberBand;\n animation-name: rubberBand;\n}\n\n@-webkit-keyframes shake {\n from,\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 10%,\n 30%,\n 50%,\n 70%,\n 90% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 20%,\n 40%,\n 60%,\n 80% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n}\n\n@keyframes shake {\n from,\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 10%,\n 30%,\n 50%,\n 70%,\n 90% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 20%,\n 40%,\n 60%,\n 80% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n}\n\n.shake {\n -webkit-animation-name: shake;\n animation-name: shake;\n}\n\n@-webkit-keyframes headShake {\n 0% {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n }\n\n 6.5% {\n -webkit-transform: translateX(-6px) rotateY(-9deg);\n transform: translateX(-6px) rotateY(-9deg);\n }\n\n 18.5% {\n -webkit-transform: translateX(5px) rotateY(7deg);\n transform: translateX(5px) rotateY(7deg);\n }\n\n 31.5% {\n -webkit-transform: translateX(-3px) rotateY(-5deg);\n transform: translateX(-3px) rotateY(-5deg);\n }\n\n 43.5% {\n -webkit-transform: translateX(2px) rotateY(3deg);\n transform: translateX(2px) rotateY(3deg);\n }\n\n 50% {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n }\n}\n\n@keyframes headShake {\n 0% {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n }\n\n 6.5% {\n -webkit-transform: translateX(-6px) rotateY(-9deg);\n transform: translateX(-6px) rotateY(-9deg);\n }\n\n 18.5% {\n -webkit-transform: translateX(5px) rotateY(7deg);\n transform: translateX(5px) rotateY(7deg);\n }\n\n 31.5% {\n -webkit-transform: translateX(-3px) rotateY(-5deg);\n transform: translateX(-3px) rotateY(-5deg);\n }\n\n 43.5% {\n -webkit-transform: translateX(2px) rotateY(3deg);\n transform: translateX(2px) rotateY(3deg);\n }\n\n 50% {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n }\n}\n\n.headShake {\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n -webkit-animation-name: headShake;\n animation-name: headShake;\n}\n\n@-webkit-keyframes swing {\n 20% {\n -webkit-transform: rotate3d(0, 0, 1, 15deg);\n transform: rotate3d(0, 0, 1, 15deg);\n }\n\n 40% {\n -webkit-transform: rotate3d(0, 0, 1, -10deg);\n transform: rotate3d(0, 0, 1, -10deg);\n }\n\n 60% {\n -webkit-transform: rotate3d(0, 0, 1, 5deg);\n transform: rotate3d(0, 0, 1, 5deg);\n }\n\n 80% {\n -webkit-transform: rotate3d(0, 0, 1, -5deg);\n transform: rotate3d(0, 0, 1, -5deg);\n }\n\n to {\n -webkit-transform: rotate3d(0, 0, 1, 0deg);\n transform: rotate3d(0, 0, 1, 0deg);\n }\n}\n\n@keyframes swing {\n 20% {\n -webkit-transform: rotate3d(0, 0, 1, 15deg);\n transform: rotate3d(0, 0, 1, 15deg);\n }\n\n 40% {\n -webkit-transform: rotate3d(0, 0, 1, -10deg);\n transform: rotate3d(0, 0, 1, -10deg);\n }\n\n 60% {\n -webkit-transform: rotate3d(0, 0, 1, 5deg);\n transform: rotate3d(0, 0, 1, 5deg);\n }\n\n 80% {\n -webkit-transform: rotate3d(0, 0, 1, -5deg);\n transform: rotate3d(0, 0, 1, -5deg);\n }\n\n to {\n -webkit-transform: rotate3d(0, 0, 1, 0deg);\n transform: rotate3d(0, 0, 1, 0deg);\n }\n}\n\n.swing {\n -webkit-transform-origin: top center;\n transform-origin: top center;\n -webkit-animation-name: swing;\n animation-name: swing;\n}\n\n@-webkit-keyframes tada {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 10%,\n 20% {\n -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n }\n\n 30%,\n 50%,\n 70%,\n 90% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n }\n\n 40%,\n 60%,\n 80% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n }\n\n to {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes tada {\n from {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n\n 10%,\n 20% {\n -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n }\n\n 30%,\n 50%,\n 70%,\n 90% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n }\n\n 40%,\n 60%,\n 80% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n }\n\n to {\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.tada {\n -webkit-animation-name: tada;\n animation-name: tada;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes wobble {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 15% {\n -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n }\n\n 30% {\n -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n }\n\n 45% {\n -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n }\n\n 60% {\n -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n }\n\n 75% {\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes wobble {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 15% {\n -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n }\n\n 30% {\n -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n }\n\n 45% {\n -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n }\n\n 60% {\n -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n }\n\n 75% {\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.wobble {\n -webkit-animation-name: wobble;\n animation-name: wobble;\n}\n\n@-webkit-keyframes jello {\n from,\n 11.1%,\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 22.2% {\n -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n transform: skewX(-12.5deg) skewY(-12.5deg);\n }\n\n 33.3% {\n -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n transform: skewX(6.25deg) skewY(6.25deg);\n }\n\n 44.4% {\n -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n transform: skewX(-3.125deg) skewY(-3.125deg);\n }\n\n 55.5% {\n -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n transform: skewX(1.5625deg) skewY(1.5625deg);\n }\n\n 66.6% {\n -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n transform: skewX(-0.78125deg) skewY(-0.78125deg);\n }\n\n 77.7% {\n -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n transform: skewX(0.390625deg) skewY(0.390625deg);\n }\n\n 88.8% {\n -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n }\n}\n\n@keyframes jello {\n from,\n 11.1%,\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n 22.2% {\n -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n transform: skewX(-12.5deg) skewY(-12.5deg);\n }\n\n 33.3% {\n -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n transform: skewX(6.25deg) skewY(6.25deg);\n }\n\n 44.4% {\n -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n transform: skewX(-3.125deg) skewY(-3.125deg);\n }\n\n 55.5% {\n -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n transform: skewX(1.5625deg) skewY(1.5625deg);\n }\n\n 66.6% {\n -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n transform: skewX(-0.78125deg) skewY(-0.78125deg);\n }\n\n 77.7% {\n -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n transform: skewX(0.390625deg) skewY(0.390625deg);\n }\n\n 88.8% {\n -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n }\n}\n\n.jello {\n -webkit-animation-name: jello;\n animation-name: jello;\n -webkit-transform-origin: center;\n transform-origin: center;\n}\n\n@-webkit-keyframes bounceIn {\n from,\n 20%,\n 40%,\n 60%,\n 80%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n 20% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n 40% {\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\n transform: scale3d(0.9, 0.9, 0.9);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\n transform: scale3d(1.03, 1.03, 1.03);\n }\n\n 80% {\n -webkit-transform: scale3d(0.97, 0.97, 0.97);\n transform: scale3d(0.97, 0.97, 0.97);\n }\n\n to {\n opacity: 1;\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n@keyframes bounceIn {\n from,\n 20%,\n 40%,\n 60%,\n 80%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n 20% {\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n 40% {\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\n transform: scale3d(0.9, 0.9, 0.9);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\n transform: scale3d(1.03, 1.03, 1.03);\n }\n\n 80% {\n -webkit-transform: scale3d(0.97, 0.97, 0.97);\n transform: scale3d(0.97, 0.97, 0.97);\n }\n\n to {\n opacity: 1;\n -webkit-transform: scale3d(1, 1, 1);\n transform: scale3d(1, 1, 1);\n }\n}\n\n.bounceIn {\n -webkit-animation-duration: 0.75s;\n animation-duration: 0.75s;\n -webkit-animation-name: bounceIn;\n animation-name: bounceIn;\n}\n\n@-webkit-keyframes bounceInDown {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(0, -3000px, 0);\n transform: translate3d(0, -3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, 25px, 0);\n transform: translate3d(0, 25px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, 5px, 0);\n transform: translate3d(0, 5px, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes bounceInDown {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(0, -3000px, 0);\n transform: translate3d(0, -3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, 25px, 0);\n transform: translate3d(0, 25px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, 5px, 0);\n transform: translate3d(0, 5px, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.bounceInDown {\n -webkit-animation-name: bounceInDown;\n animation-name: bounceInDown;\n}\n\n@-webkit-keyframes bounceInLeft {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(-3000px, 0, 0);\n transform: translate3d(-3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(25px, 0, 0);\n transform: translate3d(25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(5px, 0, 0);\n transform: translate3d(5px, 0, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes bounceInLeft {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n -webkit-transform: translate3d(-3000px, 0, 0);\n transform: translate3d(-3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(25px, 0, 0);\n transform: translate3d(25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(-10px, 0, 0);\n transform: translate3d(-10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(5px, 0, 0);\n transform: translate3d(5px, 0, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.bounceInLeft {\n -webkit-animation-name: bounceInLeft;\n animation-name: bounceInLeft;\n}\n\n@-webkit-keyframes bounceInRight {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(3000px, 0, 0);\n transform: translate3d(3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(-25px, 0, 0);\n transform: translate3d(-25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(-5px, 0, 0);\n transform: translate3d(-5px, 0, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes bounceInRight {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(3000px, 0, 0);\n transform: translate3d(3000px, 0, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(-25px, 0, 0);\n transform: translate3d(-25px, 0, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(10px, 0, 0);\n transform: translate3d(10px, 0, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(-5px, 0, 0);\n transform: translate3d(-5px, 0, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.bounceInRight {\n -webkit-animation-name: bounceInRight;\n animation-name: bounceInRight;\n}\n\n@-webkit-keyframes bounceInUp {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 3000px, 0);\n transform: translate3d(0, 3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, -5px, 0);\n transform: translate3d(0, -5px, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes bounceInUp {\n from,\n 60%,\n 75%,\n 90%,\n to {\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 3000px, 0);\n transform: translate3d(0, 3000px, 0);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n 75% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 90% {\n -webkit-transform: translate3d(0, -5px, 0);\n transform: translate3d(0, -5px, 0);\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.bounceInUp {\n -webkit-animation-name: bounceInUp;\n animation-name: bounceInUp;\n}\n\n@-webkit-keyframes bounceOut {\n 20% {\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\n transform: scale3d(0.9, 0.9, 0.9);\n }\n\n 50%,\n 55% {\n opacity: 1;\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n}\n\n@keyframes bounceOut {\n 20% {\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\n transform: scale3d(0.9, 0.9, 0.9);\n }\n\n 50%,\n 55% {\n opacity: 1;\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n}\n\n.bounceOut {\n -webkit-animation-duration: 0.75s;\n animation-duration: 0.75s;\n -webkit-animation-name: bounceOut;\n animation-name: bounceOut;\n}\n\n@-webkit-keyframes bounceOutDown {\n 20% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 40%,\n 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n@keyframes bounceOutDown {\n 20% {\n -webkit-transform: translate3d(0, 10px, 0);\n transform: translate3d(0, 10px, 0);\n }\n\n 40%,\n 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n.bounceOutDown {\n -webkit-animation-name: bounceOutDown;\n animation-name: bounceOutDown;\n}\n\n@-webkit-keyframes bounceOutLeft {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(20px, 0, 0);\n transform: translate3d(20px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n@keyframes bounceOutLeft {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(20px, 0, 0);\n transform: translate3d(20px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n.bounceOutLeft {\n -webkit-animation-name: bounceOutLeft;\n animation-name: bounceOutLeft;\n}\n\n@-webkit-keyframes bounceOutRight {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(-20px, 0, 0);\n transform: translate3d(-20px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n@keyframes bounceOutRight {\n 20% {\n opacity: 1;\n -webkit-transform: translate3d(-20px, 0, 0);\n transform: translate3d(-20px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n.bounceOutRight {\n -webkit-animation-name: bounceOutRight;\n animation-name: bounceOutRight;\n}\n\n@-webkit-keyframes bounceOutUp {\n 20% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 40%,\n 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, 20px, 0);\n transform: translate3d(0, 20px, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n@keyframes bounceOutUp {\n 20% {\n -webkit-transform: translate3d(0, -10px, 0);\n transform: translate3d(0, -10px, 0);\n }\n\n 40%,\n 45% {\n opacity: 1;\n -webkit-transform: translate3d(0, 20px, 0);\n transform: translate3d(0, 20px, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n.bounceOutUp {\n -webkit-animation-name: bounceOutUp;\n animation-name: bounceOutUp;\n}\n\n@-webkit-keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.fadeIn {\n -webkit-animation-name: fadeIn;\n animation-name: fadeIn;\n}\n\n@-webkit-keyframes fadeInDown {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInDown {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInDown {\n -webkit-animation-name: fadeInDown;\n animation-name: fadeInDown;\n}\n\n@-webkit-keyframes fadeInDownBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInDownBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInDownBig {\n -webkit-animation-name: fadeInDownBig;\n animation-name: fadeInDownBig;\n}\n\n@-webkit-keyframes fadeInLeft {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInLeft {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInLeft {\n -webkit-animation-name: fadeInLeft;\n animation-name: fadeInLeft;\n}\n\n@-webkit-keyframes fadeInLeftBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInLeftBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInLeftBig {\n -webkit-animation-name: fadeInLeftBig;\n animation-name: fadeInLeftBig;\n}\n\n@-webkit-keyframes fadeInRight {\n from {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInRight {\n from {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInRight {\n -webkit-animation-name: fadeInRight;\n animation-name: fadeInRight;\n}\n\n@-webkit-keyframes fadeInRightBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInRightBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInRightBig {\n -webkit-animation-name: fadeInRightBig;\n animation-name: fadeInRightBig;\n}\n\n@-webkit-keyframes fadeInUp {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInUp {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInUp {\n -webkit-animation-name: fadeInUp;\n animation-name: fadeInUp;\n}\n\n@-webkit-keyframes fadeInUpBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes fadeInUpBig {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.fadeInUpBig {\n -webkit-animation-name: fadeInUpBig;\n animation-name: fadeInUpBig;\n}\n\n@-webkit-keyframes fadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n.fadeOut {\n -webkit-animation-name: fadeOut;\n animation-name: fadeOut;\n}\n\n@-webkit-keyframes fadeOutDown {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n@keyframes fadeOutDown {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n.fadeOutDown {\n -webkit-animation-name: fadeOutDown;\n animation-name: fadeOutDown;\n}\n\n@-webkit-keyframes fadeOutDownBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n@keyframes fadeOutDownBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 2000px, 0);\n transform: translate3d(0, 2000px, 0);\n }\n}\n\n.fadeOutDownBig {\n -webkit-animation-name: fadeOutDownBig;\n animation-name: fadeOutDownBig;\n}\n\n@-webkit-keyframes fadeOutLeft {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n@keyframes fadeOutLeft {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.fadeOutLeft {\n -webkit-animation-name: fadeOutLeft;\n animation-name: fadeOutLeft;\n}\n\n@-webkit-keyframes fadeOutLeftBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n@keyframes fadeOutLeftBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(-2000px, 0, 0);\n transform: translate3d(-2000px, 0, 0);\n }\n}\n\n.fadeOutLeftBig {\n -webkit-animation-name: fadeOutLeftBig;\n animation-name: fadeOutLeftBig;\n}\n\n@-webkit-keyframes fadeOutRight {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n@keyframes fadeOutRight {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.fadeOutRight {\n -webkit-animation-name: fadeOutRight;\n animation-name: fadeOutRight;\n}\n\n@-webkit-keyframes fadeOutRightBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n@keyframes fadeOutRightBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(2000px, 0, 0);\n transform: translate3d(2000px, 0, 0);\n }\n}\n\n.fadeOutRightBig {\n -webkit-animation-name: fadeOutRightBig;\n animation-name: fadeOutRightBig;\n}\n\n@-webkit-keyframes fadeOutUp {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n@keyframes fadeOutUp {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n.fadeOutUp {\n -webkit-animation-name: fadeOutUp;\n animation-name: fadeOutUp;\n}\n\n@-webkit-keyframes fadeOutUpBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n@keyframes fadeOutUpBig {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, -2000px, 0);\n transform: translate3d(0, -2000px, 0);\n }\n}\n\n.fadeOutUpBig {\n -webkit-animation-name: fadeOutUpBig;\n animation-name: fadeOutUpBig;\n}\n\n@-webkit-keyframes flip {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 40% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 50% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 80% {\n -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n}\n\n@keyframes flip {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 40% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 50% {\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 80% {\n -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n}\n\n.animated.flip {\n -webkit-backface-visibility: visible;\n backface-visibility: visible;\n -webkit-animation-name: flip;\n animation-name: flip;\n}\n\n@-webkit-keyframes flipInX {\n from {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n@keyframes flipInX {\n from {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n.flipInX {\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n -webkit-animation-name: flipInX;\n animation-name: flipInX;\n}\n\n@-webkit-keyframes flipInY {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n }\n\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n@keyframes flipInY {\n from {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n }\n\n 60% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n }\n\n to {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n}\n\n.flipInY {\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n -webkit-animation-name: flipInY;\n animation-name: flipInY;\n}\n\n@-webkit-keyframes flipOutX {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n opacity: 1;\n }\n\n to {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n opacity: 0;\n }\n}\n\n@keyframes flipOutX {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n opacity: 1;\n }\n\n to {\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n opacity: 0;\n }\n}\n\n.flipOutX {\n -webkit-animation-duration: 0.75s;\n animation-duration: 0.75s;\n -webkit-animation-name: flipOutX;\n animation-name: flipOutX;\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n}\n\n@-webkit-keyframes flipOutY {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n opacity: 1;\n }\n\n to {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n opacity: 0;\n }\n}\n\n@keyframes flipOutY {\n from {\n -webkit-transform: perspective(400px);\n transform: perspective(400px);\n }\n\n 30% {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n opacity: 1;\n }\n\n to {\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n opacity: 0;\n }\n}\n\n.flipOutY {\n -webkit-animation-duration: 0.75s;\n animation-duration: 0.75s;\n -webkit-backface-visibility: visible !important;\n backface-visibility: visible !important;\n -webkit-animation-name: flipOutY;\n animation-name: flipOutY;\n}\n\n@-webkit-keyframes lightSpeedIn {\n from {\n -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n transform: translate3d(100%, 0, 0) skewX(-30deg);\n opacity: 0;\n }\n\n 60% {\n -webkit-transform: skewX(20deg);\n transform: skewX(20deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: skewX(-5deg);\n transform: skewX(-5deg);\n opacity: 1;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n@keyframes lightSpeedIn {\n from {\n -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n transform: translate3d(100%, 0, 0) skewX(-30deg);\n opacity: 0;\n }\n\n 60% {\n -webkit-transform: skewX(20deg);\n transform: skewX(20deg);\n opacity: 1;\n }\n\n 80% {\n -webkit-transform: skewX(-5deg);\n transform: skewX(-5deg);\n opacity: 1;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n.lightSpeedIn {\n -webkit-animation-name: lightSpeedIn;\n animation-name: lightSpeedIn;\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n}\n\n@-webkit-keyframes lightSpeedOut {\n from {\n opacity: 1;\n }\n\n to {\n -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n transform: translate3d(100%, 0, 0) skewX(30deg);\n opacity: 0;\n }\n}\n\n@keyframes lightSpeedOut {\n from {\n opacity: 1;\n }\n\n to {\n -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n transform: translate3d(100%, 0, 0) skewX(30deg);\n opacity: 0;\n }\n}\n\n.lightSpeedOut {\n -webkit-animation-name: lightSpeedOut;\n animation-name: lightSpeedOut;\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n}\n\n@-webkit-keyframes rotateIn {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, -200deg);\n transform: rotate3d(0, 0, 1, -200deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n@keyframes rotateIn {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, -200deg);\n transform: rotate3d(0, 0, 1, -200deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n.rotateIn {\n -webkit-animation-name: rotateIn;\n animation-name: rotateIn;\n}\n\n@-webkit-keyframes rotateInDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n@keyframes rotateInDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n.rotateInDownLeft {\n -webkit-animation-name: rotateInDownLeft;\n animation-name: rotateInDownLeft;\n}\n\n@-webkit-keyframes rotateInDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n@keyframes rotateInDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n.rotateInDownRight {\n -webkit-animation-name: rotateInDownRight;\n animation-name: rotateInDownRight;\n}\n\n@-webkit-keyframes rotateInUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n@keyframes rotateInUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n.rotateInUpLeft {\n -webkit-animation-name: rotateInUpLeft;\n animation-name: rotateInUpLeft;\n}\n\n@-webkit-keyframes rotateInUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -90deg);\n transform: rotate3d(0, 0, 1, -90deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n@keyframes rotateInUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -90deg);\n transform: rotate3d(0, 0, 1, -90deg);\n opacity: 0;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n\n.rotateInUpRight {\n -webkit-animation-name: rotateInUpRight;\n animation-name: rotateInUpRight;\n}\n\n@-webkit-keyframes rotateOut {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, 200deg);\n transform: rotate3d(0, 0, 1, 200deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOut {\n from {\n -webkit-transform-origin: center;\n transform-origin: center;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: center;\n transform-origin: center;\n -webkit-transform: rotate3d(0, 0, 1, 200deg);\n transform: rotate3d(0, 0, 1, 200deg);\n opacity: 0;\n }\n}\n\n.rotateOut {\n -webkit-animation-name: rotateOut;\n animation-name: rotateOut;\n}\n\n@-webkit-keyframes rotateOutDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutDownLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n}\n\n.rotateOutDownLeft {\n -webkit-animation-name: rotateOutDownLeft;\n animation-name: rotateOutDownLeft;\n}\n\n@-webkit-keyframes rotateOutDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutDownRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n.rotateOutDownRight {\n -webkit-animation-name: rotateOutDownRight;\n animation-name: rotateOutDownRight;\n}\n\n@-webkit-keyframes rotateOutUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutUpLeft {\n from {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: left bottom;\n transform-origin: left bottom;\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n}\n\n.rotateOutUpLeft {\n -webkit-animation-name: rotateOutUpLeft;\n animation-name: rotateOutUpLeft;\n}\n\n@-webkit-keyframes rotateOutUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 90deg);\n transform: rotate3d(0, 0, 1, 90deg);\n opacity: 0;\n }\n}\n\n@keyframes rotateOutUpRight {\n from {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n opacity: 1;\n }\n\n to {\n -webkit-transform-origin: right bottom;\n transform-origin: right bottom;\n -webkit-transform: rotate3d(0, 0, 1, 90deg);\n transform: rotate3d(0, 0, 1, 90deg);\n opacity: 0;\n }\n}\n\n.rotateOutUpRight {\n -webkit-animation-name: rotateOutUpRight;\n animation-name: rotateOutUpRight;\n}\n\n@-webkit-keyframes hinge {\n 0% {\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 20%,\n 60% {\n -webkit-transform: rotate3d(0, 0, 1, 80deg);\n transform: rotate3d(0, 0, 1, 80deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 40%,\n 80% {\n -webkit-transform: rotate3d(0, 0, 1, 60deg);\n transform: rotate3d(0, 0, 1, 60deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n opacity: 1;\n }\n\n to {\n -webkit-transform: translate3d(0, 700px, 0);\n transform: translate3d(0, 700px, 0);\n opacity: 0;\n }\n}\n\n@keyframes hinge {\n 0% {\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 20%,\n 60% {\n -webkit-transform: rotate3d(0, 0, 1, 80deg);\n transform: rotate3d(0, 0, 1, 80deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 40%,\n 80% {\n -webkit-transform: rotate3d(0, 0, 1, 60deg);\n transform: rotate3d(0, 0, 1, 60deg);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n opacity: 1;\n }\n\n to {\n -webkit-transform: translate3d(0, 700px, 0);\n transform: translate3d(0, 700px, 0);\n opacity: 0;\n }\n}\n\n.hinge {\n -webkit-animation-duration: 2s;\n animation-duration: 2s;\n -webkit-animation-name: hinge;\n animation-name: hinge;\n}\n\n@-webkit-keyframes jackInTheBox {\n from {\n opacity: 0;\n -webkit-transform: scale(0.1) rotate(30deg);\n transform: scale(0.1) rotate(30deg);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n }\n\n 50% {\n -webkit-transform: rotate(-10deg);\n transform: rotate(-10deg);\n }\n\n 70% {\n -webkit-transform: rotate(3deg);\n transform: rotate(3deg);\n }\n\n to {\n opacity: 1;\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n}\n\n@keyframes jackInTheBox {\n from {\n opacity: 0;\n -webkit-transform: scale(0.1) rotate(30deg);\n transform: scale(0.1) rotate(30deg);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n }\n\n 50% {\n -webkit-transform: rotate(-10deg);\n transform: rotate(-10deg);\n }\n\n 70% {\n -webkit-transform: rotate(3deg);\n transform: rotate(3deg);\n }\n\n to {\n opacity: 1;\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n}\n\n.jackInTheBox {\n -webkit-animation-name: jackInTheBox;\n animation-name: jackInTheBox;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollIn {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes rollIn {\n from {\n opacity: 0;\n -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n }\n\n to {\n opacity: 1;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.rollIn {\n -webkit-animation-name: rollIn;\n animation-name: rollIn;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n }\n}\n\n@keyframes rollOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n }\n}\n\n.rollOut {\n -webkit-animation-name: rollOut;\n animation-name: rollOut;\n}\n\n@-webkit-keyframes zoomIn {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n 50% {\n opacity: 1;\n }\n}\n\n@keyframes zoomIn {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n 50% {\n opacity: 1;\n }\n}\n\n.zoomIn {\n -webkit-animation-name: zoomIn;\n animation-name: zoomIn;\n}\n\n@-webkit-keyframes zoomInDown {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n@keyframes zoomInDown {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n.zoomInDown {\n -webkit-animation-name: zoomInDown;\n animation-name: zoomInDown;\n}\n\n@-webkit-keyframes zoomInLeft {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n@keyframes zoomInLeft {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n.zoomInLeft {\n -webkit-animation-name: zoomInLeft;\n animation-name: zoomInLeft;\n}\n\n@-webkit-keyframes zoomInRight {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n@keyframes zoomInRight {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n.zoomInRight {\n -webkit-animation-name: zoomInRight;\n animation-name: zoomInRight;\n}\n\n@-webkit-keyframes zoomInUp {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n@keyframes zoomInUp {\n from {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n.zoomInUp {\n -webkit-animation-name: zoomInUp;\n animation-name: zoomInUp;\n}\n\n@-webkit-keyframes zoomOut {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes zoomOut {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 0;\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n to {\n opacity: 0;\n }\n}\n\n.zoomOut {\n -webkit-animation-name: zoomOut;\n animation-name: zoomOut;\n}\n\n@-webkit-keyframes zoomOutDown {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n@keyframes zoomOutDown {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n.zoomOutDown {\n -webkit-animation-name: zoomOutDown;\n animation-name: zoomOutDown;\n}\n\n@-webkit-keyframes zoomOutLeft {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\n transform: scale(0.1) translate3d(-2000px, 0, 0);\n -webkit-transform-origin: left center;\n transform-origin: left center;\n }\n}\n\n@keyframes zoomOutLeft {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\n transform: scale(0.1) translate3d(-2000px, 0, 0);\n -webkit-transform-origin: left center;\n transform-origin: left center;\n }\n}\n\n.zoomOutLeft {\n -webkit-animation-name: zoomOutLeft;\n animation-name: zoomOutLeft;\n}\n\n@-webkit-keyframes zoomOutRight {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\n transform: scale(0.1) translate3d(2000px, 0, 0);\n -webkit-transform-origin: right center;\n transform-origin: right center;\n }\n}\n\n@keyframes zoomOutRight {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\n transform: scale(0.1) translate3d(2000px, 0, 0);\n -webkit-transform-origin: right center;\n transform-origin: right center;\n }\n}\n\n.zoomOutRight {\n -webkit-animation-name: zoomOutRight;\n animation-name: zoomOutRight;\n}\n\n@-webkit-keyframes zoomOutUp {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n@keyframes zoomOutUp {\n 40% {\n opacity: 1;\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n to {\n opacity: 0;\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n}\n\n.zoomOutUp {\n -webkit-animation-name: zoomOutUp;\n animation-name: zoomOutUp;\n}\n\n@-webkit-keyframes slideInDown {\n from {\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInDown {\n from {\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInDown {\n -webkit-animation-name: slideInDown;\n animation-name: slideInDown;\n}\n\n@-webkit-keyframes slideInLeft {\n from {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInLeft {\n from {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInLeft {\n -webkit-animation-name: slideInLeft;\n animation-name: slideInLeft;\n}\n\n@-webkit-keyframes slideInRight {\n from {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInRight {\n from {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInRight {\n -webkit-animation-name: slideInRight;\n animation-name: slideInRight;\n}\n\n@-webkit-keyframes slideInUp {\n from {\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInUp {\n from {\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n visibility: visible;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInUp {\n -webkit-animation-name: slideInUp;\n animation-name: slideInUp;\n}\n\n@-webkit-keyframes slideOutDown {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n@keyframes slideOutDown {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n\n.slideOutDown {\n -webkit-animation-name: slideOutDown;\n animation-name: slideOutDown;\n}\n\n@-webkit-keyframes slideOutLeft {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n@keyframes slideOutLeft {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.slideOutLeft {\n -webkit-animation-name: slideOutLeft;\n animation-name: slideOutLeft;\n}\n\n@-webkit-keyframes slideOutRight {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n@keyframes slideOutRight {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n\n.slideOutRight {\n -webkit-animation-name: slideOutRight;\n animation-name: slideOutRight;\n}\n\n@-webkit-keyframes slideOutUp {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n@keyframes slideOutUp {\n from {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n\n.slideOutUp {\n -webkit-animation-name: slideOutUp;\n animation-name: slideOutUp;\n}\n","body {\n font-family: 'Open Sans', sans-serif;\n}\n\n.main_display {\n text-transform: uppercase;\n}\n\n\n\n.parallax-window {\n min-height: 100vh;\n background-color: transparent;\n text-align: center;\n /* background-image: url('../image/main_picture.jpg'); */\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center center;\n}\n\nsection {\n margin-bottom: 15px;\n}\n\nimg {\n max-width: 100%;\n}\n","/* #1ee30b; */\nheader.main_display {\n margin-bottom: 120px;\n}\nheader.main_display .nav-menu {\n position: fixed;\n z-index: 50;\n right: 0;\n top: 0;\n transition: background-color 1s;\n width: 100%;\n}\nheader.main_display .nav-menu.show {\n height: 100%;\n background-color: rgba(0, 0, 0, 0.8);\n}\nheader.main_display .nav-menu button {\n background-color: #343a40;\n margin-left: auto;\n margin-right: 1rem;\n margin-top: 1rem;\n}\nheader.main_display .nav-menu button .lines {\n width: 30px;\n height: 30px;\n padding: 3px 0;\n justify-content: space-between;\n align-items: center;\n}\nheader.main_display .nav-menu button .lines .line {\n width: 30px;\n height: 2px;\n background-color: #9A9DA0;\n transition: opacity 0.5s, -webkit-transform 0.5s;\n transition: opacity .5s, -webkit-transform .5s;\n transition: transform .5s, opacity .5s;\n transition: transform .5s, opacity .5s, -webkit-transform .5s;\n transition: transform 0.5s, opacity 0.5s, -webkit-transform 0.5s;\n}\nheader.main_display .nav-menu button .lines .line-first.x {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n -webkit-transform: translateY(11px) rotate(45deg);\n transform: translateY(11px) rotate(45deg);\n}\nheader.main_display .nav-menu button .lines .line-second.x {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n}\nheader.main_display .nav-menu button .lines .line-third.x {\n -webkit-transform: translateY(-11px);\n transform: translateY(-11px);\n opacity: 0;\n}\nheader.main_display .nav-menu .navbar ul li {\n transition: all .3s;\n}\nheader.main_display .nav-menu .navbar ul li a {\n color: white;\n display: block;\n text-transform: uppercase;\n font-size: 1rem;\n letter-spacing: 5px;\n position: relative;\n height: 60px;\n outline: none;\n transition: color .5s;\n}\nheader.main_display .nav-menu .navbar ul li:hover {\n background-color: rgba(255, 255, 255, 0.3);\n}\nheader.main_display .nav-menu .navbar ul li:hover a {\n color: white;\n text-decoration: underline;\n}\nheader.main_display p {\n letter-spacing: 5px;\n font-weight: bold;\n font-size: 15px;\n}\nheader.main_display p.logo-line {\n -webkit-transform: translateX(-2rem);\n transform: translateX(-2rem);\n}\nheader.main_display p img {\n display: inline-block;\n height: 5.5rem;\n width: auto;\n}\nheader.main_display .middle {\n max-width: 80%;\n margin: 0 auto;\n background-color: rgba(255, 255, 255, 0.6);\n}\nheader.main_display .middle h1 {\n font-size: 1.8rem;\n font-weight: 600;\n color: #072704;\n}\nheader.main_display .middle .skills {\n font-size: 1rem;\n}\nheader.main_display .empty {\n height: 10rem;\n}\nmain {\n padding: 15px;\n}\nmain h2 {\n margin-bottom: 100px;\n}\nmain .about_me {\n margin-bottom: 100px;\n}\nmain .about_me h4 {\n color: #072704;\n margin-bottom: 25px;\n}\nmain .about_me div {\n margin-bottom: 20px;\n}\nmain .about_me .header {\n text-align: center;\n}\nmain .about_me .header h2 {\n box-shadow: 0 11px 0 white, 0 20px 20px black;\n}\nmain .about_me .header div {\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nmain .about_me div {\n color: #222;\n}\nmain .about_me div.description .article {\n text-align: justify;\n}\nmain .about_me div.description .article .skills {\n margin-bottom: -23px;\n text-align: justify;\n}\nmain .about_me div.description .article .skills span {\n margin: 0 3px 0 2px ;\n font-size: 6px;\n}\nmain .about_me div.description .article .skills span i {\n -webkit-transform: translateY(-4px);\n transform: translateY(-4px);\n}\nmain .about_me div .photo .wrapper_photo {\n border-radius: 50%;\n border: 1px solid black;\n overflow: hidden;\n max-height: 300px;\n max-width: 300px;\n}\nmain .about_me div .personal span {\n margin-right: 0.6em;\n}\nmain .about_me div .personal div {\n margin-bottom: 10px;\n}\nmain .about_me div .personal div.name {\n margin-bottom: 15px;\n color: #555;\n letter-spacing: 2px;\n font-size: 1.2em;\n}\nmain .about_me div .personal div.skype span {\n color: #00AFF0;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.skype span i {\n -webkit-transform: translateY(2px);\n transform: translateY(2px);\n}\nmain .about_me div .personal div.e-mail span {\n color: #00AFF0;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.e-mail span i {\n -webkit-transform: translateY(2px);\n transform: translateY(2px);\n}\nmain .about_me div .personal div.my_site a {\n color: inherit;\n text-decoration: underline;\n}\nmain .about_me div .personal div.my_site span.html {\n color: #FF6347;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.my_site span.html i {\n -webkit-transform: translateY(2px);\n transform: translateY(2px);\n}\nmain .about_me div .personal div.my_site span.hand {\n color: #00AFF0;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.my_site span.hand i {\n -webkit-transform: translate(-104px, 21px);\n transform: translate(-104px, 21px);\n}\nmain .resume {\n margin-bottom: 150px;\n}\nmain .resume .header {\n text-align: center;\n}\nmain .resume .header h2 {\n box-shadow: 0 11px 0 white, 0 20px 20px black;\n}\nmain .resume .header div {\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nmain .resume .header div.education {\n text-align: justify;\n}\nmain .resume h2 {\n text-align: center;\n}\nmain .resume .subheader {\n text-align: center;\n font-size: 14px;\n display: inline-block;\n background-color: #FF6347;\n color: white;\n font-weight: 600;\n font-style: italic;\n padding: 0 15px;\n margin: 3rem 0;\n}\nmain .resume .ico {\n text-align: center;\n margin: 25px 0;\n}\nmain .resume .ico i {\n color: #00AFF0;\n}\nmain .portfolio {\n background-color: #222;\n padding-top: 100px;\n}\nmain .portfolio .last-card {\n margin-bottom: 8rem;\n}\nmain .portfolio .card {\n position: relative;\n overflow: hidden;\n color: white;\n background-color: rgba(0, 0, 0, 0.8);\n text-align: center;\n box-shadow: 0 0 0 rgba(0, 0, 0, 0);\n transition: box-shadow 0.3s;\n}\nmain .portfolio .card .card-body {\n position: absolute;\n background-color: rgba(0, 0, 0, 0.6);\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n opacity: 1;\n transition: opacity .3s;\n}\nmain .portfolio .card .card-body .card-title {\n text-transform: uppercase;\n font-size: 1rem;\n margin-bottom: 1rem;\n color: #FF6347;\n}\nmain .portfolio .card .card-body .wrapper {\n transition: -webkit-transform 0.3s;\n transition: -webkit-transform .3s;\n transition: transform .3s;\n transition: transform .3s, -webkit-transform .3s;\n transition: transform 0.3s, -webkit-transform 0.3s;\n}\nmain .portfolio .card .card-body-2 {\n position: absolute;\n justify-content: center;\n align-items: center;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n}\nmain .portfolio .card .card-body-2 .card-look {\n display: inline-block;\n opacity: 0;\n color: white;\n -webkit-transform: translateY(-100px);\n transform: translateY(-100px);\n transition: opacity 0.3s, color 0.3s, -webkit-transform 0.3s;\n transition: opacity .3s, color .3s, -webkit-transform .3s;\n transition: opacity .3s, color .3s, transform .3s;\n transition: opacity .3s, color .3s, transform .3s, -webkit-transform .3s;\n transition: opacity 0.3s, color 0.3s, transform 0.3s, -webkit-transform 0.3s;\n border: 3px solid #FF6347;\n padding: 5px 20px;\n}\nmain .portfolio .card .card-img-top {\n opacity: .7;\n -webkit-transform: scale(1.2, 1.2);\n transform: scale(1.2, 1.2);\n transition: -webkit-transform 0.3s;\n transition: -webkit-transform .3s;\n transition: transform .3s;\n transition: transform .3s, -webkit-transform .3s;\n transition: transform 0.3s, -webkit-transform 0.3s;\n}\nmain .portfolio .card:hover {\n cursor: pointer;\n box-shadow: 0 0 30px rgba(0, 0, 0, 0.9);\n}\nmain .portfolio .card:hover .card-body {\n opacity: 0;\n}\nmain .portfolio .card:hover .card-body .wrapper {\n -webkit-transform: translateY(100px);\n transform: translateY(100px);\n}\nmain .portfolio .card:hover .card-img-top {\n -webkit-transform: scale(1, 1);\n transform: scale(1, 1);\n}\nmain .portfolio .card:hover .card-look {\n opacity: 1;\n color: white;\n -webkit-transform: translateY(0);\n transform: translateY(0);\n}\nmain .portfolio img {\n width: 100%;\n height: auto;\n}\nmain .portfolio .header {\n text-align: center;\n color: white;\n}\nmain .portfolio .header h2 {\n padding: 5px 25px;\n margin-left: auto;\n margin-right: auto;\n box-shadow: 0 11px 0 #222, 0 20px 20px white;\n}\nmain .portfolio .header div {\n max-width: 85%;\n margin: auto;\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nmain .portfolio .header div.education {\n text-align: justify;\n}\nfooter h2 {\n margin-bottom: 100px;\n}\nfooter .contacts .header {\n text-align: center;\n}\nfooter .contacts .header h2 {\n box-shadow: 0 11px 0 white, 0 20px 20px black;\n}\nfooter .contacts .header div {\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nfooter .contacts .header div.education {\n text-align: justify;\n}\nfooter .contacts .item {\n text-align: center;\n margin-bottom: 2rem;\n}\nfooter .contacts .item .ico {\n margin-bottom: 1rem;\n}\nfooter .contacts .item .ico span i {\n color: #00AFF0;\n}\nfooter .copyright {\n background-color: #222;\n color: white;\n margin-bottom: 0;\n}\nfooter .copyright i {\n color: #FF6347;\n cursor: pointer;\n}\n",".middle.animated {\n -webkit-animation-duration: 1.5s;\n animation-duration: 1.5s;\n}\n.animated.fadeInRight,\n.animated.fadeInLeft {\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n}\n.navbar-nav .nav-item.item-4 {\n -webkit-animation-duration: 1.6s;\n animation-duration: 1.6s;\n}\n.navbar-nav .nav-item.item-3 {\n -webkit-animation-duration: 1.2s;\n animation-duration: 1.2s;\n}\n.navbar-nav .nav-item.item-2 {\n -webkit-animation-duration: 0.8s;\n animation-duration: 0.8s;\n}\n.navbar-nav .nav-item.item-1 {\n -webkit-animation-duration: 0.4s;\n animation-duration: 0.4s;\n}\n","\n/* Large Devices, Wide Screens */\n@media only screen and (max-width : 1200px) {\n main .about_me div .personal div.my_site span.hand i {\n transform: translate(183px, -11px); \n }\n\n header.main_display h1 {\n font-size: 1.5rem;\n }\n\n\n header.main_display,\n section.about_me{\n margin-bottom: 35px; \n }\n\n header p.web_html, \n header p.skills {\n font-size: 14px ! important;\n }\n \n header p.web_html {\n margin-bottom: 9px;\n }\n}\n\n\n@media only screen and (max-width : 954px) {\n header.main_display .middle .skills{\n display: none;\n }\n}\n\n\n\n/* Medium Devices, Desktops */\n@media only screen and (max-width : 992px) {\n \n main .about_me div .personal div.my_site span.hand i {\n transform: translate(-104px, 19px);\n }\n\n footer .contacts .header h1 {\n margin-bottom: 70px;\n }\n \n main .portfolio .card .card-body .card-title {\n font-size: 0.8rem;\n }\n}\n\n/* Small Devices, Tablets */\n@media only screen and (max-width : 768px) {\n main .portfolio .card .card-body .card-title {\n font-size: 0.7rem;\n }\n\n main .portfolio {\n padding-top: 50px;\n }\n\n main .portfolio .header div {\n font-size: 1rem;\n }\n\n main .portfolio .header h1 {\n margin-bottom: 47px;\n }\n\n}\n\n\n/* Small Devices, Tablets */\n@media only screen and (max-width : 576px) {\n #portfolio__ .row.mb-sm-5 {\n padding-left: 60px;\n padding-right: 60px;\n }\n\n main .portfolio .last-card {\n margin-bottom: 4rem;\n }\n \n}\n\n@media only screen and (max-width : 544px) {\n main .portfolio .header div {\n font-size: 0.8rem;\n } \n}\n\n\n/* Extra Small Devices, Phones */\n@media only screen and (max-width : 480px) {\n header.main_display p img {\n transform: translateX(-106px) !important;\n }\n\n h1{\n font-size: 1.7rem !important;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/src/css/style.css b/src/css/style.css index 9333881..81b494e 100644 --- a/src/css/style.css +++ b/src/css/style.css @@ -27,3 +27,7 @@ section { img { max-width: 100%; } + +h2 { + margin-bottom: 30px; +} diff --git a/src/js/about_me.js b/src/js/about_me.js new file mode 100644 index 0000000..6021fe1 --- /dev/null +++ b/src/js/about_me.js @@ -0,0 +1,24 @@ +let sizeDesctiption = 0; + +if (window.matchMedia('(min-width: 992px)').matches) { + function MaxHeight() { + let items = $('#about__me ').find('.article,.wrap_person'); + items.each(function () { + console.log($(this), $(this).height()); + if ($(this).height() > sizeDesctiption) { + sizeDesctiption = $(this).height(); + } + }) + + // console.log(sizeDesctiption); + + items.each(function () { + $(this).height(sizeDesctiption); + console.log($(this), $(this).height()); + }) + + } + + MaxHeight(); // В данной функции выравниваем высоту блоков чтобы WOW - эффект происходил одновременно + +} \ No newline at end of file diff --git a/src/js/animation.js b/src/js/animation.js index 02c7131..cfe82f4 100644 --- a/src/js/animation.js +++ b/src/js/animation.js @@ -18,7 +18,7 @@ $('section h1').addClass('animated').data('animation', 'fadeInUp'); var scrollPos = 0; // Применяем анимацию только на устройствах с экраном больше 992px -if (window.matchMedia('(min-width: 992px)').matches) { +if (window.matchMedia('(min-width: 768px)').matches) { //Прослушка скролла $(window).scroll(function () { @@ -27,7 +27,7 @@ if (window.matchMedia('(min-width: 992px)').matches) { // console.log('Down'); $('.animated').not('.middle').each(function () { - if ($(document).scrollTop() + $(window).height() > $(this).offset().top && $(document).scrollTop() - $(this).offset().top < $(this).height()) { + if ($(document).scrollTop() + $(window).height() + 25 > $(this).offset().top && $(document).scrollTop() - $(this).offset().top < $(this).height()) { $(this).css({ 'opacity': 1 }).removeClass('fadeOutDown').addClass($(this).data('animation')); diff --git a/src/js/index.js b/src/js/index.js index 831ddd1..0bd7c79 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -5,6 +5,7 @@ import '../image/favicon.ico'; import '../image/logo.png'; import '../image/my_photo.jpg'; +import './about_me'; import './portfolio'; import './contacts'; import '../css/animate.css'; diff --git a/src/js/media.js b/src/js/media.js index 286ef11..a9e00e7 100644 --- a/src/js/media.js +++ b/src/js/media.js @@ -15,4 +15,8 @@ if($(window).width() < 640) { $('header p.web_html:contains("Web-разработчик /")').after($('
')); console.log( $('header p.web_html:contains("Web-разработчик /")')); +} + +if($(window).width() < 576) { + $('.underline').addClass('d-none'); } \ No newline at end of file diff --git a/src/less/footer.less b/src/less/footer.less index e81d8d8..945aa3c 100644 --- a/src/less/footer.less +++ b/src/less/footer.less @@ -3,30 +3,21 @@ footer { - - h2 { - margin-bottom: 100px; - } - + .contacts { .header { - text-align: center; + text-align: center; - h2 { - -webkit-box-shadow: 0 11px 0 white, 0 20px 20px black; - box-shadow: 0 11px 0 white, 0 20px 20px black; - } div { letter-spacing: 4px; - font-size: 1.2em; - - &.education { - text-align: justify; - } - - } + font-size: 1.2em; + } + + .underline { + .underline; + } } diff --git a/src/less/header.less b/src/less/header.less index 1b2b54e..3ca18e8 100644 --- a/src/less/header.less +++ b/src/less/header.less @@ -2,7 +2,7 @@ header.main_display { - margin-bottom: 120px; + margin-bottom: 10px; .nav-menu { position: fixed; z-index: 50; diff --git a/src/less/main.less b/src/less/main.less index 105d468..5750bb2 100644 --- a/src/less/main.less +++ b/src/less/main.less @@ -1,12 +1,10 @@ @import '\partails\params'; - +@import '\partails\mixins'; main { padding: 15px; - h2 { - margin-bottom: 100px; - } + .about_me { margin-bottom: 100px; @@ -15,36 +13,29 @@ main { margin-bottom: 25px; } - div { - margin-bottom: 20px; - } + .header { - text-align: center; - - h2 { - -webkit-box-shadow: 0 11px 0 white, 0 20px 20px black; - box-shadow: 0 11px 0 white, 0 20px 20px black; - - } + text-align: center; div { letter-spacing: 4px; font-size: 1.2em; } + .underline { + .underline; + }; + } div{ color: @content_text_color; &.description { - .article { - text-align: justify; - + .article { .skills { - margin-bottom: -23px; - text-align: justify; + margin-bottom: -23px; span { margin: 0 3px 0 2px ; font-size: 6px; @@ -133,16 +124,12 @@ main { .resume { margin-bottom: 150px; - + + .header { text-align: center; - h2 { - -webkit-box-shadow: 0 11px 0 white, 0 20px 20px black; - box-shadow: 0 11px 0 white, 0 20px 20px black; - } - div { letter-spacing: 4px; font-size: 1.2em; @@ -151,7 +138,13 @@ main { text-align: justify; } - } + } + + .underline { + .underline; + }; + + } @@ -181,7 +174,7 @@ main { .portfolio { background-color: @content_text_color; - padding-top: 100px; + padding-top: 50px; .last-card { margin-bottom: 8rem; @@ -227,7 +220,7 @@ main { text-transform: uppercase; font-size: 1rem; margin-bottom: 1rem; - color: @cardGreenColor; + color: @card_color; } .wrapper { @@ -263,7 +256,7 @@ main { transition: opacity .3s, color .3s, -webkit-transform .3s; transition: opacity .3s, color .3s, transform .3s; transition: opacity .3s, color .3s, transform .3s, -webkit-transform .3s; - border: 3px solid @cardGreenColor; + border: 3px solid @card_color; padding: 5px 20px; } } @@ -324,22 +317,14 @@ main { h2 { padding : 5px 25px; margin-left: auto; - margin-right: auto; - -webkit-box-shadow: 0 11px 0 @content_text_color, 0 20px 20px white; - box-shadow: 0 11px 0 @content_text_color, 0 20px 20px white; - + margin-right: auto; } div { max-width: 85%; margin: auto; letter-spacing: 4px; - font-size: 1.2em; - - &.education { - text-align: justify; - } - + font-size: 1.2em; } } diff --git a/src/less/media.less b/src/less/media.less new file mode 100644 index 0000000..6e5a945 --- /dev/null +++ b/src/less/media.less @@ -0,0 +1,35 @@ +@import '\partails\params'; +@import '\partails\mixins'; + + + +@media only screen and (max-width : 992px) { + .description, + .photo, + .personal { + margin-bottom:40px; + } +} + +@media only screen and (max-width : 576px) { + + h2 { + .h2_black_shadow; + } + + .portfolio h2 { + .h2_portfolio_shadow; + } +} + + +@media only screen and (max-width : 480px) { + h2 { + margin-bottom: 100px; + } + + .personal { + margin-bottom: 15px; + } +} + diff --git a/src/less/partails/mixins.less b/src/less/partails/mixins.less new file mode 100644 index 0000000..130d4bb --- /dev/null +++ b/src/less/partails/mixins.less @@ -0,0 +1,19 @@ +@import 'params'; + +.h2_black_shadow() { + -webkit-box-shadow: 0 11px 0 white, 0 20px 20px black; + box-shadow: 0 11px 0 white, 0 20px 20px black; +} + +.h2_portfolio_shadow() { + -webkit-box-shadow: 0 11px 0 @content_text_color, 0 20px 20px white; + box-shadow: 0 11px 0 @content_text_color, 0 20px 20px white; +} + +.underline() { + line-height: 3rem; + border-bottom: 2px solid #000000; + width: 60%; + margin: auto; + padding: 12px; +} \ No newline at end of file diff --git a/src/less/partails/params.less b/src/less/partails/params.less index 8e45c84..1336416 100644 --- a/src/less/partails/params.less +++ b/src/less/partails/params.less @@ -5,4 +5,4 @@ @content_text_color : #222; @navButtonLines : #9A9DA0; @personal_name_color: #555; -@cardGreenColor : #FF6347 ; /* #1ee30b; */ \ No newline at end of file +@card_color : #FF6347 ; /* #1ee30b; */ \ No newline at end of file diff --git a/src/less/style.less b/src/less/style.less index 3cace6b..529a39f 100644 --- a/src/less/style.less +++ b/src/less/style.less @@ -1,4 +1,13 @@ @import '\header'; @import '\main'; -@import '\footer'; +@import '\footer'; +@import '\media'; +@import '\partails\params'; +@import '\partails\mixins'; + +h3 { + text-align: center; +} + + diff --git a/src/template.html b/src/template.html index 7d3b6c2..cf06c8f 100644 --- a/src/template.html +++ b/src/template.html @@ -84,16 +84,16 @@

Андрей Кадочников

-
-

Обо мне

- +
+

Обо мне

Познакомимся поближе
- +

Немного о себе

+
Доброго времени суток, меня зовут Андрей. Занимаюсь вёрсткой HTML-шаблонов и front-end разработкой (программированием сайтов). Мои Ключевые навыки: @@ -187,16 +187,15 @@

Персональная информация

-
-

Резюме

- +
+

Резюме

Мои знания и образование
- +
-

Образование

+

Образование

@@ -221,7 +220,7 @@

Образование

-

Знания и навыки

+

Знания и навыки

@@ -251,8 +250,8 @@

Знания и навыки

-
-

Портфолио

+
+

Портфолио

Здесь будут размещаться примеры моих работ
куда я надеюсь попадёт и Ваш сайт :)
@@ -412,12 +411,11 @@
http://_______________
-
-
-

Контакты

- +
+
+

Контакты

связаться со мной
- +
From e025cdbe5ed3048ef3514d8a9bc7b87d4434195e Mon Sep 17 00:00:00 2001 From: Andrey_programmer Date: Fri, 29 Jun 2018 15:53:11 +0300 Subject: [PATCH 02/17] =?UTF-8?q?=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0?= =?UTF-8?q?=D0=BD=D1=8B=20navbar=20+=20pictures=20portfolio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/bundle.99755c668d66e0f3bfa9.js | 12479 ++++++++++++++++ dist/bundle.99755c668d66e0f3bfa9.js.map | 1 + ...splay.163991288dbc2d2e4fb1f8e5c31a1f59.jpg | Bin 0 -> 50813 bytes ...er.ru.46eefeed1b9613d60bd463fa94088a19.jpg | Bin 0 -> 101411 bytes ...vicon.8db83ff7ee537763949a50974b0db481.ico | Bin 0 -> 15086 bytes .../logo.cfa6b5b41637cba602cc50c7f7ee5e74.png | Bin 0 -> 95467 bytes ...cture.77dc749c4a221f3c394fbc542b054f2c.jpg | Bin 0 -> 294170 bytes ...photo.b411654b264c7886968789f60bed3853.jpg | Bin 0 -> 117946 bytes dist/index.html | 524 + dist/style.3abd22fd5b86b00e73a3.css | 4082 +++++ dist/style.3abd22fd5b86b00e73a3.css.map | 1 + src/image/additional_display.jpg | Bin 0 -> 50813 bytes src/js/index.js | 1 + src/js/nav-menu.js | 38 +- src/less/header.less | 16 +- src/template.html | 34 +- 16 files changed, 17150 insertions(+), 26 deletions(-) create mode 100644 dist/bundle.99755c668d66e0f3bfa9.js create mode 100644 dist/bundle.99755c668d66e0f3bfa9.js.map create mode 100644 dist/image/additional_display.163991288dbc2d2e4fb1f8e5c31a1f59.jpg create mode 100644 dist/image/andrey_programmer.ru.46eefeed1b9613d60bd463fa94088a19.jpg create mode 100644 dist/image/favicon.8db83ff7ee537763949a50974b0db481.ico create mode 100644 dist/image/logo.cfa6b5b41637cba602cc50c7f7ee5e74.png create mode 100644 dist/image/main_picture.77dc749c4a221f3c394fbc542b054f2c.jpg create mode 100644 dist/image/my_photo.b411654b264c7886968789f60bed3853.jpg create mode 100644 dist/index.html create mode 100644 dist/style.3abd22fd5b86b00e73a3.css create mode 100644 dist/style.3abd22fd5b86b00e73a3.css.map create mode 100644 src/image/additional_display.jpg diff --git a/dist/bundle.99755c668d66e0f3bfa9.js b/dist/bundle.99755c668d66e0f3bfa9.js new file mode 100644 index 0000000..8905104 --- /dev/null +++ b/dist/bundle.99755c668d66e0f3bfa9.js @@ -0,0 +1,12479 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ function hotDisposeChunk(chunkId) { +/******/ delete installedChunks[chunkId]; +/******/ } +/******/ var parentHotUpdateCallback = window["webpackHotUpdate"]; +/******/ window["webpackHotUpdate"] = // eslint-disable-next-line no-unused-vars +/******/ function webpackHotUpdateCallback(chunkId, moreModules) { +/******/ hotAddUpdateChunk(chunkId, moreModules); +/******/ if (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules); +/******/ } ; +/******/ +/******/ // eslint-disable-next-line no-unused-vars +/******/ function hotDownloadUpdateChunk(chunkId) { +/******/ var head = document.getElementsByTagName("head")[0]; +/******/ var script = document.createElement("script"); +/******/ script.charset = "utf-8"; +/******/ script.src = __webpack_require__.p + "" + chunkId + "." + hotCurrentHash + ".hot-update.js"; +/******/ ; +/******/ head.appendChild(script); +/******/ } +/******/ +/******/ // eslint-disable-next-line no-unused-vars +/******/ function hotDownloadManifest(requestTimeout) { +/******/ requestTimeout = requestTimeout || 10000; +/******/ return new Promise(function(resolve, reject) { +/******/ if (typeof XMLHttpRequest === "undefined") +/******/ return reject(new Error("No browser support")); +/******/ try { +/******/ var request = new XMLHttpRequest(); +/******/ var requestPath = __webpack_require__.p + "" + hotCurrentHash + ".hot-update.json"; +/******/ request.open("GET", requestPath, true); +/******/ request.timeout = requestTimeout; +/******/ request.send(null); +/******/ } catch (err) { +/******/ return reject(err); +/******/ } +/******/ request.onreadystatechange = function() { +/******/ if (request.readyState !== 4) return; +/******/ if (request.status === 0) { +/******/ // timeout +/******/ reject( +/******/ new Error("Manifest request to " + requestPath + " timed out.") +/******/ ); +/******/ } else if (request.status === 404) { +/******/ // no update available +/******/ resolve(); +/******/ } else if (request.status !== 200 && request.status !== 304) { +/******/ // other failure +/******/ reject(new Error("Manifest request to " + requestPath + " failed.")); +/******/ } else { +/******/ // success +/******/ try { +/******/ var update = JSON.parse(request.responseText); +/******/ } catch (e) { +/******/ reject(e); +/******/ return; +/******/ } +/******/ resolve(update); +/******/ } +/******/ }; +/******/ }); +/******/ } +/******/ +/******/ var hotApplyOnUpdate = true; +/******/ var hotCurrentHash = "99755c668d66e0f3bfa9"; // eslint-disable-line no-unused-vars +/******/ var hotRequestTimeout = 10000; +/******/ var hotCurrentModuleData = {}; +/******/ var hotCurrentChildModule; // eslint-disable-line no-unused-vars +/******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars +/******/ var hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars +/******/ +/******/ // eslint-disable-next-line no-unused-vars +/******/ function hotCreateRequire(moduleId) { +/******/ var me = installedModules[moduleId]; +/******/ if (!me) return __webpack_require__; +/******/ var fn = function(request) { +/******/ if (me.hot.active) { +/******/ if (installedModules[request]) { +/******/ if (installedModules[request].parents.indexOf(moduleId) === -1) +/******/ installedModules[request].parents.push(moduleId); +/******/ } else { +/******/ hotCurrentParents = [moduleId]; +/******/ hotCurrentChildModule = request; +/******/ } +/******/ if (me.children.indexOf(request) === -1) me.children.push(request); +/******/ } else { +/******/ console.warn( +/******/ "[HMR] unexpected require(" + +/******/ request + +/******/ ") from disposed module " + +/******/ moduleId +/******/ ); +/******/ hotCurrentParents = []; +/******/ } +/******/ return __webpack_require__(request); +/******/ }; +/******/ var ObjectFactory = function ObjectFactory(name) { +/******/ return { +/******/ configurable: true, +/******/ enumerable: true, +/******/ get: function() { +/******/ return __webpack_require__[name]; +/******/ }, +/******/ set: function(value) { +/******/ __webpack_require__[name] = value; +/******/ } +/******/ }; +/******/ }; +/******/ for (var name in __webpack_require__) { +/******/ if ( +/******/ Object.prototype.hasOwnProperty.call(__webpack_require__, name) && +/******/ name !== "e" +/******/ ) { +/******/ Object.defineProperty(fn, name, ObjectFactory(name)); +/******/ } +/******/ } +/******/ fn.e = function(chunkId) { +/******/ if (hotStatus === "ready") hotSetStatus("prepare"); +/******/ hotChunksLoading++; +/******/ return __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) { +/******/ finishChunkLoading(); +/******/ throw err; +/******/ }); +/******/ +/******/ function finishChunkLoading() { +/******/ hotChunksLoading--; +/******/ if (hotStatus === "prepare") { +/******/ if (!hotWaitingFilesMap[chunkId]) { +/******/ hotEnsureUpdateChunk(chunkId); +/******/ } +/******/ if (hotChunksLoading === 0 && hotWaitingFiles === 0) { +/******/ hotUpdateDownloaded(); +/******/ } +/******/ } +/******/ } +/******/ }; +/******/ return fn; +/******/ } +/******/ +/******/ // eslint-disable-next-line no-unused-vars +/******/ function hotCreateModule(moduleId) { +/******/ var hot = { +/******/ // private stuff +/******/ _acceptedDependencies: {}, +/******/ _declinedDependencies: {}, +/******/ _selfAccepted: false, +/******/ _selfDeclined: false, +/******/ _disposeHandlers: [], +/******/ _main: hotCurrentChildModule !== moduleId, +/******/ +/******/ // Module API +/******/ active: true, +/******/ accept: function(dep, callback) { +/******/ if (typeof dep === "undefined") hot._selfAccepted = true; +/******/ else if (typeof dep === "function") hot._selfAccepted = dep; +/******/ else if (typeof dep === "object") +/******/ for (var i = 0; i < dep.length; i++) +/******/ hot._acceptedDependencies[dep[i]] = callback || function() {}; +/******/ else hot._acceptedDependencies[dep] = callback || function() {}; +/******/ }, +/******/ decline: function(dep) { +/******/ if (typeof dep === "undefined") hot._selfDeclined = true; +/******/ else if (typeof dep === "object") +/******/ for (var i = 0; i < dep.length; i++) +/******/ hot._declinedDependencies[dep[i]] = true; +/******/ else hot._declinedDependencies[dep] = true; +/******/ }, +/******/ dispose: function(callback) { +/******/ hot._disposeHandlers.push(callback); +/******/ }, +/******/ addDisposeHandler: function(callback) { +/******/ hot._disposeHandlers.push(callback); +/******/ }, +/******/ removeDisposeHandler: function(callback) { +/******/ var idx = hot._disposeHandlers.indexOf(callback); +/******/ if (idx >= 0) hot._disposeHandlers.splice(idx, 1); +/******/ }, +/******/ +/******/ // Management API +/******/ check: hotCheck, +/******/ apply: hotApply, +/******/ status: function(l) { +/******/ if (!l) return hotStatus; +/******/ hotStatusHandlers.push(l); +/******/ }, +/******/ addStatusHandler: function(l) { +/******/ hotStatusHandlers.push(l); +/******/ }, +/******/ removeStatusHandler: function(l) { +/******/ var idx = hotStatusHandlers.indexOf(l); +/******/ if (idx >= 0) hotStatusHandlers.splice(idx, 1); +/******/ }, +/******/ +/******/ //inherit from previous dispose call +/******/ data: hotCurrentModuleData[moduleId] +/******/ }; +/******/ hotCurrentChildModule = undefined; +/******/ return hot; +/******/ } +/******/ +/******/ var hotStatusHandlers = []; +/******/ var hotStatus = "idle"; +/******/ +/******/ function hotSetStatus(newStatus) { +/******/ hotStatus = newStatus; +/******/ for (var i = 0; i < hotStatusHandlers.length; i++) +/******/ hotStatusHandlers[i].call(null, newStatus); +/******/ } +/******/ +/******/ // while downloading +/******/ var hotWaitingFiles = 0; +/******/ var hotChunksLoading = 0; +/******/ var hotWaitingFilesMap = {}; +/******/ var hotRequestedFilesMap = {}; +/******/ var hotAvailableFilesMap = {}; +/******/ var hotDeferred; +/******/ +/******/ // The update info +/******/ var hotUpdate, hotUpdateNewHash; +/******/ +/******/ function toModuleId(id) { +/******/ var isNumber = +id + "" === id; +/******/ return isNumber ? +id : id; +/******/ } +/******/ +/******/ function hotCheck(apply) { +/******/ if (hotStatus !== "idle") +/******/ throw new Error("check() is only allowed in idle status"); +/******/ hotApplyOnUpdate = apply; +/******/ hotSetStatus("check"); +/******/ return hotDownloadManifest(hotRequestTimeout).then(function(update) { +/******/ if (!update) { +/******/ hotSetStatus("idle"); +/******/ return null; +/******/ } +/******/ hotRequestedFilesMap = {}; +/******/ hotWaitingFilesMap = {}; +/******/ hotAvailableFilesMap = update.c; +/******/ hotUpdateNewHash = update.h; +/******/ +/******/ hotSetStatus("prepare"); +/******/ var promise = new Promise(function(resolve, reject) { +/******/ hotDeferred = { +/******/ resolve: resolve, +/******/ reject: reject +/******/ }; +/******/ }); +/******/ hotUpdate = {}; +/******/ var chunkId = "bundle"; +/******/ { +/******/ // eslint-disable-line no-lone-blocks +/******/ /*globals chunkId */ +/******/ hotEnsureUpdateChunk(chunkId); +/******/ } +/******/ if ( +/******/ hotStatus === "prepare" && +/******/ hotChunksLoading === 0 && +/******/ hotWaitingFiles === 0 +/******/ ) { +/******/ hotUpdateDownloaded(); +/******/ } +/******/ return promise; +/******/ }); +/******/ } +/******/ +/******/ // eslint-disable-next-line no-unused-vars +/******/ function hotAddUpdateChunk(chunkId, moreModules) { +/******/ if (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId]) +/******/ return; +/******/ hotRequestedFilesMap[chunkId] = false; +/******/ for (var moduleId in moreModules) { +/******/ if (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { +/******/ hotUpdate[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if (--hotWaitingFiles === 0 && hotChunksLoading === 0) { +/******/ hotUpdateDownloaded(); +/******/ } +/******/ } +/******/ +/******/ function hotEnsureUpdateChunk(chunkId) { +/******/ if (!hotAvailableFilesMap[chunkId]) { +/******/ hotWaitingFilesMap[chunkId] = true; +/******/ } else { +/******/ hotRequestedFilesMap[chunkId] = true; +/******/ hotWaitingFiles++; +/******/ hotDownloadUpdateChunk(chunkId); +/******/ } +/******/ } +/******/ +/******/ function hotUpdateDownloaded() { +/******/ hotSetStatus("ready"); +/******/ var deferred = hotDeferred; +/******/ hotDeferred = null; +/******/ if (!deferred) return; +/******/ if (hotApplyOnUpdate) { +/******/ // Wrap deferred object in Promise to mark it as a well-handled Promise to +/******/ // avoid triggering uncaught exception warning in Chrome. +/******/ // See https://bugs.chromium.org/p/chromium/issues/detail?id=465666 +/******/ Promise.resolve() +/******/ .then(function() { +/******/ return hotApply(hotApplyOnUpdate); +/******/ }) +/******/ .then( +/******/ function(result) { +/******/ deferred.resolve(result); +/******/ }, +/******/ function(err) { +/******/ deferred.reject(err); +/******/ } +/******/ ); +/******/ } else { +/******/ var outdatedModules = []; +/******/ for (var id in hotUpdate) { +/******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) { +/******/ outdatedModules.push(toModuleId(id)); +/******/ } +/******/ } +/******/ deferred.resolve(outdatedModules); +/******/ } +/******/ } +/******/ +/******/ function hotApply(options) { +/******/ if (hotStatus !== "ready") +/******/ throw new Error("apply() is only allowed in ready status"); +/******/ options = options || {}; +/******/ +/******/ var cb; +/******/ var i; +/******/ var j; +/******/ var module; +/******/ var moduleId; +/******/ +/******/ function getAffectedStuff(updateModuleId) { +/******/ var outdatedModules = [updateModuleId]; +/******/ var outdatedDependencies = {}; +/******/ +/******/ var queue = outdatedModules.slice().map(function(id) { +/******/ return { +/******/ chain: [id], +/******/ id: id +/******/ }; +/******/ }); +/******/ while (queue.length > 0) { +/******/ var queueItem = queue.pop(); +/******/ var moduleId = queueItem.id; +/******/ var chain = queueItem.chain; +/******/ module = installedModules[moduleId]; +/******/ if (!module || module.hot._selfAccepted) continue; +/******/ if (module.hot._selfDeclined) { +/******/ return { +/******/ type: "self-declined", +/******/ chain: chain, +/******/ moduleId: moduleId +/******/ }; +/******/ } +/******/ if (module.hot._main) { +/******/ return { +/******/ type: "unaccepted", +/******/ chain: chain, +/******/ moduleId: moduleId +/******/ }; +/******/ } +/******/ for (var i = 0; i < module.parents.length; i++) { +/******/ var parentId = module.parents[i]; +/******/ var parent = installedModules[parentId]; +/******/ if (!parent) continue; +/******/ if (parent.hot._declinedDependencies[moduleId]) { +/******/ return { +/******/ type: "declined", +/******/ chain: chain.concat([parentId]), +/******/ moduleId: moduleId, +/******/ parentId: parentId +/******/ }; +/******/ } +/******/ if (outdatedModules.indexOf(parentId) !== -1) continue; +/******/ if (parent.hot._acceptedDependencies[moduleId]) { +/******/ if (!outdatedDependencies[parentId]) +/******/ outdatedDependencies[parentId] = []; +/******/ addAllToSet(outdatedDependencies[parentId], [moduleId]); +/******/ continue; +/******/ } +/******/ delete outdatedDependencies[parentId]; +/******/ outdatedModules.push(parentId); +/******/ queue.push({ +/******/ chain: chain.concat([parentId]), +/******/ id: parentId +/******/ }); +/******/ } +/******/ } +/******/ +/******/ return { +/******/ type: "accepted", +/******/ moduleId: updateModuleId, +/******/ outdatedModules: outdatedModules, +/******/ outdatedDependencies: outdatedDependencies +/******/ }; +/******/ } +/******/ +/******/ function addAllToSet(a, b) { +/******/ for (var i = 0; i < b.length; i++) { +/******/ var item = b[i]; +/******/ if (a.indexOf(item) === -1) a.push(item); +/******/ } +/******/ } +/******/ +/******/ // at begin all updates modules are outdated +/******/ // the "outdated" status can propagate to parents if they don't accept the children +/******/ var outdatedDependencies = {}; +/******/ var outdatedModules = []; +/******/ var appliedUpdate = {}; +/******/ +/******/ var warnUnexpectedRequire = function warnUnexpectedRequire() { +/******/ console.warn( +/******/ "[HMR] unexpected require(" + result.moduleId + ") to disposed module" +/******/ ); +/******/ }; +/******/ +/******/ for (var id in hotUpdate) { +/******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) { +/******/ moduleId = toModuleId(id); +/******/ /** @type {TODO} */ +/******/ var result; +/******/ if (hotUpdate[id]) { +/******/ result = getAffectedStuff(moduleId); +/******/ } else { +/******/ result = { +/******/ type: "disposed", +/******/ moduleId: id +/******/ }; +/******/ } +/******/ /** @type {Error|false} */ +/******/ var abortError = false; +/******/ var doApply = false; +/******/ var doDispose = false; +/******/ var chainInfo = ""; +/******/ if (result.chain) { +/******/ chainInfo = "\nUpdate propagation: " + result.chain.join(" -> "); +/******/ } +/******/ switch (result.type) { +/******/ case "self-declined": +/******/ if (options.onDeclined) options.onDeclined(result); +/******/ if (!options.ignoreDeclined) +/******/ abortError = new Error( +/******/ "Aborted because of self decline: " + +/******/ result.moduleId + +/******/ chainInfo +/******/ ); +/******/ break; +/******/ case "declined": +/******/ if (options.onDeclined) options.onDeclined(result); +/******/ if (!options.ignoreDeclined) +/******/ abortError = new Error( +/******/ "Aborted because of declined dependency: " + +/******/ result.moduleId + +/******/ " in " + +/******/ result.parentId + +/******/ chainInfo +/******/ ); +/******/ break; +/******/ case "unaccepted": +/******/ if (options.onUnaccepted) options.onUnaccepted(result); +/******/ if (!options.ignoreUnaccepted) +/******/ abortError = new Error( +/******/ "Aborted because " + moduleId + " is not accepted" + chainInfo +/******/ ); +/******/ break; +/******/ case "accepted": +/******/ if (options.onAccepted) options.onAccepted(result); +/******/ doApply = true; +/******/ break; +/******/ case "disposed": +/******/ if (options.onDisposed) options.onDisposed(result); +/******/ doDispose = true; +/******/ break; +/******/ default: +/******/ throw new Error("Unexception type " + result.type); +/******/ } +/******/ if (abortError) { +/******/ hotSetStatus("abort"); +/******/ return Promise.reject(abortError); +/******/ } +/******/ if (doApply) { +/******/ appliedUpdate[moduleId] = hotUpdate[moduleId]; +/******/ addAllToSet(outdatedModules, result.outdatedModules); +/******/ for (moduleId in result.outdatedDependencies) { +/******/ if ( +/******/ Object.prototype.hasOwnProperty.call( +/******/ result.outdatedDependencies, +/******/ moduleId +/******/ ) +/******/ ) { +/******/ if (!outdatedDependencies[moduleId]) +/******/ outdatedDependencies[moduleId] = []; +/******/ addAllToSet( +/******/ outdatedDependencies[moduleId], +/******/ result.outdatedDependencies[moduleId] +/******/ ); +/******/ } +/******/ } +/******/ } +/******/ if (doDispose) { +/******/ addAllToSet(outdatedModules, [result.moduleId]); +/******/ appliedUpdate[moduleId] = warnUnexpectedRequire; +/******/ } +/******/ } +/******/ } +/******/ +/******/ // Store self accepted outdated modules to require them later by the module system +/******/ var outdatedSelfAcceptedModules = []; +/******/ for (i = 0; i < outdatedModules.length; i++) { +/******/ moduleId = outdatedModules[i]; +/******/ if ( +/******/ installedModules[moduleId] && +/******/ installedModules[moduleId].hot._selfAccepted +/******/ ) +/******/ outdatedSelfAcceptedModules.push({ +/******/ module: moduleId, +/******/ errorHandler: installedModules[moduleId].hot._selfAccepted +/******/ }); +/******/ } +/******/ +/******/ // Now in "dispose" phase +/******/ hotSetStatus("dispose"); +/******/ Object.keys(hotAvailableFilesMap).forEach(function(chunkId) { +/******/ if (hotAvailableFilesMap[chunkId] === false) { +/******/ hotDisposeChunk(chunkId); +/******/ } +/******/ }); +/******/ +/******/ var idx; +/******/ var queue = outdatedModules.slice(); +/******/ while (queue.length > 0) { +/******/ moduleId = queue.pop(); +/******/ module = installedModules[moduleId]; +/******/ if (!module) continue; +/******/ +/******/ var data = {}; +/******/ +/******/ // Call dispose handlers +/******/ var disposeHandlers = module.hot._disposeHandlers; +/******/ for (j = 0; j < disposeHandlers.length; j++) { +/******/ cb = disposeHandlers[j]; +/******/ cb(data); +/******/ } +/******/ hotCurrentModuleData[moduleId] = data; +/******/ +/******/ // disable module (this disables requires from this module) +/******/ module.hot.active = false; +/******/ +/******/ // remove module from cache +/******/ delete installedModules[moduleId]; +/******/ +/******/ // when disposing there is no need to call dispose handler +/******/ delete outdatedDependencies[moduleId]; +/******/ +/******/ // remove "parents" references from all children +/******/ for (j = 0; j < module.children.length; j++) { +/******/ var child = installedModules[module.children[j]]; +/******/ if (!child) continue; +/******/ idx = child.parents.indexOf(moduleId); +/******/ if (idx >= 0) { +/******/ child.parents.splice(idx, 1); +/******/ } +/******/ } +/******/ } +/******/ +/******/ // remove outdated dependency from module children +/******/ var dependency; +/******/ var moduleOutdatedDependencies; +/******/ for (moduleId in outdatedDependencies) { +/******/ if ( +/******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId) +/******/ ) { +/******/ module = installedModules[moduleId]; +/******/ if (module) { +/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; +/******/ for (j = 0; j < moduleOutdatedDependencies.length; j++) { +/******/ dependency = moduleOutdatedDependencies[j]; +/******/ idx = module.children.indexOf(dependency); +/******/ if (idx >= 0) module.children.splice(idx, 1); +/******/ } +/******/ } +/******/ } +/******/ } +/******/ +/******/ // Not in "apply" phase +/******/ hotSetStatus("apply"); +/******/ +/******/ hotCurrentHash = hotUpdateNewHash; +/******/ +/******/ // insert new code +/******/ for (moduleId in appliedUpdate) { +/******/ if (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) { +/******/ modules[moduleId] = appliedUpdate[moduleId]; +/******/ } +/******/ } +/******/ +/******/ // call accept handlers +/******/ var error = null; +/******/ for (moduleId in outdatedDependencies) { +/******/ if ( +/******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId) +/******/ ) { +/******/ module = installedModules[moduleId]; +/******/ if (module) { +/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; +/******/ var callbacks = []; +/******/ for (i = 0; i < moduleOutdatedDependencies.length; i++) { +/******/ dependency = moduleOutdatedDependencies[i]; +/******/ cb = module.hot._acceptedDependencies[dependency]; +/******/ if (cb) { +/******/ if (callbacks.indexOf(cb) !== -1) continue; +/******/ callbacks.push(cb); +/******/ } +/******/ } +/******/ for (i = 0; i < callbacks.length; i++) { +/******/ cb = callbacks[i]; +/******/ try { +/******/ cb(moduleOutdatedDependencies); +/******/ } catch (err) { +/******/ if (options.onErrored) { +/******/ options.onErrored({ +/******/ type: "accept-errored", +/******/ moduleId: moduleId, +/******/ dependencyId: moduleOutdatedDependencies[i], +/******/ error: err +/******/ }); +/******/ } +/******/ if (!options.ignoreErrored) { +/******/ if (!error) error = err; +/******/ } +/******/ } +/******/ } +/******/ } +/******/ } +/******/ } +/******/ +/******/ // Load self accepted modules +/******/ for (i = 0; i < outdatedSelfAcceptedModules.length; i++) { +/******/ var item = outdatedSelfAcceptedModules[i]; +/******/ moduleId = item.module; +/******/ hotCurrentParents = [moduleId]; +/******/ try { +/******/ __webpack_require__(moduleId); +/******/ } catch (err) { +/******/ if (typeof item.errorHandler === "function") { +/******/ try { +/******/ item.errorHandler(err); +/******/ } catch (err2) { +/******/ if (options.onErrored) { +/******/ options.onErrored({ +/******/ type: "self-accept-error-handler-errored", +/******/ moduleId: moduleId, +/******/ error: err2, +/******/ originalError: err +/******/ }); +/******/ } +/******/ if (!options.ignoreErrored) { +/******/ if (!error) error = err2; +/******/ } +/******/ if (!error) error = err; +/******/ } +/******/ } else { +/******/ if (options.onErrored) { +/******/ options.onErrored({ +/******/ type: "self-accept-errored", +/******/ moduleId: moduleId, +/******/ error: err +/******/ }); +/******/ } +/******/ if (!options.ignoreErrored) { +/******/ if (!error) error = err; +/******/ } +/******/ } +/******/ } +/******/ } +/******/ +/******/ // handle errors in accept handlers and self accepted module load +/******/ if (error) { +/******/ hotSetStatus("fail"); +/******/ return Promise.reject(error); +/******/ } +/******/ +/******/ hotSetStatus("idle"); +/******/ return new Promise(function(resolve) { +/******/ resolve(outdatedModules); +/******/ }); +/******/ } +/******/ +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {}, +/******/ hot: hotCreateModule(moduleId), +/******/ parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp), +/******/ children: [] +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId)); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // __webpack_hash__ +/******/ __webpack_require__.h = function() { return hotCurrentHash; }; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return hotCreateRequire("./js/index.js")(__webpack_require__.s = "./js/index.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "../node_modules/jquery/dist/jquery.js": +/*!*********************************************!*\ + !*** ../node_modules/jquery/dist/jquery.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! + * jQuery JavaScript Library v3.3.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2018-01-20T17:24Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + + + + var preservedScriptAttributes = { + type: true, + src: true, + noModule: true + }; + + function DOMEval( code, doc, node ) { + doc = doc || document; + + var i, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + if ( node[ i ] ) { + script[ i ] = node[ i ]; + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.3.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && Array.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.3 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-08-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true && ("form" in elem || "label" in elem); + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + disabledAncestor( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( nodeName( elem, "iframe" ) ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); +var documentElement = document.documentElement; + + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 only +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + div.style.position = "absolute"; + scrollboxSizeVal = div.offsetWidth === 36 || "absolute"; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a property mapped along what jQuery.cssProps suggests or to +// a vendor prefixed property. +function finalPropName( name ) { + var ret = jQuery.cssProps[ name ]; + if ( !ret ) { + ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; + } + return ret; +} + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + ) ); + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + val = curCSS( elem, dimension, styles ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox; + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = valueIsBorderBox && + ( support.boxSizingReliable() || val === elem.style[ dimension ] ); + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + if ( val === "auto" || + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) { + + val = elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ]; + + // offsetWidth/offsetHeight provide border-box values + valueIsBorderBox = true; + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra && boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ); + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && support.scrollboxSize() === styles.position ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = Date.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + + +
+
+
+
+ +
+
+
+ +
+
+
+

+ logo + Сайт-портфолио веб-разработчика +

+
+

Андрей Кадочников

+

Web-разработчик / +
HTML-верстальщик

+

HTML5 / CSS3 / JavaScript / ES6 / TypeScript / jQuery / LESS +
/ SASS / Gulp / Bootstrap 4 / Webpack 4 / RxJS / Git / БЭМ

+
+ +
+
+
+
+ +
+
+
+
+
+
+

Обо мне

+
Познакомимся поближе
+
+
+
+
+
+

Немного о себе

+
+
+ Доброго времени суток, меня зовут Андрей. Занимаюсь вёрсткой HTML-шаблонов и front-end разработкой (программированием сайтов). + Мои Ключевые навыки: +
+
+ HTML5 + + + CSS3 + + + JavaScript + + + ES6 + + + TypeScript + + + jQuery + + + LESS + + + SASS + + + Gulp + + + Bootstrap 4 + + + Webpack 4 + + + RxJS + + + Git + + + БЭМ +
+
Пользуюсь последними версиями передовых продуктов Bootstrap и Webpack, что гарантирует что Ваш + сайт будет адаптивным и отлично выглядеть на всех устройствах. Вы можете заказать у меня разработку + сайта с нуля или связаться со мной для сотрудничества. +
+
+
+

Фото

+
+ Моё фото +
+
+
+

Персональная информация

+
+
Кадочников Андрей
+
+
Профессиональное создание сайтов +
(front-end developer): разработка сайтов, вёрстка адаптивных HTML-шаблонов, создание + спецэффектов с использованием JavaScript, jQuery, Bootstrap
+
День Рождения 13 февраля 1982 года
+
+ + + Skype: Andrey-1302
+
+ + + E-mail : andrey.programmer.1302@gmail.com
+ +
+
+ +
+
+
+
+
+
+
+
+

Резюме

+
Мои знания и образование
+
+
+
+
+
+

Образование

+
+ + + +
+
+
Высшее
+
Южно-Уральский Государственный Университет, 2007г. Факультет технологий машиностроения. Специализация: + Автоматизация тех. процессов и производств в машиностроении. Квалификация - специалист. +
+
+
+
Дополнительные курсы и самообразование: +
+
    +
  • HTML/CSS, Wordpress - Учебный цент "Специалист" при МГТУ им. Н.Э. Баумана (есть сертификаты)
  • +
  • HTML/CSS/LESS - онлайн курсы HTML-академии
  • +
  • JavaScript, jQuery, ES6, Bootstrap, TypeScript, Gulp, Webpack, LESS/SASS - онлайн курсы и + уроки компании Webformyself
  • +
  • Чтение документации на библиотеки фреймворки и бандлеры
  • +
+
+
+
+

Знания и навыки

+
+ + + +
+
+
Знания в области Web +
+
+
HTML-разметка, таблицы стилей CSS, препроцессоры LESS/SASS, язык программирования JavaScript, + его современный синтаксис ES6, библиотека jQuery, фреймворк Bootstrap, бандлеры Gulp + и Webpack
+
+
+
Программы
+
Adobe Photoshop, Nodepad++, FileZilla
+
+
+
+
Ближайшие планы
+
В скором времени планирую изучение фреймворков React, Angular и Vue для разработки Web-приложений
+
+
+
+
+
+
+
+
+
+

Портфолио

+ +
Здесь будут размещаться примеры моих работ +
куда я надеюсь попадёт и Ваш сайт :)
+
+
+
+
+
+ Card image cap +
+
+
Andrey-programmer.ru
+

Сайт-портфолио программиста

+

+ 2018 г. + +

+
+
+
+
Посмотреть
+
+
+
+ + Card image cap +
+
+
any my site
+

This card has supporting...

+

+ Last updated 3 mins ago +

+
+
+
+
Посмотреть
+
+
+
+ Card image cap +
+
+
any my site
+

This card has supporting...

+

+ Last updated 3 mins ago +

+
+
+
+
Посмотреть
+
+
+
+
+
+
+
+ Card image cap +
+
+
any my site
+

This card has supporting...

+

+ Last updated 3 mins ago +

+
+
+
+
Посмотреть
+
+
+
+ Card image cap +
+
+
any my site
+

This card has supporting...

+

+ Last updated 3 mins ago +

+
+
+
+
Посмотреть
+
+
+
+ Card image cap +
+
+
any my site
+

This card has supporting...

+

+ Last updated 3 mins ago +

+
+
+
+
Посмотреть
+
+
+
+
+
+
+
+ Card image cap +
+
+
any my site
+

This card has supporting...

+

+ Last updated 3 mins ago +

+
+
+
+
Посмотреть
+
+
+
+ Card image cap +
+
+
any my site
+

This card has supporting...

+

+ Last updated 3 mins ago +

+
+
+
+
Посмотреть
+
+
+
+ Card image cap +
+
+
any my site
+

This card has supporting...

+

+ Last updated 3 mins ago +

+
+
+
+
Посмотреть
+
+
+
+
+
+
+
+
+
+
+
+
+

Контакты

+
связаться со мной
+
+
+
+
+
+
+
+ + + +
+

Адрес:

+

Россия, г.Москва м.Отрадное

+
+
+
+ + + +
+

E-mail:

+

andrey.programmer.1302@gmail.com

+
+
+
+ + + +
+

Вконтакте

+

https://vk.com/l0vec_snov

+
+
+
+
+
+ + + +
+

Веб-сайт:

+

Andrey-programmer.ru

+
+
+
+ + + +
+

Skype:

+

Andrey-1302

+
+
+
+ + + / + + + +
+

телефон / whatsapp

+

+7 977 4638113

+
+
+
+
+
+ + + +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dist/style.3abd22fd5b86b00e73a3.css b/dist/style.3abd22fd5b86b00e73a3.css new file mode 100644 index 0000000..2c07e3e --- /dev/null +++ b/dist/style.3abd22fd5b86b00e73a3.css @@ -0,0 +1,4082 @@ +@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,400i,600,700&subset=cyrillic); +@charset "UTF-8"; + +/*! + * animate.css -http://daneden.me/animate + * Version - 3.6.0 + * Licensed under the MIT license - http://opensource.org/licenses/MIT + * + * Copyright (c) 2018 Daniel Eden + */ + +.animated { + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.animated.infinite { + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; +} + +@-webkit-keyframes bounce { + from, + 20%, + 53%, + 80%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 40%, + 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -30px, 0); + transform: translate3d(0, -30px, 0); + } + + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -15px, 0); + transform: translate3d(0, -15px, 0); + } + + 90% { + -webkit-transform: translate3d(0, -4px, 0); + transform: translate3d(0, -4px, 0); + } +} + +@keyframes bounce { + from, + 20%, + 53%, + 80%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 40%, + 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -30px, 0); + transform: translate3d(0, -30px, 0); + } + + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -15px, 0); + transform: translate3d(0, -15px, 0); + } + + 90% { + -webkit-transform: translate3d(0, -4px, 0); + transform: translate3d(0, -4px, 0); + } +} + +.bounce { + -webkit-animation-name: bounce; + animation-name: bounce; + -webkit-transform-origin: center bottom; + transform-origin: center bottom; +} + +@-webkit-keyframes flash { + from, + 50%, + to { + opacity: 1; + } + + 25%, + 75% { + opacity: 0; + } +} + +@keyframes flash { + from, + 50%, + to { + opacity: 1; + } + + 25%, + 75% { + opacity: 0; + } +} + +.flash { + -webkit-animation-name: flash; + animation-name: flash; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes pulse { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes pulse { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.pulse { + -webkit-animation-name: pulse; + animation-name: pulse; +} + +@-webkit-keyframes rubberBand { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); + } + + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); + } + + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); + } + + 65% { + -webkit-transform: scale3d(0.95, 1.05, 1); + transform: scale3d(0.95, 1.05, 1); + } + + 75% { + -webkit-transform: scale3d(1.05, 0.95, 1); + transform: scale3d(1.05, 0.95, 1); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes rubberBand { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); + } + + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); + } + + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); + } + + 65% { + -webkit-transform: scale3d(0.95, 1.05, 1); + transform: scale3d(0.95, 1.05, 1); + } + + 75% { + -webkit-transform: scale3d(1.05, 0.95, 1); + transform: scale3d(1.05, 0.95, 1); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.rubberBand { + -webkit-animation-name: rubberBand; + animation-name: rubberBand; +} + +@-webkit-keyframes shake { + from, + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, + 30%, + 50%, + 70%, + 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 20%, + 40%, + 60%, + 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} + +@keyframes shake { + from, + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, + 30%, + 50%, + 70%, + 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 20%, + 40%, + 60%, + 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} + +.shake { + -webkit-animation-name: shake; + animation-name: shake; +} + +@-webkit-keyframes headShake { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 6.5% { + -webkit-transform: translateX(-6px) rotateY(-9deg); + transform: translateX(-6px) rotateY(-9deg); + } + + 18.5% { + -webkit-transform: translateX(5px) rotateY(7deg); + transform: translateX(5px) rotateY(7deg); + } + + 31.5% { + -webkit-transform: translateX(-3px) rotateY(-5deg); + transform: translateX(-3px) rotateY(-5deg); + } + + 43.5% { + -webkit-transform: translateX(2px) rotateY(3deg); + transform: translateX(2px) rotateY(3deg); + } + + 50% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@keyframes headShake { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 6.5% { + -webkit-transform: translateX(-6px) rotateY(-9deg); + transform: translateX(-6px) rotateY(-9deg); + } + + 18.5% { + -webkit-transform: translateX(5px) rotateY(7deg); + transform: translateX(5px) rotateY(7deg); + } + + 31.5% { + -webkit-transform: translateX(-3px) rotateY(-5deg); + transform: translateX(-3px) rotateY(-5deg); + } + + 43.5% { + -webkit-transform: translateX(2px) rotateY(3deg); + transform: translateX(2px) rotateY(3deg); + } + + 50% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +.headShake { + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + -webkit-animation-name: headShake; + animation-name: headShake; +} + +@-webkit-keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); + } + + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); + } + + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } +} + +@keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); + } + + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); + } + + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } +} + +.swing { + -webkit-transform-origin: top center; + transform-origin: top center; + -webkit-animation-name: swing; + animation-name: swing; +} + +@-webkit-keyframes tada { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, + 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + } + + 30%, + 50%, + 70%, + 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + + 40%, + 60%, + 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes tada { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, + 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + } + + 30%, + 50%, + 70%, + 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + + 40%, + 60%, + 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.tada { + -webkit-animation-name: tada; + animation-name: tada; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes wobble { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes wobble { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.wobble { + -webkit-animation-name: wobble; + animation-name: wobble; +} + +@-webkit-keyframes jello { + from, + 11.1%, + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 22.2% { + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg); + } + + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg); + } + + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg); + } + + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg); + } + + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg); + } + + 77.7% { + -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); + transform: skewX(0.390625deg) skewY(0.390625deg); + } + + 88.8% { + -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + } +} + +@keyframes jello { + from, + 11.1%, + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 22.2% { + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg); + } + + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg); + } + + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg); + } + + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg); + } + + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg); + } + + 77.7% { + -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); + transform: skewX(0.390625deg) skewY(0.390625deg); + } + + 88.8% { + -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + } +} + +.jello { + -webkit-animation-name: jello; + animation-name: jello; + -webkit-transform-origin: center; + transform-origin: center; +} + +@-webkit-keyframes bounceIn { + from, + 20%, + 40%, + 60%, + 80%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + 40% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + + 80% { + -webkit-transform: scale3d(0.97, 0.97, 0.97); + transform: scale3d(0.97, 0.97, 0.97); + } + + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes bounceIn { + from, + 20%, + 40%, + 60%, + 80%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + 40% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + + 80% { + -webkit-transform: scale3d(0.97, 0.97, 0.97); + transform: scale3d(0.97, 0.97, 0.97); + } + + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.bounceIn { + -webkit-animation-duration: 0.75s; + animation-duration: 0.75s; + -webkit-animation-name: bounceIn; + animation-name: bounceIn; +} + +@-webkit-keyframes bounceInDown { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0); + transform: translate3d(0, -3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0); + transform: translate3d(0, 25px, 0); + } + + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes bounceInDown { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0); + transform: translate3d(0, -3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0); + transform: translate3d(0, 25px, 0); + } + + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.bounceInDown { + -webkit-animation-name: bounceInDown; + animation-name: bounceInDown; +} + +@-webkit-keyframes bounceInLeft { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0); + transform: translate3d(-3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0); + transform: translate3d(25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(5px, 0, 0); + transform: translate3d(5px, 0, 0); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes bounceInLeft { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0); + transform: translate3d(-3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0); + transform: translate3d(25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(5px, 0, 0); + transform: translate3d(5px, 0, 0); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.bounceInLeft { + -webkit-animation-name: bounceInLeft; + animation-name: bounceInLeft; +} + +@-webkit-keyframes bounceInRight { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + from { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0); + transform: translate3d(3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0); + transform: translate3d(-25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(-5px, 0, 0); + transform: translate3d(-5px, 0, 0); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes bounceInRight { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + from { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0); + transform: translate3d(3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0); + transform: translate3d(-25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(-5px, 0, 0); + transform: translate3d(-5px, 0, 0); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.bounceInRight { + -webkit-animation-name: bounceInRight; + animation-name: bounceInRight; +} + +@-webkit-keyframes bounceInUp { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + from { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0); + transform: translate3d(0, 3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + 75% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, -5px, 0); + transform: translate3d(0, -5px, 0); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes bounceInUp { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + from { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0); + transform: translate3d(0, 3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + 75% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, -5px, 0); + transform: translate3d(0, -5px, 0); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.bounceInUp { + -webkit-animation-name: bounceInUp; + animation-name: bounceInUp; +} + +@-webkit-keyframes bounceOut { + 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + + 50%, + 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + to { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } +} + +@keyframes bounceOut { + 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + + 50%, + 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + to { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } +} + +.bounceOut { + -webkit-animation-duration: 0.75s; + animation-duration: 0.75s; + -webkit-animation-name: bounceOut; + animation-name: bounceOut; +} + +@-webkit-keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 40%, + 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +@keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 40%, + 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +.bounceOutDown { + -webkit-animation-name: bounceOutDown; + animation-name: bounceOutDown; +} + +@-webkit-keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0); + transform: translate3d(20px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +@keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0); + transform: translate3d(20px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +.bounceOutLeft { + -webkit-animation-name: bounceOutLeft; + animation-name: bounceOutLeft; +} + +@-webkit-keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0); + transform: translate3d(-20px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +@keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0); + transform: translate3d(-20px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +.bounceOutRight { + -webkit-animation-name: bounceOutRight; + animation-name: bounceOutRight; +} + +@-webkit-keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 40%, + 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +@keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 40%, + 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +.bounceOutUp { + -webkit-animation-name: bounceOutUp; + animation-name: bounceOutUp; +} + +@-webkit-keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +@keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +.fadeIn { + -webkit-animation-name: fadeIn; + animation-name: fadeIn; +} + +@-webkit-keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.fadeInDown { + -webkit-animation-name: fadeInDown; + animation-name: fadeInDown; +} + +@-webkit-keyframes fadeInDownBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes fadeInDownBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.fadeInDownBig { + -webkit-animation-name: fadeInDownBig; + animation-name: fadeInDownBig; +} + +@-webkit-keyframes fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.fadeInLeft { + -webkit-animation-name: fadeInLeft; + animation-name: fadeInLeft; +} + +@-webkit-keyframes fadeInLeftBig { + from { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes fadeInLeftBig { + from { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.fadeInLeftBig { + -webkit-animation-name: fadeInLeftBig; + animation-name: fadeInLeftBig; +} + +@-webkit-keyframes fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.fadeInRight { + -webkit-animation-name: fadeInRight; + animation-name: fadeInRight; +} + +@-webkit-keyframes fadeInRightBig { + from { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes fadeInRightBig { + from { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.fadeInRightBig { + -webkit-animation-name: fadeInRightBig; + animation-name: fadeInRightBig; +} + +@-webkit-keyframes fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.fadeInUp { + -webkit-animation-name: fadeInUp; + animation-name: fadeInUp; +} + +@-webkit-keyframes fadeInUpBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes fadeInUpBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.fadeInUpBig { + -webkit-animation-name: fadeInUpBig; + animation-name: fadeInUpBig; +} + +@-webkit-keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +@keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +.fadeOut { + -webkit-animation-name: fadeOut; + animation-name: fadeOut; +} + +@-webkit-keyframes fadeOutDown { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes fadeOutDown { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +.fadeOutDown { + -webkit-animation-name: fadeOutDown; + animation-name: fadeOutDown; +} + +@-webkit-keyframes fadeOutDownBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +@keyframes fadeOutDownBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +.fadeOutDownBig { + -webkit-animation-name: fadeOutDownBig; + animation-name: fadeOutDownBig; +} + +@-webkit-keyframes fadeOutLeft { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes fadeOutLeft { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +.fadeOutLeft { + -webkit-animation-name: fadeOutLeft; + animation-name: fadeOutLeft; +} + +@-webkit-keyframes fadeOutLeftBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +@keyframes fadeOutLeftBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +.fadeOutLeftBig { + -webkit-animation-name: fadeOutLeftBig; + animation-name: fadeOutLeftBig; +} + +@-webkit-keyframes fadeOutRight { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +@keyframes fadeOutRight { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +.fadeOutRight { + -webkit-animation-name: fadeOutRight; + animation-name: fadeOutRight; +} + +@-webkit-keyframes fadeOutRightBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +@keyframes fadeOutRightBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +.fadeOutRightBig { + -webkit-animation-name: fadeOutRightBig; + animation-name: fadeOutRightBig; +} + +@-webkit-keyframes fadeOutUp { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes fadeOutUp { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +.fadeOutUp { + -webkit-animation-name: fadeOutUp; + animation-name: fadeOutUp; +} + +@-webkit-keyframes fadeOutUpBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +@keyframes fadeOutUpBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +.fadeOutUpBig { + -webkit-animation-name: fadeOutUpBig; + animation-name: fadeOutUpBig; +} + +@-webkit-keyframes flip { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 40% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 50% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 80% { + -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); + transform: perspective(400px) scale3d(0.95, 0.95, 0.95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } +} + +@keyframes flip { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 40% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 50% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 80% { + -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); + transform: perspective(400px) scale3d(0.95, 0.95, 0.95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } +} + +.animated.flip { + -webkit-backface-visibility: visible; + backface-visibility: visible; + -webkit-animation-name: flip; + animation-name: flip; +} + +@-webkit-keyframes flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@keyframes flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +.flipInX { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInX; + animation-name: flipInX; +} + +@-webkit-keyframes flipInY { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@keyframes flipInY { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +.flipInY { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInY; + animation-name: flipInY; +} + +@-webkit-keyframes flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +@keyframes flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +.flipOutX { + -webkit-animation-duration: 0.75s; + animation-duration: 0.75s; + -webkit-animation-name: flipOutX; + animation-name: flipOutX; + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; +} + +@-webkit-keyframes flipOutY { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; + } +} + +@keyframes flipOutY { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; + } +} + +.flipOutY { + -webkit-animation-duration: 0.75s; + animation-duration: 0.75s; + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipOutY; + animation-name: flipOutY; +} + +@-webkit-keyframes lightSpeedIn { + from { + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; + } + + 60% { + -webkit-transform: skewX(20deg); + transform: skewX(20deg); + opacity: 1; + } + + 80% { + -webkit-transform: skewX(-5deg); + transform: skewX(-5deg); + opacity: 1; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +@keyframes lightSpeedIn { + from { + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; + } + + 60% { + -webkit-transform: skewX(20deg); + transform: skewX(20deg); + opacity: 1; + } + + 80% { + -webkit-transform: skewX(-5deg); + transform: skewX(-5deg); + opacity: 1; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +.lightSpeedIn { + -webkit-animation-name: lightSpeedIn; + animation-name: lightSpeedIn; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; +} + +@-webkit-keyframes lightSpeedOut { + from { + opacity: 1; + } + + to { + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; + } +} + +@keyframes lightSpeedOut { + from { + opacity: 1; + } + + to { + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; + } +} + +.lightSpeedOut { + -webkit-animation-name: lightSpeedOut; + animation-name: lightSpeedOut; + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; +} + +@-webkit-keyframes rotateIn { + from { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, -200deg); + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; + } + + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +@keyframes rotateIn { + from { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, -200deg); + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; + } + + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +.rotateIn { + -webkit-animation-name: rotateIn; + animation-name: rotateIn; +} + +@-webkit-keyframes rotateInDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +@keyframes rotateInDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +.rotateInDownLeft { + -webkit-animation-name: rotateInDownLeft; + animation-name: rotateInDownLeft; +} + +@-webkit-keyframes rotateInDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +@keyframes rotateInDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +.rotateInDownRight { + -webkit-animation-name: rotateInDownRight; + animation-name: rotateInDownRight; +} + +@-webkit-keyframes rotateInUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +@keyframes rotateInUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +.rotateInUpLeft { + -webkit-animation-name: rotateInUpLeft; + animation-name: rotateInUpLeft; +} + +@-webkit-keyframes rotateInUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -90deg); + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +@keyframes rotateInUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -90deg); + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +.rotateInUpRight { + -webkit-animation-name: rotateInUpRight; + animation-name: rotateInUpRight; +} + +@-webkit-keyframes rotateOut { + from { + -webkit-transform-origin: center; + transform-origin: center; + opacity: 1; + } + + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, 200deg); + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; + } +} + +@keyframes rotateOut { + from { + -webkit-transform-origin: center; + transform-origin: center; + opacity: 1; + } + + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, 200deg); + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; + } +} + +.rotateOut { + -webkit-animation-name: rotateOut; + animation-name: rotateOut; +} + +@-webkit-keyframes rotateOutDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } +} + +@keyframes rotateOutDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } +} + +.rotateOutDownLeft { + -webkit-animation-name: rotateOutDownLeft; + animation-name: rotateOutDownLeft; +} + +@-webkit-keyframes rotateOutDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +@keyframes rotateOutDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +.rotateOutDownRight { + -webkit-animation-name: rotateOutDownRight; + animation-name: rotateOutDownRight; +} + +@-webkit-keyframes rotateOutUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +@keyframes rotateOutUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +.rotateOutUpLeft { + -webkit-animation-name: rotateOutUpLeft; + animation-name: rotateOutUpLeft; +} + +@-webkit-keyframes rotateOutUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 90deg); + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; + } +} + +@keyframes rotateOutUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 90deg); + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; + } +} + +.rotateOutUpRight { + -webkit-animation-name: rotateOutUpRight; + animation-name: rotateOutUpRight; +} + +@-webkit-keyframes hinge { + 0% { + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 20%, + 60% { + -webkit-transform: rotate3d(0, 0, 1, 80deg); + transform: rotate3d(0, 0, 1, 80deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 40%, + 80% { + -webkit-transform: rotate3d(0, 0, 1, 60deg); + transform: rotate3d(0, 0, 1, 60deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + opacity: 1; + } + + to { + -webkit-transform: translate3d(0, 700px, 0); + transform: translate3d(0, 700px, 0); + opacity: 0; + } +} + +@keyframes hinge { + 0% { + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 20%, + 60% { + -webkit-transform: rotate3d(0, 0, 1, 80deg); + transform: rotate3d(0, 0, 1, 80deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 40%, + 80% { + -webkit-transform: rotate3d(0, 0, 1, 60deg); + transform: rotate3d(0, 0, 1, 60deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + opacity: 1; + } + + to { + -webkit-transform: translate3d(0, 700px, 0); + transform: translate3d(0, 700px, 0); + opacity: 0; + } +} + +.hinge { + -webkit-animation-duration: 2s; + animation-duration: 2s; + -webkit-animation-name: hinge; + animation-name: hinge; +} + +@-webkit-keyframes jackInTheBox { + from { + opacity: 0; + -webkit-transform: scale(0.1) rotate(30deg); + transform: scale(0.1) rotate(30deg); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + } + + 50% { + -webkit-transform: rotate(-10deg); + transform: rotate(-10deg); + } + + 70% { + -webkit-transform: rotate(3deg); + transform: rotate(3deg); + } + + to { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes jackInTheBox { + from { + opacity: 0; + -webkit-transform: scale(0.1) rotate(30deg); + transform: scale(0.1) rotate(30deg); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + } + + 50% { + -webkit-transform: rotate(-10deg); + transform: rotate(-10deg); + } + + 70% { + -webkit-transform: rotate(3deg); + transform: rotate(3deg); + } + + to { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} + +.jackInTheBox { + -webkit-animation-name: jackInTheBox; + animation-name: jackInTheBox; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes rollIn { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes rollIn { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.rollIn { + -webkit-animation-name: rollIn; + animation-name: rollIn; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes rollOut { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + } +} + +@keyframes rollOut { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + } +} + +.rollOut { + -webkit-animation-name: rollOut; + animation-name: rollOut; +} + +@-webkit-keyframes zoomIn { + from { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + + 50% { + opacity: 1; + } +} + +@keyframes zoomIn { + from { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + + 50% { + opacity: 1; + } +} + +.zoomIn { + -webkit-animation-name: zoomIn; + animation-name: zoomIn; +} + +@-webkit-keyframes zoomInDown { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +@keyframes zoomInDown { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +.zoomInDown { + -webkit-animation-name: zoomInDown; + animation-name: zoomInDown; +} + +@-webkit-keyframes zoomInLeft { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +@keyframes zoomInLeft { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +.zoomInLeft { + -webkit-animation-name: zoomInLeft; + animation-name: zoomInLeft; +} + +@-webkit-keyframes zoomInRight { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +@keyframes zoomInRight { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +.zoomInRight { + -webkit-animation-name: zoomInRight; + animation-name: zoomInRight; +} + +@-webkit-keyframes zoomInUp { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +@keyframes zoomInUp { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +.zoomInUp { + -webkit-animation-name: zoomInUp; + animation-name: zoomInUp; +} + +@-webkit-keyframes zoomOut { + from { + opacity: 1; + } + + 50% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + + to { + opacity: 0; + } +} + +@keyframes zoomOut { + from { + opacity: 1; + } + + 50% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + + to { + opacity: 0; + } +} + +.zoomOut { + -webkit-animation-name: zoomOut; + animation-name: zoomOut; +} + +@-webkit-keyframes zoomOutDown { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + to { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +@keyframes zoomOutDown { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + to { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +.zoomOutDown { + -webkit-animation-name: zoomOutDown; + animation-name: zoomOutDown; +} + +@-webkit-keyframes zoomOutLeft { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); + transform: scale(0.1) translate3d(-2000px, 0, 0); + -webkit-transform-origin: left center; + transform-origin: left center; + } +} + +@keyframes zoomOutLeft { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); + transform: scale(0.1) translate3d(-2000px, 0, 0); + -webkit-transform-origin: left center; + transform-origin: left center; + } +} + +.zoomOutLeft { + -webkit-animation-name: zoomOutLeft; + animation-name: zoomOutLeft; +} + +@-webkit-keyframes zoomOutRight { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); + transform: scale(0.1) translate3d(2000px, 0, 0); + -webkit-transform-origin: right center; + transform-origin: right center; + } +} + +@keyframes zoomOutRight { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); + transform: scale(0.1) translate3d(2000px, 0, 0); + -webkit-transform-origin: right center; + transform-origin: right center; + } +} + +.zoomOutRight { + -webkit-animation-name: zoomOutRight; + animation-name: zoomOutRight; +} + +@-webkit-keyframes zoomOutUp { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + to { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +@keyframes zoomOutUp { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + to { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} + +.zoomOutUp { + -webkit-animation-name: zoomOutUp; + animation-name: zoomOutUp; +} + +@-webkit-keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInDown { + -webkit-animation-name: slideInDown; + animation-name: slideInDown; +} + +@-webkit-keyframes slideInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInLeft { + -webkit-animation-name: slideInLeft; + animation-name: slideInLeft; +} + +@-webkit-keyframes slideInRight { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInRight { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInRight { + -webkit-animation-name: slideInRight; + animation-name: slideInRight; +} + +@-webkit-keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInUp { + -webkit-animation-name: slideInUp; + animation-name: slideInUp; +} + +@-webkit-keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +.slideOutDown { + -webkit-animation-name: slideOutDown; + animation-name: slideOutDown; +} + +@-webkit-keyframes slideOutLeft { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes slideOutLeft { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +.slideOutLeft { + -webkit-animation-name: slideOutLeft; + animation-name: slideOutLeft; +} + +@-webkit-keyframes slideOutRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +@keyframes slideOutRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +.slideOutRight { + -webkit-animation-name: slideOutRight; + animation-name: slideOutRight; +} + +@-webkit-keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +.slideOutUp { + -webkit-animation-name: slideOutUp; + animation-name: slideOutUp; +} + +body { + font-family: 'Open Sans', sans-serif; +} + +.main_display { + text-transform: uppercase; +} + + + +.parallax-window { + min-height: 100vh; + background-color: transparent; + text-align: center; + /* background-image: url('../image/main_picture.jpg'); */ + background-size: cover; + background-repeat: no-repeat; + background-position: center center; +} + +section { + margin-bottom: 15px; +} + +img { + max-width: 100%; +} + +h2 { + margin-bottom: 30px; +} + +header.main_display { + margin-bottom: 10px; +} +header.main_display .nav-menu { + position: fixed; + z-index: 50; + right: 0; + top: 0; + transition: background-color 1s; + width: 100%; +} +header.main_display .nav-menu.show { + height: 100%; + background-color: rgba(0, 0, 0, 0.8); +} +header.main_display .nav-menu button { + background-color: #343a40; + margin-left: auto; + margin-right: 1rem; + margin-top: 1rem; +} +header.main_display .nav-menu button .lines { + width: 30px; + height: 30px; + padding: 3px 0; + justify-content: space-between; + align-items: center; +} +header.main_display .nav-menu button .lines .line { + width: 30px; + height: 2px; + background-color: #9A9DA0; + transition: opacity 0.5s, -webkit-transform 0.5s; + transition: opacity .5s, -webkit-transform .5s; + transition: transform .5s, opacity .5s; + transition: transform .5s, opacity .5s, -webkit-transform .5s; + transition: transform 0.5s, opacity 0.5s, -webkit-transform 0.5s; +} +header.main_display .nav-menu button .lines .line-first.x { + -webkit-transform-origin: center center; + transform-origin: center center; + -webkit-transform: translateY(11px) rotate(45deg); + transform: translateY(11px) rotate(45deg); +} +header.main_display .nav-menu button .lines .line-second.x { + -webkit-transform-origin: center center; + transform-origin: center center; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); +} +header.main_display .nav-menu button .lines .line-third.x { + -webkit-transform: translateY(-11px); + transform: translateY(-11px); + opacity: 0; +} +header.main_display .nav-menu .navbar ul { + position: relative; +} +header.main_display .nav-menu .navbar ul li { + transition: all .3s; +} +header.main_display .nav-menu .navbar ul li a { + color: white; + display: block; + text-transform: uppercase; + font-size: 1rem; + letter-spacing: 5px; + position: relative; + height: 60px; + outline: none; + transition: color .5s; +} +header.main_display .nav-menu .navbar ul li:hover { + background-color: rgba(0, 0, 0, 0.3); +} +header.main_display .nav-menu .navbar ul li:hover a { + color: #f13a19; + /* @redIconsColor; */ +} +header.main_display .nav-menu .navbar ul li.background { + width: 200px; + margin: auto; +} +header.main_display p { + letter-spacing: 5px; + font-weight: bold; + font-size: 15px; +} +header.main_display p.logo-line { + -webkit-transform: translateX(-2rem); + transform: translateX(-2rem); +} +header.main_display p img { + display: inline-block; + height: 5.5rem; + width: auto; +} +header.main_display .middle { + max-width: 80%; + margin: 0 auto; + background-color: rgba(255, 255, 255, 0.6); +} +header.main_display .middle h1 { + font-size: 1.8rem; + font-weight: 600; + color: #072704; +} +header.main_display .middle .skills { + font-size: 1rem; +} +header.main_display .empty { + height: 10rem; +} +main { + padding: 15px; +} +main .about_me { + margin-bottom: 100px; +} +main .about_me h4 { + color: #072704; + margin-bottom: 25px; +} +main .about_me .header { + text-align: center; +} +main .about_me .header div { + letter-spacing: 4px; + font-size: 1.2em; +} +main .about_me .header .underline { + line-height: 3rem; + border-bottom: 2px solid #000000; + width: 60%; + margin: auto; + padding: 12px; +} +main .about_me div { + color: #222; +} +main .about_me div.description .article .skills { + margin-bottom: -23px; +} +main .about_me div.description .article .skills span { + margin: 0 3px 0 2px ; + font-size: 6px; +} +main .about_me div.description .article .skills span i { + -webkit-transform: translateY(-4px); + transform: translateY(-4px); +} +main .about_me div .photo .wrapper_photo { + border-radius: 50%; + border: 1px solid black; + overflow: hidden; + max-height: 300px; + max-width: 300px; +} +main .about_me div .personal span { + margin-right: 0.6em; +} +main .about_me div .personal div { + margin-bottom: 10px; +} +main .about_me div .personal div.name { + margin-bottom: 15px; + color: #555; + letter-spacing: 2px; + font-size: 1.2em; +} +main .about_me div .personal div.skype span { + color: #00AFF0; + font-size: 1.3em; +} +main .about_me div .personal div.skype span i { + -webkit-transform: translateY(2px); + transform: translateY(2px); +} +main .about_me div .personal div.e-mail span { + color: #00AFF0; + font-size: 1.3em; +} +main .about_me div .personal div.e-mail span i { + -webkit-transform: translateY(2px); + transform: translateY(2px); +} +main .about_me div .personal div.my_site a { + color: inherit; + text-decoration: underline; +} +main .about_me div .personal div.my_site span.html { + color: #FF6347; + font-size: 1.3em; +} +main .about_me div .personal div.my_site span.html i { + -webkit-transform: translateY(2px); + transform: translateY(2px); +} +main .about_me div .personal div.my_site span.hand { + color: #00AFF0; + font-size: 1.3em; +} +main .about_me div .personal div.my_site span.hand i { + -webkit-transform: translate(-104px, 21px); + transform: translate(-104px, 21px); +} +main .resume { + margin-bottom: 150px; +} +main .resume .header { + text-align: center; +} +main .resume .header div { + letter-spacing: 4px; + font-size: 1.2em; +} +main .resume .header div.education { + text-align: justify; +} +main .resume .header .underline { + line-height: 3rem; + border-bottom: 2px solid #000000; + width: 60%; + margin: auto; + padding: 12px; +} +main .resume h2 { + text-align: center; +} +main .resume .subheader { + text-align: center; + font-size: 14px; + display: inline-block; + background-color: #FF6347; + color: white; + font-weight: 600; + font-style: italic; + padding: 0 15px; + margin: 3rem 0; +} +main .resume .ico { + text-align: center; + margin: 25px 0; +} +main .resume .ico i { + color: #00AFF0; +} +main .portfolio { + background-color: #222; + padding-top: 50px; +} +main .portfolio .last-card { + margin-bottom: 8rem; +} +main .portfolio .card { + position: relative; + overflow: hidden; + color: white; + background-color: rgba(0, 0, 0, 0.8); + text-align: center; + box-shadow: 0 0 0 rgba(0, 0, 0, 0); + transition: box-shadow 0.3s; +} +main .portfolio .card .card-body { + position: absolute; + background-color: rgba(0, 0, 0, 0.6); + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + opacity: 1; + transition: opacity .3s; +} +main .portfolio .card .card-body .card-title { + text-transform: uppercase; + font-size: 1rem; + margin-bottom: 1rem; + color: #FF6347; +} +main .portfolio .card .card-body .wrapper { + transition: -webkit-transform 0.3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + transition: transform 0.3s, -webkit-transform 0.3s; +} +main .portfolio .card .card-body-2 { + position: absolute; + justify-content: center; + align-items: center; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +main .portfolio .card .card-body-2 .card-look { + display: inline-block; + opacity: 0; + color: white; + -webkit-transform: translateY(-100px); + transform: translateY(-100px); + transition: opacity 0.3s, color 0.3s, -webkit-transform 0.3s; + transition: opacity .3s, color .3s, -webkit-transform .3s; + transition: opacity .3s, color .3s, transform .3s; + transition: opacity .3s, color .3s, transform .3s, -webkit-transform .3s; + transition: opacity 0.3s, color 0.3s, transform 0.3s, -webkit-transform 0.3s; + border: 3px solid #FF6347; + padding: 5px 20px; +} +main .portfolio .card .card-img-top { + opacity: .7; + -webkit-transform: scale(1.2, 1.2); + transform: scale(1.2, 1.2); + transition: -webkit-transform 0.3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + transition: transform 0.3s, -webkit-transform 0.3s; +} +main .portfolio .card:hover { + cursor: pointer; + box-shadow: 0 0 30px rgba(0, 0, 0, 0.9); +} +main .portfolio .card:hover .card-body { + opacity: 0; +} +main .portfolio .card:hover .card-body .wrapper { + -webkit-transform: translateY(100px); + transform: translateY(100px); +} +main .portfolio .card:hover .card-img-top { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); +} +main .portfolio .card:hover .card-look { + opacity: 1; + color: white; + -webkit-transform: translateY(0); + transform: translateY(0); +} +main .portfolio img { + width: 100%; + height: auto; +} +main .portfolio .header { + text-align: center; + color: white; +} +main .portfolio .header h2 { + padding: 5px 25px; + margin-left: auto; + margin-right: auto; +} +main .portfolio .header div { + max-width: 85%; + margin: auto; + letter-spacing: 4px; + font-size: 1.2em; +} +footer .contacts .header { + text-align: center; +} +footer .contacts .header div { + letter-spacing: 4px; + font-size: 1.2em; +} +footer .contacts .header .underline { + line-height: 3rem; + border-bottom: 2px solid #000000; + width: 60%; + margin: auto; + padding: 12px; +} +footer .contacts .item { + text-align: center; + margin-bottom: 2rem; +} +footer .contacts .item .ico { + margin-bottom: 1rem; +} +footer .contacts .item .ico span i { + color: #00AFF0; +} +footer .copyright { + background-color: #222; + color: white; + margin-bottom: 0; +} +footer .copyright i { + color: #FF6347; + cursor: pointer; +} +@media only screen and (max-width: 992px) { + .description, + .photo, + .personal { + margin-bottom: 40px; + } +} +@media only screen and (max-width: 576px) { + h2 { + box-shadow: 0 11px 0 white, 0 20px 20px black; + } + .portfolio h2 { + box-shadow: 0 11px 0 #222, 0 20px 20px white; + } +} +@media only screen and (max-width: 480px) { + h2 { + margin-bottom: 100px; + } + .personal { + margin-bottom: 15px; + } +} +/* #1ee30b; */ +h3 { + text-align: center; +} + +.middle.animated { + -webkit-animation-duration: 1.5s; + animation-duration: 1.5s; +} +.animated.fadeInRight, +.animated.fadeInLeft { + -webkit-animation-duration: 1s; + animation-duration: 1s; +} +.navbar-nav .nav-item.item-4 { + -webkit-animation-duration: 1.6s; + animation-duration: 1.6s; +} +.navbar-nav .nav-item.item-3 { + -webkit-animation-duration: 1.2s; + animation-duration: 1.2s; +} +.navbar-nav .nav-item.item-2 { + -webkit-animation-duration: 0.8s; + animation-duration: 0.8s; +} +.navbar-nav .nav-item.item-1 { + -webkit-animation-duration: 0.4s; + animation-duration: 0.4s; +} + + +/* Large Devices, Wide Screens */ +@media only screen and (max-width : 1200px) { + main .about_me div .personal div.my_site span.hand i { + transform: translate(183px, -11px); + } + + header.main_display h1 { + font-size: 1.5rem; + } + + + header.main_display, + section.about_me{ + margin-bottom: 35px; + } + + header p.web_html, + header p.skills { + font-size: 14px ! important; + } + + header p.web_html { + margin-bottom: 9px; + } +} + + +@media only screen and (max-width : 954px) { + header.main_display .middle .skills{ + display: none; + } +} + + + +/* Medium Devices, Desktops */ +@media only screen and (max-width : 992px) { + + main .about_me div .personal div.my_site span.hand i { + transform: translate(-104px, 19px); + } + + footer .contacts .header h1 { + margin-bottom: 70px; + } + + main .portfolio .card .card-body .card-title { + font-size: 0.8rem; + } +} + +/* Small Devices, Tablets */ +@media only screen and (max-width : 768px) { + main .portfolio .card .card-body .card-title { + font-size: 0.7rem; + } + + main .portfolio { + padding-top: 50px; + } + + main .portfolio .header div { + font-size: 1rem; + } + + main .portfolio .header h1 { + margin-bottom: 47px; + } + +} + + +/* Small Devices, Tablets */ +@media only screen and (max-width : 576px) { + #portfolio__ .row.mb-sm-5 { + padding-left: 60px; + padding-right: 60px; + } + + main .portfolio .last-card { + margin-bottom: 4rem; + } + +} + +@media only screen and (max-width : 544px) { + main .portfolio .header div { + font-size: 0.8rem; + } +} + + +/* Extra Small Devices, Phones */ +@media only screen and (max-width : 480px) { + header.main_display p img { + transform: translateX(-106px) !important; + } + + h1{ + font-size: 1.7rem !important; + } +} + + +/*# sourceMappingURL=style.3abd22fd5b86b00e73a3.css.map*/ \ No newline at end of file diff --git a/dist/style.3abd22fd5b86b00e73a3.css.map b/dist/style.3abd22fd5b86b00e73a3.css.map new file mode 100644 index 0000000..6c576bb --- /dev/null +++ b/dist/style.3abd22fd5b86b00e73a3.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./css/animate.css","webpack:///./css/style.css (1)","webpack:///./less/style.less","webpack:///./less/animate.less","webpack:///./css/media.css"],"names":[],"mappings":";AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;ACr6GA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,C;;AC9BA;EACE,oBAAoB;CACrB;AACD;EACE,gBAAgB;EAChB,YAAY;EACZ,SAAS;EACT,OAAO;EACP,gCAAgC;EAChC,YAAY;CACb;AACD;EACE,aAAa;EACb,qCAAqC;CACtC;AACD;EACE,0BAA0B;EAC1B,kBAAkB;EAClB,mBAAmB;EACnB,iBAAiB;CAClB;AACD;EACE,YAAY;EACZ,aAAa;EACb,eAAe;EACf,+BAA+B;EAC/B,oBAAoB;CACrB;AACD;EACE,YAAY;EACZ,YAAY;EACZ,0BAA0B;EAC1B,iDAAiD;EACjD,+CAA+C;EAC/C,uCAAuC;EACvC,8DAA8D;EAC9D,iEAAiE;CAClE;AACD;EACE,wCAAwC;EACxC,gCAAgC;EAChC,kDAAkD;EAClD,0CAA0C;CAC3C;AACD;EACE,wCAAwC;EACxC,gCAAgC;EAChC,kCAAkC;EAClC,0BAA0B;CAC3B;AACD;EACE,qCAAqC;EACrC,6BAA6B;EAC7B,WAAW;CACZ;AACD;EACE,mBAAmB;CACpB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,aAAa;EACb,eAAe;EACf,0BAA0B;EAC1B,gBAAgB;EAChB,oBAAoB;EACpB,mBAAmB;EACnB,aAAa;EACb,cAAc;EACd,sBAAsB;CACvB;AACD;EACE,qCAAqC;CACtC;AACD;EACE,eAAe;EACf,qBAAqB;CACtB;AACD;EACE,aAAa;EACb,aAAa;CACd;AACD;EACE,oBAAoB;EACpB,kBAAkB;EAClB,gBAAgB;CACjB;AACD;EACE,qCAAqC;EACrC,6BAA6B;CAC9B;AACD;EACE,sBAAsB;EACtB,eAAe;EACf,YAAY;CACb;AACD;EACE,eAAe;EACf,eAAe;EACf,2CAA2C;CAC5C;AACD;EACE,kBAAkB;EAClB,iBAAiB;EACjB,eAAe;CAChB;AACD;EACE,gBAAgB;CACjB;AACD;EACE,cAAc;CACf;AACD;EACE,cAAc;CACf;AACD;EACE,qBAAqB;CACtB;AACD;EACE,eAAe;EACf,oBAAoB;CACrB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,kBAAkB;EAClB,iCAAiC;EACjC,WAAW;EACX,aAAa;EACb,cAAc;CACf;AACD;EACE,YAAY;CACb;AACD;EACE,qBAAqB;CACtB;AACD;EACE,qBAAqB;EACrB,eAAe;CAChB;AACD;EACE,oCAAoC;EACpC,4BAA4B;CAC7B;AACD;EACE,mBAAmB;EACnB,wBAAwB;EACxB,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;CAClB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,oBAAoB;EACpB,YAAY;EACZ,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,mCAAmC;EACnC,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,mCAAmC;EACnC,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,mCAAmC;EACnC,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,2CAA2C;EAC3C,mCAAmC;CACpC;AACD;EACE,qBAAqB;CACtB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,kBAAkB;EAClB,iCAAiC;EACjC,WAAW;EACX,aAAa;EACb,cAAc;CACf;AACD;EACE,mBAAmB;CACpB;AACD;EACE,mBAAmB;EACnB,gBAAgB;EAChB,sBAAsB;EACtB,0BAA0B;EAC1B,aAAa;EACb,iBAAiB;EACjB,mBAAmB;EACnB,gBAAgB;EAChB,eAAe;CAChB;AACD;EACE,mBAAmB;EACnB,eAAe;CAChB;AACD;EACE,eAAe;CAChB;AACD;EACE,uBAAuB;EACvB,kBAAkB;CACnB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,mBAAmB;EACnB,iBAAiB;EACjB,aAAa;EACb,qCAAqC;EACrC,mBAAmB;EACnB,mCAAmC;EACnC,4BAA4B;CAC7B;AACD;EACE,mBAAmB;EACnB,qCAAqC;EACrC,YAAY;EACZ,aAAa;EACb,cAAc;EACd,uBAAuB;EACvB,wBAAwB;EACxB,oBAAoB;EACpB,WAAW;EACX,wBAAwB;CACzB;AACD;EACE,0BAA0B;EAC1B,gBAAgB;EAChB,oBAAoB;EACpB,eAAe;CAChB;AACD;EACE,mCAAmC;EACnC,kCAAkC;EAClC,0BAA0B;EAC1B,iDAAiD;EACjD,mDAAmD;CACpD;AACD;EACE,mBAAmB;EACnB,wBAAwB;EACxB,oBAAoB;EACpB,OAAO;EACP,UAAU;EACV,QAAQ;EACR,SAAS;CACV;AACD;EACE,sBAAsB;EACtB,WAAW;EACX,aAAa;EACb,sCAAsC;EACtC,8BAA8B;EAC9B,6DAA6D;EAC7D,0DAA0D;EAC1D,kDAAkD;EAClD,yEAAyE;EACzE,6EAA6E;EAC7E,0BAA0B;EAC1B,kBAAkB;CACnB;AACD;EACE,YAAY;EACZ,mCAAmC;EACnC,2BAA2B;EAC3B,mCAAmC;EACnC,kCAAkC;EAClC,0BAA0B;EAC1B,iDAAiD;EACjD,mDAAmD;CACpD;AACD;EACE,gBAAgB;EAChB,wCAAwC;CACzC;AACD;EACE,WAAW;CACZ;AACD;EACE,qCAAqC;EACrC,6BAA6B;CAC9B;AACD;EACE,+BAA+B;EAC/B,uBAAuB;CACxB;AACD;EACE,WAAW;EACX,aAAa;EACb,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,YAAY;EACZ,aAAa;CACd;AACD;EACE,mBAAmB;EACnB,aAAa;CACd;AACD;EACE,kBAAkB;EAClB,kBAAkB;EAClB,mBAAmB;CACpB;AACD;EACE,eAAe;EACf,aAAa;EACb,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,kBAAkB;EAClB,iCAAiC;EACjC,WAAW;EACX,aAAa;EACb,cAAc;CACf;AACD;EACE,mBAAmB;EACnB,oBAAoB;CACrB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,eAAe;CAChB;AACD;EACE,uBAAuB;EACvB,aAAa;EACb,iBAAiB;CAClB;AACD;EACE,eAAe;EACf,gBAAgB;CACjB;AACD;EACE;;;IAGE,oBAAoB;GACrB;CACF;AACD;EACE;IACE,8CAA8C;GAC/C;EACD;IACE,6CAA6C;GAC9C;CACF;AACD;EACE;IACE,qBAAqB;GACtB;EACD;IACE,oBAAoB;GACrB;CACF;AACD,cAAc;AACd;EACE,mBAAmB;CACpB;;ACpaD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;;EAEE,+BAA+B;EAC/B,uBAAuB;CACxB;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;;;ACvBD;AACA;AACA;AACA,2C;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,4B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,K;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA","file":"style.3abd22fd5b86b00e73a3.css","sourcesContent":["@charset \"UTF-8\";\r\n\r\n/*!\r\n * animate.css -http://daneden.me/animate\r\n * Version - 3.6.0\r\n * Licensed under the MIT license - http://opensource.org/licenses/MIT\r\n *\r\n * Copyright (c) 2018 Daniel Eden\r\n */\r\n\r\n.animated {\r\n -webkit-animation-duration: 1s;\r\n animation-duration: 1s;\r\n -webkit-animation-fill-mode: both;\r\n animation-fill-mode: both;\r\n}\r\n\r\n.animated.infinite {\r\n -webkit-animation-iteration-count: infinite;\r\n animation-iteration-count: infinite;\r\n}\r\n\r\n@-webkit-keyframes bounce {\r\n from,\r\n 20%,\r\n 53%,\r\n 80%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 40%,\r\n 43% {\r\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n -webkit-transform: translate3d(0, -30px, 0);\r\n transform: translate3d(0, -30px, 0);\r\n }\r\n\r\n 70% {\r\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n -webkit-transform: translate3d(0, -15px, 0);\r\n transform: translate3d(0, -15px, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(0, -4px, 0);\r\n transform: translate3d(0, -4px, 0);\r\n }\r\n}\r\n\r\n@keyframes bounce {\r\n from,\r\n 20%,\r\n 53%,\r\n 80%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 40%,\r\n 43% {\r\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n -webkit-transform: translate3d(0, -30px, 0);\r\n transform: translate3d(0, -30px, 0);\r\n }\r\n\r\n 70% {\r\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n -webkit-transform: translate3d(0, -15px, 0);\r\n transform: translate3d(0, -15px, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(0, -4px, 0);\r\n transform: translate3d(0, -4px, 0);\r\n }\r\n}\r\n\r\n.bounce {\r\n -webkit-animation-name: bounce;\r\n animation-name: bounce;\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n}\r\n\r\n@-webkit-keyframes flash {\r\n from,\r\n 50%,\r\n to {\r\n opacity: 1;\r\n }\r\n\r\n 25%,\r\n 75% {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes flash {\r\n from,\r\n 50%,\r\n to {\r\n opacity: 1;\r\n }\r\n\r\n 25%,\r\n 75% {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.flash {\r\n -webkit-animation-name: flash;\r\n animation-name: flash;\r\n}\r\n\r\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\r\n\r\n@-webkit-keyframes pulse {\r\n from {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n\r\n 50% {\r\n -webkit-transform: scale3d(1.05, 1.05, 1.05);\r\n transform: scale3d(1.05, 1.05, 1.05);\r\n }\r\n\r\n to {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n@keyframes pulse {\r\n from {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n\r\n 50% {\r\n -webkit-transform: scale3d(1.05, 1.05, 1.05);\r\n transform: scale3d(1.05, 1.05, 1.05);\r\n }\r\n\r\n to {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n.pulse {\r\n -webkit-animation-name: pulse;\r\n animation-name: pulse;\r\n}\r\n\r\n@-webkit-keyframes rubberBand {\r\n from {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: scale3d(1.25, 0.75, 1);\r\n transform: scale3d(1.25, 0.75, 1);\r\n }\r\n\r\n 40% {\r\n -webkit-transform: scale3d(0.75, 1.25, 1);\r\n transform: scale3d(0.75, 1.25, 1);\r\n }\r\n\r\n 50% {\r\n -webkit-transform: scale3d(1.15, 0.85, 1);\r\n transform: scale3d(1.15, 0.85, 1);\r\n }\r\n\r\n 65% {\r\n -webkit-transform: scale3d(0.95, 1.05, 1);\r\n transform: scale3d(0.95, 1.05, 1);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: scale3d(1.05, 0.95, 1);\r\n transform: scale3d(1.05, 0.95, 1);\r\n }\r\n\r\n to {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n@keyframes rubberBand {\r\n from {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: scale3d(1.25, 0.75, 1);\r\n transform: scale3d(1.25, 0.75, 1);\r\n }\r\n\r\n 40% {\r\n -webkit-transform: scale3d(0.75, 1.25, 1);\r\n transform: scale3d(0.75, 1.25, 1);\r\n }\r\n\r\n 50% {\r\n -webkit-transform: scale3d(1.15, 0.85, 1);\r\n transform: scale3d(1.15, 0.85, 1);\r\n }\r\n\r\n 65% {\r\n -webkit-transform: scale3d(0.95, 1.05, 1);\r\n transform: scale3d(0.95, 1.05, 1);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: scale3d(1.05, 0.95, 1);\r\n transform: scale3d(1.05, 0.95, 1);\r\n }\r\n\r\n to {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n.rubberBand {\r\n -webkit-animation-name: rubberBand;\r\n animation-name: rubberBand;\r\n}\r\n\r\n@-webkit-keyframes shake {\r\n from,\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 10%,\r\n 30%,\r\n 50%,\r\n 70%,\r\n 90% {\r\n -webkit-transform: translate3d(-10px, 0, 0);\r\n transform: translate3d(-10px, 0, 0);\r\n }\r\n\r\n 20%,\r\n 40%,\r\n 60%,\r\n 80% {\r\n -webkit-transform: translate3d(10px, 0, 0);\r\n transform: translate3d(10px, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes shake {\r\n from,\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 10%,\r\n 30%,\r\n 50%,\r\n 70%,\r\n 90% {\r\n -webkit-transform: translate3d(-10px, 0, 0);\r\n transform: translate3d(-10px, 0, 0);\r\n }\r\n\r\n 20%,\r\n 40%,\r\n 60%,\r\n 80% {\r\n -webkit-transform: translate3d(10px, 0, 0);\r\n transform: translate3d(10px, 0, 0);\r\n }\r\n}\r\n\r\n.shake {\r\n -webkit-animation-name: shake;\r\n animation-name: shake;\r\n}\r\n\r\n@-webkit-keyframes headShake {\r\n 0% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n }\r\n\r\n 6.5% {\r\n -webkit-transform: translateX(-6px) rotateY(-9deg);\r\n transform: translateX(-6px) rotateY(-9deg);\r\n }\r\n\r\n 18.5% {\r\n -webkit-transform: translateX(5px) rotateY(7deg);\r\n transform: translateX(5px) rotateY(7deg);\r\n }\r\n\r\n 31.5% {\r\n -webkit-transform: translateX(-3px) rotateY(-5deg);\r\n transform: translateX(-3px) rotateY(-5deg);\r\n }\r\n\r\n 43.5% {\r\n -webkit-transform: translateX(2px) rotateY(3deg);\r\n transform: translateX(2px) rotateY(3deg);\r\n }\r\n\r\n 50% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n }\r\n}\r\n\r\n@keyframes headShake {\r\n 0% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n }\r\n\r\n 6.5% {\r\n -webkit-transform: translateX(-6px) rotateY(-9deg);\r\n transform: translateX(-6px) rotateY(-9deg);\r\n }\r\n\r\n 18.5% {\r\n -webkit-transform: translateX(5px) rotateY(7deg);\r\n transform: translateX(5px) rotateY(7deg);\r\n }\r\n\r\n 31.5% {\r\n -webkit-transform: translateX(-3px) rotateY(-5deg);\r\n transform: translateX(-3px) rotateY(-5deg);\r\n }\r\n\r\n 43.5% {\r\n -webkit-transform: translateX(2px) rotateY(3deg);\r\n transform: translateX(2px) rotateY(3deg);\r\n }\r\n\r\n 50% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n }\r\n}\r\n\r\n.headShake {\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n -webkit-animation-name: headShake;\r\n animation-name: headShake;\r\n}\r\n\r\n@-webkit-keyframes swing {\r\n 20% {\r\n -webkit-transform: rotate3d(0, 0, 1, 15deg);\r\n transform: rotate3d(0, 0, 1, 15deg);\r\n }\r\n\r\n 40% {\r\n -webkit-transform: rotate3d(0, 0, 1, -10deg);\r\n transform: rotate3d(0, 0, 1, -10deg);\r\n }\r\n\r\n 60% {\r\n -webkit-transform: rotate3d(0, 0, 1, 5deg);\r\n transform: rotate3d(0, 0, 1, 5deg);\r\n }\r\n\r\n 80% {\r\n -webkit-transform: rotate3d(0, 0, 1, -5deg);\r\n transform: rotate3d(0, 0, 1, -5deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: rotate3d(0, 0, 1, 0deg);\r\n transform: rotate3d(0, 0, 1, 0deg);\r\n }\r\n}\r\n\r\n@keyframes swing {\r\n 20% {\r\n -webkit-transform: rotate3d(0, 0, 1, 15deg);\r\n transform: rotate3d(0, 0, 1, 15deg);\r\n }\r\n\r\n 40% {\r\n -webkit-transform: rotate3d(0, 0, 1, -10deg);\r\n transform: rotate3d(0, 0, 1, -10deg);\r\n }\r\n\r\n 60% {\r\n -webkit-transform: rotate3d(0, 0, 1, 5deg);\r\n transform: rotate3d(0, 0, 1, 5deg);\r\n }\r\n\r\n 80% {\r\n -webkit-transform: rotate3d(0, 0, 1, -5deg);\r\n transform: rotate3d(0, 0, 1, -5deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: rotate3d(0, 0, 1, 0deg);\r\n transform: rotate3d(0, 0, 1, 0deg);\r\n }\r\n}\r\n\r\n.swing {\r\n -webkit-transform-origin: top center;\r\n transform-origin: top center;\r\n -webkit-animation-name: swing;\r\n animation-name: swing;\r\n}\r\n\r\n@-webkit-keyframes tada {\r\n from {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n\r\n 10%,\r\n 20% {\r\n -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\r\n transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\r\n }\r\n\r\n 30%,\r\n 50%,\r\n 70%,\r\n 90% {\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\r\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\r\n }\r\n\r\n 40%,\r\n 60%,\r\n 80% {\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\r\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n@keyframes tada {\r\n from {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n\r\n 10%,\r\n 20% {\r\n -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\r\n transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\r\n }\r\n\r\n 30%,\r\n 50%,\r\n 70%,\r\n 90% {\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\r\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\r\n }\r\n\r\n 40%,\r\n 60%,\r\n 80% {\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\r\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n.tada {\r\n -webkit-animation-name: tada;\r\n animation-name: tada;\r\n}\r\n\r\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\r\n\r\n@-webkit-keyframes wobble {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 15% {\r\n -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\r\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\r\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\r\n }\r\n\r\n 45% {\r\n -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\r\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\r\n }\r\n\r\n 60% {\r\n -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\r\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\r\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes wobble {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 15% {\r\n -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\r\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\r\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\r\n }\r\n\r\n 45% {\r\n -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\r\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\r\n }\r\n\r\n 60% {\r\n -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\r\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\r\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.wobble {\r\n -webkit-animation-name: wobble;\r\n animation-name: wobble;\r\n}\r\n\r\n@-webkit-keyframes jello {\r\n from,\r\n 11.1%,\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 22.2% {\r\n -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\r\n transform: skewX(-12.5deg) skewY(-12.5deg);\r\n }\r\n\r\n 33.3% {\r\n -webkit-transform: skewX(6.25deg) skewY(6.25deg);\r\n transform: skewX(6.25deg) skewY(6.25deg);\r\n }\r\n\r\n 44.4% {\r\n -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\r\n transform: skewX(-3.125deg) skewY(-3.125deg);\r\n }\r\n\r\n 55.5% {\r\n -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\r\n transform: skewX(1.5625deg) skewY(1.5625deg);\r\n }\r\n\r\n 66.6% {\r\n -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\r\n transform: skewX(-0.78125deg) skewY(-0.78125deg);\r\n }\r\n\r\n 77.7% {\r\n -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\r\n transform: skewX(0.390625deg) skewY(0.390625deg);\r\n }\r\n\r\n 88.8% {\r\n -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\r\n transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\r\n }\r\n}\r\n\r\n@keyframes jello {\r\n from,\r\n 11.1%,\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 22.2% {\r\n -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\r\n transform: skewX(-12.5deg) skewY(-12.5deg);\r\n }\r\n\r\n 33.3% {\r\n -webkit-transform: skewX(6.25deg) skewY(6.25deg);\r\n transform: skewX(6.25deg) skewY(6.25deg);\r\n }\r\n\r\n 44.4% {\r\n -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\r\n transform: skewX(-3.125deg) skewY(-3.125deg);\r\n }\r\n\r\n 55.5% {\r\n -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\r\n transform: skewX(1.5625deg) skewY(1.5625deg);\r\n }\r\n\r\n 66.6% {\r\n -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\r\n transform: skewX(-0.78125deg) skewY(-0.78125deg);\r\n }\r\n\r\n 77.7% {\r\n -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\r\n transform: skewX(0.390625deg) skewY(0.390625deg);\r\n }\r\n\r\n 88.8% {\r\n -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\r\n transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\r\n }\r\n}\r\n\r\n.jello {\r\n -webkit-animation-name: jello;\r\n animation-name: jello;\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n}\r\n\r\n@-webkit-keyframes bounceIn {\r\n from,\r\n 20%,\r\n 40%,\r\n 60%,\r\n 80%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n 0% {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n\r\n 20% {\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\r\n transform: scale3d(1.1, 1.1, 1.1);\r\n }\r\n\r\n 40% {\r\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\r\n transform: scale3d(0.9, 0.9, 0.9);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\r\n transform: scale3d(1.03, 1.03, 1.03);\r\n }\r\n\r\n 80% {\r\n -webkit-transform: scale3d(0.97, 0.97, 0.97);\r\n transform: scale3d(0.97, 0.97, 0.97);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n@keyframes bounceIn {\r\n from,\r\n 20%,\r\n 40%,\r\n 60%,\r\n 80%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n 0% {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n\r\n 20% {\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\r\n transform: scale3d(1.1, 1.1, 1.1);\r\n }\r\n\r\n 40% {\r\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\r\n transform: scale3d(0.9, 0.9, 0.9);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\r\n transform: scale3d(1.03, 1.03, 1.03);\r\n }\r\n\r\n 80% {\r\n -webkit-transform: scale3d(0.97, 0.97, 0.97);\r\n transform: scale3d(0.97, 0.97, 0.97);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n.bounceIn {\r\n -webkit-animation-duration: 0.75s;\r\n animation-duration: 0.75s;\r\n -webkit-animation-name: bounceIn;\r\n animation-name: bounceIn;\r\n}\r\n\r\n@-webkit-keyframes bounceInDown {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n 0% {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -3000px, 0);\r\n transform: translate3d(0, -3000px, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 25px, 0);\r\n transform: translate3d(0, 25px, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(0, -10px, 0);\r\n transform: translate3d(0, -10px, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(0, 5px, 0);\r\n transform: translate3d(0, 5px, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceInDown {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n 0% {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -3000px, 0);\r\n transform: translate3d(0, -3000px, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 25px, 0);\r\n transform: translate3d(0, 25px, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(0, -10px, 0);\r\n transform: translate3d(0, -10px, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(0, 5px, 0);\r\n transform: translate3d(0, 5px, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.bounceInDown {\r\n -webkit-animation-name: bounceInDown;\r\n animation-name: bounceInDown;\r\n}\r\n\r\n@-webkit-keyframes bounceInLeft {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n 0% {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-3000px, 0, 0);\r\n transform: translate3d(-3000px, 0, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(25px, 0, 0);\r\n transform: translate3d(25px, 0, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(-10px, 0, 0);\r\n transform: translate3d(-10px, 0, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(5px, 0, 0);\r\n transform: translate3d(5px, 0, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceInLeft {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n 0% {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-3000px, 0, 0);\r\n transform: translate3d(-3000px, 0, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(25px, 0, 0);\r\n transform: translate3d(25px, 0, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(-10px, 0, 0);\r\n transform: translate3d(-10px, 0, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(5px, 0, 0);\r\n transform: translate3d(5px, 0, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.bounceInLeft {\r\n -webkit-animation-name: bounceInLeft;\r\n animation-name: bounceInLeft;\r\n}\r\n\r\n@-webkit-keyframes bounceInRight {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(3000px, 0, 0);\r\n transform: translate3d(3000px, 0, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(-25px, 0, 0);\r\n transform: translate3d(-25px, 0, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(10px, 0, 0);\r\n transform: translate3d(10px, 0, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(-5px, 0, 0);\r\n transform: translate3d(-5px, 0, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceInRight {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(3000px, 0, 0);\r\n transform: translate3d(3000px, 0, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(-25px, 0, 0);\r\n transform: translate3d(-25px, 0, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(10px, 0, 0);\r\n transform: translate3d(10px, 0, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(-5px, 0, 0);\r\n transform: translate3d(-5px, 0, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.bounceInRight {\r\n -webkit-animation-name: bounceInRight;\r\n animation-name: bounceInRight;\r\n}\r\n\r\n@-webkit-keyframes bounceInUp {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 3000px, 0);\r\n transform: translate3d(0, 3000px, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, -20px, 0);\r\n transform: translate3d(0, -20px, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(0, 10px, 0);\r\n transform: translate3d(0, 10px, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(0, -5px, 0);\r\n transform: translate3d(0, -5px, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceInUp {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 3000px, 0);\r\n transform: translate3d(0, 3000px, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, -20px, 0);\r\n transform: translate3d(0, -20px, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(0, 10px, 0);\r\n transform: translate3d(0, 10px, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(0, -5px, 0);\r\n transform: translate3d(0, -5px, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.bounceInUp {\r\n -webkit-animation-name: bounceInUp;\r\n animation-name: bounceInUp;\r\n}\r\n\r\n@-webkit-keyframes bounceOut {\r\n 20% {\r\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\r\n transform: scale3d(0.9, 0.9, 0.9);\r\n }\r\n\r\n 50%,\r\n 55% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\r\n transform: scale3d(1.1, 1.1, 1.1);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n}\r\n\r\n@keyframes bounceOut {\r\n 20% {\r\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\r\n transform: scale3d(0.9, 0.9, 0.9);\r\n }\r\n\r\n 50%,\r\n 55% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\r\n transform: scale3d(1.1, 1.1, 1.1);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n}\r\n\r\n.bounceOut {\r\n -webkit-animation-duration: 0.75s;\r\n animation-duration: 0.75s;\r\n -webkit-animation-name: bounceOut;\r\n animation-name: bounceOut;\r\n}\r\n\r\n@-webkit-keyframes bounceOutDown {\r\n 20% {\r\n -webkit-transform: translate3d(0, 10px, 0);\r\n transform: translate3d(0, 10px, 0);\r\n }\r\n\r\n 40%,\r\n 45% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, -20px, 0);\r\n transform: translate3d(0, -20px, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 2000px, 0);\r\n transform: translate3d(0, 2000px, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceOutDown {\r\n 20% {\r\n -webkit-transform: translate3d(0, 10px, 0);\r\n transform: translate3d(0, 10px, 0);\r\n }\r\n\r\n 40%,\r\n 45% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, -20px, 0);\r\n transform: translate3d(0, -20px, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 2000px, 0);\r\n transform: translate3d(0, 2000px, 0);\r\n }\r\n}\r\n\r\n.bounceOutDown {\r\n -webkit-animation-name: bounceOutDown;\r\n animation-name: bounceOutDown;\r\n}\r\n\r\n@-webkit-keyframes bounceOutLeft {\r\n 20% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(20px, 0, 0);\r\n transform: translate3d(20px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-2000px, 0, 0);\r\n transform: translate3d(-2000px, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceOutLeft {\r\n 20% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(20px, 0, 0);\r\n transform: translate3d(20px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-2000px, 0, 0);\r\n transform: translate3d(-2000px, 0, 0);\r\n }\r\n}\r\n\r\n.bounceOutLeft {\r\n -webkit-animation-name: bounceOutLeft;\r\n animation-name: bounceOutLeft;\r\n}\r\n\r\n@-webkit-keyframes bounceOutRight {\r\n 20% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(-20px, 0, 0);\r\n transform: translate3d(-20px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(2000px, 0, 0);\r\n transform: translate3d(2000px, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceOutRight {\r\n 20% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(-20px, 0, 0);\r\n transform: translate3d(-20px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(2000px, 0, 0);\r\n transform: translate3d(2000px, 0, 0);\r\n }\r\n}\r\n\r\n.bounceOutRight {\r\n -webkit-animation-name: bounceOutRight;\r\n animation-name: bounceOutRight;\r\n}\r\n\r\n@-webkit-keyframes bounceOutUp {\r\n 20% {\r\n -webkit-transform: translate3d(0, -10px, 0);\r\n transform: translate3d(0, -10px, 0);\r\n }\r\n\r\n 40%,\r\n 45% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 20px, 0);\r\n transform: translate3d(0, 20px, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -2000px, 0);\r\n transform: translate3d(0, -2000px, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceOutUp {\r\n 20% {\r\n -webkit-transform: translate3d(0, -10px, 0);\r\n transform: translate3d(0, -10px, 0);\r\n }\r\n\r\n 40%,\r\n 45% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 20px, 0);\r\n transform: translate3d(0, 20px, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -2000px, 0);\r\n transform: translate3d(0, -2000px, 0);\r\n }\r\n}\r\n\r\n.bounceOutUp {\r\n -webkit-animation-name: bounceOutUp;\r\n animation-name: bounceOutUp;\r\n}\r\n\r\n@-webkit-keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.fadeIn {\r\n -webkit-animation-name: fadeIn;\r\n animation-name: fadeIn;\r\n}\r\n\r\n@-webkit-keyframes fadeInDown {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInDown {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInDown {\r\n -webkit-animation-name: fadeInDown;\r\n animation-name: fadeInDown;\r\n}\r\n\r\n@-webkit-keyframes fadeInDownBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -2000px, 0);\r\n transform: translate3d(0, -2000px, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInDownBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -2000px, 0);\r\n transform: translate3d(0, -2000px, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInDownBig {\r\n -webkit-animation-name: fadeInDownBig;\r\n animation-name: fadeInDownBig;\r\n}\r\n\r\n@-webkit-keyframes fadeInLeft {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInLeft {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInLeft {\r\n -webkit-animation-name: fadeInLeft;\r\n animation-name: fadeInLeft;\r\n}\r\n\r\n@-webkit-keyframes fadeInLeftBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-2000px, 0, 0);\r\n transform: translate3d(-2000px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInLeftBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-2000px, 0, 0);\r\n transform: translate3d(-2000px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInLeftBig {\r\n -webkit-animation-name: fadeInLeftBig;\r\n animation-name: fadeInLeftBig;\r\n}\r\n\r\n@-webkit-keyframes fadeInRight {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInRight {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInRight {\r\n -webkit-animation-name: fadeInRight;\r\n animation-name: fadeInRight;\r\n}\r\n\r\n@-webkit-keyframes fadeInRightBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(2000px, 0, 0);\r\n transform: translate3d(2000px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInRightBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(2000px, 0, 0);\r\n transform: translate3d(2000px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInRightBig {\r\n -webkit-animation-name: fadeInRightBig;\r\n animation-name: fadeInRightBig;\r\n}\r\n\r\n@-webkit-keyframes fadeInUp {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInUp {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInUp {\r\n -webkit-animation-name: fadeInUp;\r\n animation-name: fadeInUp;\r\n}\r\n\r\n@-webkit-keyframes fadeInUpBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 2000px, 0);\r\n transform: translate3d(0, 2000px, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInUpBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 2000px, 0);\r\n transform: translate3d(0, 2000px, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInUpBig {\r\n -webkit-animation-name: fadeInUpBig;\r\n animation-name: fadeInUpBig;\r\n}\r\n\r\n@-webkit-keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.fadeOut {\r\n -webkit-animation-name: fadeOut;\r\n animation-name: fadeOut;\r\n}\r\n\r\n@-webkit-keyframes fadeOutDown {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutDown {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n }\r\n}\r\n\r\n.fadeOutDown {\r\n -webkit-animation-name: fadeOutDown;\r\n animation-name: fadeOutDown;\r\n}\r\n\r\n@-webkit-keyframes fadeOutDownBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 2000px, 0);\r\n transform: translate3d(0, 2000px, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutDownBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 2000px, 0);\r\n transform: translate3d(0, 2000px, 0);\r\n }\r\n}\r\n\r\n.fadeOutDownBig {\r\n -webkit-animation-name: fadeOutDownBig;\r\n animation-name: fadeOutDownBig;\r\n}\r\n\r\n@-webkit-keyframes fadeOutLeft {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutLeft {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n }\r\n}\r\n\r\n.fadeOutLeft {\r\n -webkit-animation-name: fadeOutLeft;\r\n animation-name: fadeOutLeft;\r\n}\r\n\r\n@-webkit-keyframes fadeOutLeftBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-2000px, 0, 0);\r\n transform: translate3d(-2000px, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutLeftBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-2000px, 0, 0);\r\n transform: translate3d(-2000px, 0, 0);\r\n }\r\n}\r\n\r\n.fadeOutLeftBig {\r\n -webkit-animation-name: fadeOutLeftBig;\r\n animation-name: fadeOutLeftBig;\r\n}\r\n\r\n@-webkit-keyframes fadeOutRight {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutRight {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n }\r\n}\r\n\r\n.fadeOutRight {\r\n -webkit-animation-name: fadeOutRight;\r\n animation-name: fadeOutRight;\r\n}\r\n\r\n@-webkit-keyframes fadeOutRightBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(2000px, 0, 0);\r\n transform: translate3d(2000px, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutRightBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(2000px, 0, 0);\r\n transform: translate3d(2000px, 0, 0);\r\n }\r\n}\r\n\r\n.fadeOutRightBig {\r\n -webkit-animation-name: fadeOutRightBig;\r\n animation-name: fadeOutRightBig;\r\n}\r\n\r\n@-webkit-keyframes fadeOutUp {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutUp {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n }\r\n}\r\n\r\n.fadeOutUp {\r\n -webkit-animation-name: fadeOutUp;\r\n animation-name: fadeOutUp;\r\n}\r\n\r\n@-webkit-keyframes fadeOutUpBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -2000px, 0);\r\n transform: translate3d(0, -2000px, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutUpBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -2000px, 0);\r\n transform: translate3d(0, -2000px, 0);\r\n }\r\n}\r\n\r\n.fadeOutUpBig {\r\n -webkit-animation-name: fadeOutUpBig;\r\n animation-name: fadeOutUpBig;\r\n}\r\n\r\n@-webkit-keyframes flip {\r\n from {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\r\n -webkit-animation-timing-function: ease-out;\r\n animation-timing-function: ease-out;\r\n }\r\n\r\n 40% {\r\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\r\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\r\n -webkit-animation-timing-function: ease-out;\r\n animation-timing-function: ease-out;\r\n }\r\n\r\n 50% {\r\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\r\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\r\n transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n}\r\n\r\n@keyframes flip {\r\n from {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\r\n -webkit-animation-timing-function: ease-out;\r\n animation-timing-function: ease-out;\r\n }\r\n\r\n 40% {\r\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\r\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\r\n -webkit-animation-timing-function: ease-out;\r\n animation-timing-function: ease-out;\r\n }\r\n\r\n 50% {\r\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\r\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\r\n transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n}\r\n\r\n.animated.flip {\r\n -webkit-backface-visibility: visible;\r\n backface-visibility: visible;\r\n -webkit-animation-name: flip;\r\n animation-name: flip;\r\n}\r\n\r\n@-webkit-keyframes flipInX {\r\n from {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n opacity: 0;\r\n }\r\n\r\n 40% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n 60% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\r\n opacity: 1;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n}\r\n\r\n@keyframes flipInX {\r\n from {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n opacity: 0;\r\n }\r\n\r\n 40% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n 60% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\r\n opacity: 1;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n}\r\n\r\n.flipInX {\r\n -webkit-backface-visibility: visible !important;\r\n backface-visibility: visible !important;\r\n -webkit-animation-name: flipInX;\r\n animation-name: flipInX;\r\n}\r\n\r\n@-webkit-keyframes flipInY {\r\n from {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n opacity: 0;\r\n }\r\n\r\n 40% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n 60% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\r\n opacity: 1;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n}\r\n\r\n@keyframes flipInY {\r\n from {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n opacity: 0;\r\n }\r\n\r\n 40% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n 60% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\r\n opacity: 1;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n}\r\n\r\n.flipInY {\r\n -webkit-backface-visibility: visible !important;\r\n backface-visibility: visible !important;\r\n -webkit-animation-name: flipInY;\r\n animation-name: flipInY;\r\n}\r\n\r\n@-webkit-keyframes flipOutX {\r\n from {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes flipOutX {\r\n from {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.flipOutX {\r\n -webkit-animation-duration: 0.75s;\r\n animation-duration: 0.75s;\r\n -webkit-animation-name: flipOutX;\r\n animation-name: flipOutX;\r\n -webkit-backface-visibility: visible !important;\r\n backface-visibility: visible !important;\r\n}\r\n\r\n@-webkit-keyframes flipOutY {\r\n from {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes flipOutY {\r\n from {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.flipOutY {\r\n -webkit-animation-duration: 0.75s;\r\n animation-duration: 0.75s;\r\n -webkit-backface-visibility: visible !important;\r\n backface-visibility: visible !important;\r\n -webkit-animation-name: flipOutY;\r\n animation-name: flipOutY;\r\n}\r\n\r\n@-webkit-keyframes lightSpeedIn {\r\n from {\r\n -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\r\n transform: translate3d(100%, 0, 0) skewX(-30deg);\r\n opacity: 0;\r\n }\r\n\r\n 60% {\r\n -webkit-transform: skewX(20deg);\r\n transform: skewX(20deg);\r\n opacity: 1;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: skewX(-5deg);\r\n transform: skewX(-5deg);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes lightSpeedIn {\r\n from {\r\n -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\r\n transform: translate3d(100%, 0, 0) skewX(-30deg);\r\n opacity: 0;\r\n }\r\n\r\n 60% {\r\n -webkit-transform: skewX(20deg);\r\n transform: skewX(20deg);\r\n opacity: 1;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: skewX(-5deg);\r\n transform: skewX(-5deg);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.lightSpeedIn {\r\n -webkit-animation-name: lightSpeedIn;\r\n animation-name: lightSpeedIn;\r\n -webkit-animation-timing-function: ease-out;\r\n animation-timing-function: ease-out;\r\n}\r\n\r\n@-webkit-keyframes lightSpeedOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\r\n transform: translate3d(100%, 0, 0) skewX(30deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes lightSpeedOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\r\n transform: translate3d(100%, 0, 0) skewX(30deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.lightSpeedOut {\r\n -webkit-animation-name: lightSpeedOut;\r\n animation-name: lightSpeedOut;\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n}\r\n\r\n@-webkit-keyframes rotateIn {\r\n from {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n -webkit-transform: rotate3d(0, 0, 1, -200deg);\r\n transform: rotate3d(0, 0, 1, -200deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes rotateIn {\r\n from {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n -webkit-transform: rotate3d(0, 0, 1, -200deg);\r\n transform: rotate3d(0, 0, 1, -200deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.rotateIn {\r\n -webkit-animation-name: rotateIn;\r\n animation-name: rotateIn;\r\n}\r\n\r\n@-webkit-keyframes rotateInDownLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\r\n transform: rotate3d(0, 0, 1, -45deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes rotateInDownLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\r\n transform: rotate3d(0, 0, 1, -45deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.rotateInDownLeft {\r\n -webkit-animation-name: rotateInDownLeft;\r\n animation-name: rotateInDownLeft;\r\n}\r\n\r\n@-webkit-keyframes rotateInDownRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\r\n transform: rotate3d(0, 0, 1, 45deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes rotateInDownRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\r\n transform: rotate3d(0, 0, 1, 45deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.rotateInDownRight {\r\n -webkit-animation-name: rotateInDownRight;\r\n animation-name: rotateInDownRight;\r\n}\r\n\r\n@-webkit-keyframes rotateInUpLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\r\n transform: rotate3d(0, 0, 1, 45deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes rotateInUpLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\r\n transform: rotate3d(0, 0, 1, 45deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.rotateInUpLeft {\r\n -webkit-animation-name: rotateInUpLeft;\r\n animation-name: rotateInUpLeft;\r\n}\r\n\r\n@-webkit-keyframes rotateInUpRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -90deg);\r\n transform: rotate3d(0, 0, 1, -90deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes rotateInUpRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -90deg);\r\n transform: rotate3d(0, 0, 1, -90deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.rotateInUpRight {\r\n -webkit-animation-name: rotateInUpRight;\r\n animation-name: rotateInUpRight;\r\n}\r\n\r\n@-webkit-keyframes rotateOut {\r\n from {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n -webkit-transform: rotate3d(0, 0, 1, 200deg);\r\n transform: rotate3d(0, 0, 1, 200deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes rotateOut {\r\n from {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n -webkit-transform: rotate3d(0, 0, 1, 200deg);\r\n transform: rotate3d(0, 0, 1, 200deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.rotateOut {\r\n -webkit-animation-name: rotateOut;\r\n animation-name: rotateOut;\r\n}\r\n\r\n@-webkit-keyframes rotateOutDownLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\r\n transform: rotate3d(0, 0, 1, 45deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes rotateOutDownLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\r\n transform: rotate3d(0, 0, 1, 45deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.rotateOutDownLeft {\r\n -webkit-animation-name: rotateOutDownLeft;\r\n animation-name: rotateOutDownLeft;\r\n}\r\n\r\n@-webkit-keyframes rotateOutDownRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\r\n transform: rotate3d(0, 0, 1, -45deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes rotateOutDownRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\r\n transform: rotate3d(0, 0, 1, -45deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.rotateOutDownRight {\r\n -webkit-animation-name: rotateOutDownRight;\r\n animation-name: rotateOutDownRight;\r\n}\r\n\r\n@-webkit-keyframes rotateOutUpLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\r\n transform: rotate3d(0, 0, 1, -45deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes rotateOutUpLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\r\n transform: rotate3d(0, 0, 1, -45deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.rotateOutUpLeft {\r\n -webkit-animation-name: rotateOutUpLeft;\r\n animation-name: rotateOutUpLeft;\r\n}\r\n\r\n@-webkit-keyframes rotateOutUpRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 90deg);\r\n transform: rotate3d(0, 0, 1, 90deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes rotateOutUpRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 90deg);\r\n transform: rotate3d(0, 0, 1, 90deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.rotateOutUpRight {\r\n -webkit-animation-name: rotateOutUpRight;\r\n animation-name: rotateOutUpRight;\r\n}\r\n\r\n@-webkit-keyframes hinge {\r\n 0% {\r\n -webkit-transform-origin: top left;\r\n transform-origin: top left;\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n }\r\n\r\n 20%,\r\n 60% {\r\n -webkit-transform: rotate3d(0, 0, 1, 80deg);\r\n transform: rotate3d(0, 0, 1, 80deg);\r\n -webkit-transform-origin: top left;\r\n transform-origin: top left;\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n }\r\n\r\n 40%,\r\n 80% {\r\n -webkit-transform: rotate3d(0, 0, 1, 60deg);\r\n transform: rotate3d(0, 0, 1, 60deg);\r\n -webkit-transform-origin: top left;\r\n transform-origin: top left;\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 700px, 0);\r\n transform: translate3d(0, 700px, 0);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes hinge {\r\n 0% {\r\n -webkit-transform-origin: top left;\r\n transform-origin: top left;\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n }\r\n\r\n 20%,\r\n 60% {\r\n -webkit-transform: rotate3d(0, 0, 1, 80deg);\r\n transform: rotate3d(0, 0, 1, 80deg);\r\n -webkit-transform-origin: top left;\r\n transform-origin: top left;\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n }\r\n\r\n 40%,\r\n 80% {\r\n -webkit-transform: rotate3d(0, 0, 1, 60deg);\r\n transform: rotate3d(0, 0, 1, 60deg);\r\n -webkit-transform-origin: top left;\r\n transform-origin: top left;\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 700px, 0);\r\n transform: translate3d(0, 700px, 0);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.hinge {\r\n -webkit-animation-duration: 2s;\r\n animation-duration: 2s;\r\n -webkit-animation-name: hinge;\r\n animation-name: hinge;\r\n}\r\n\r\n@-webkit-keyframes jackInTheBox {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale(0.1) rotate(30deg);\r\n transform: scale(0.1) rotate(30deg);\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n }\r\n\r\n 50% {\r\n -webkit-transform: rotate(-10deg);\r\n transform: rotate(-10deg);\r\n }\r\n\r\n 70% {\r\n -webkit-transform: rotate(3deg);\r\n transform: rotate(3deg);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: scale(1);\r\n transform: scale(1);\r\n }\r\n}\r\n\r\n@keyframes jackInTheBox {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale(0.1) rotate(30deg);\r\n transform: scale(0.1) rotate(30deg);\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n }\r\n\r\n 50% {\r\n -webkit-transform: rotate(-10deg);\r\n transform: rotate(-10deg);\r\n }\r\n\r\n 70% {\r\n -webkit-transform: rotate(3deg);\r\n transform: rotate(3deg);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: scale(1);\r\n transform: scale(1);\r\n }\r\n}\r\n\r\n.jackInTheBox {\r\n -webkit-animation-name: jackInTheBox;\r\n animation-name: jackInTheBox;\r\n}\r\n\r\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\r\n\r\n@-webkit-keyframes rollIn {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\r\n transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes rollIn {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\r\n transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.rollIn {\r\n -webkit-animation-name: rollIn;\r\n animation-name: rollIn;\r\n}\r\n\r\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\r\n\r\n@-webkit-keyframes rollOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\r\n transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\r\n }\r\n}\r\n\r\n@keyframes rollOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\r\n transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\r\n }\r\n}\r\n\r\n.rollOut {\r\n -webkit-animation-name: rollOut;\r\n animation-name: rollOut;\r\n}\r\n\r\n@-webkit-keyframes zoomIn {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n\r\n 50% {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes zoomIn {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n\r\n 50% {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.zoomIn {\r\n -webkit-animation-name: zoomIn;\r\n animation-name: zoomIn;\r\n}\r\n\r\n@-webkit-keyframes zoomInDown {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n@keyframes zoomInDown {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n.zoomInDown {\r\n -webkit-animation-name: zoomInDown;\r\n animation-name: zoomInDown;\r\n}\r\n\r\n@-webkit-keyframes zoomInLeft {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n@keyframes zoomInLeft {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n.zoomInLeft {\r\n -webkit-animation-name: zoomInLeft;\r\n animation-name: zoomInLeft;\r\n}\r\n\r\n@-webkit-keyframes zoomInRight {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n@keyframes zoomInRight {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n.zoomInRight {\r\n -webkit-animation-name: zoomInRight;\r\n animation-name: zoomInRight;\r\n}\r\n\r\n@-webkit-keyframes zoomInUp {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n@keyframes zoomInUp {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n.zoomInUp {\r\n -webkit-animation-name: zoomInUp;\r\n animation-name: zoomInUp;\r\n}\r\n\r\n@-webkit-keyframes zoomOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n 50% {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes zoomOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n 50% {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.zoomOut {\r\n -webkit-animation-name: zoomOut;\r\n animation-name: zoomOut;\r\n}\r\n\r\n@-webkit-keyframes zoomOutDown {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n@keyframes zoomOutDown {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n.zoomOutDown {\r\n -webkit-animation-name: zoomOutDown;\r\n animation-name: zoomOutDown;\r\n}\r\n\r\n@-webkit-keyframes zoomOutLeft {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\r\n transform: scale(0.1) translate3d(-2000px, 0, 0);\r\n -webkit-transform-origin: left center;\r\n transform-origin: left center;\r\n }\r\n}\r\n\r\n@keyframes zoomOutLeft {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\r\n transform: scale(0.1) translate3d(-2000px, 0, 0);\r\n -webkit-transform-origin: left center;\r\n transform-origin: left center;\r\n }\r\n}\r\n\r\n.zoomOutLeft {\r\n -webkit-animation-name: zoomOutLeft;\r\n animation-name: zoomOutLeft;\r\n}\r\n\r\n@-webkit-keyframes zoomOutRight {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\r\n transform: scale(0.1) translate3d(2000px, 0, 0);\r\n -webkit-transform-origin: right center;\r\n transform-origin: right center;\r\n }\r\n}\r\n\r\n@keyframes zoomOutRight {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\r\n transform: scale(0.1) translate3d(2000px, 0, 0);\r\n -webkit-transform-origin: right center;\r\n transform-origin: right center;\r\n }\r\n}\r\n\r\n.zoomOutRight {\r\n -webkit-animation-name: zoomOutRight;\r\n animation-name: zoomOutRight;\r\n}\r\n\r\n@-webkit-keyframes zoomOutUp {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n@keyframes zoomOutUp {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n.zoomOutUp {\r\n -webkit-animation-name: zoomOutUp;\r\n animation-name: zoomOutUp;\r\n}\r\n\r\n@-webkit-keyframes slideInDown {\r\n from {\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes slideInDown {\r\n from {\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.slideInDown {\r\n -webkit-animation-name: slideInDown;\r\n animation-name: slideInDown;\r\n}\r\n\r\n@-webkit-keyframes slideInLeft {\r\n from {\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes slideInLeft {\r\n from {\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.slideInLeft {\r\n -webkit-animation-name: slideInLeft;\r\n animation-name: slideInLeft;\r\n}\r\n\r\n@-webkit-keyframes slideInRight {\r\n from {\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes slideInRight {\r\n from {\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.slideInRight {\r\n -webkit-animation-name: slideInRight;\r\n animation-name: slideInRight;\r\n}\r\n\r\n@-webkit-keyframes slideInUp {\r\n from {\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes slideInUp {\r\n from {\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.slideInUp {\r\n -webkit-animation-name: slideInUp;\r\n animation-name: slideInUp;\r\n}\r\n\r\n@-webkit-keyframes slideOutDown {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n }\r\n}\r\n\r\n@keyframes slideOutDown {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n }\r\n}\r\n\r\n.slideOutDown {\r\n -webkit-animation-name: slideOutDown;\r\n animation-name: slideOutDown;\r\n}\r\n\r\n@-webkit-keyframes slideOutLeft {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes slideOutLeft {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n }\r\n}\r\n\r\n.slideOutLeft {\r\n -webkit-animation-name: slideOutLeft;\r\n animation-name: slideOutLeft;\r\n}\r\n\r\n@-webkit-keyframes slideOutRight {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes slideOutRight {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n }\r\n}\r\n\r\n.slideOutRight {\r\n -webkit-animation-name: slideOutRight;\r\n animation-name: slideOutRight;\r\n}\r\n\r\n@-webkit-keyframes slideOutUp {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n }\r\n}\r\n\r\n@keyframes slideOutUp {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n }\r\n}\r\n\r\n.slideOutUp {\r\n -webkit-animation-name: slideOutUp;\r\n animation-name: slideOutUp;\r\n}\r\n","body {\r\n font-family: 'Open Sans', sans-serif;\r\n}\r\n\r\n.main_display {\r\n text-transform: uppercase;\r\n}\r\n\r\n\r\n\r\n.parallax-window {\r\n min-height: 100vh;\r\n background-color: transparent;\r\n text-align: center;\r\n /* background-image: url('../image/main_picture.jpg'); */\r\n background-size: cover;\r\n background-repeat: no-repeat;\r\n background-position: center center;\r\n}\r\n\r\nsection {\r\n margin-bottom: 15px;\r\n}\r\n\r\nimg {\r\n max-width: 100%;\r\n}\r\n\r\nh2 {\r\n margin-bottom: 30px;\r\n} \r\n","header.main_display {\n margin-bottom: 10px;\n}\nheader.main_display .nav-menu {\n position: fixed;\n z-index: 50;\n right: 0;\n top: 0;\n transition: background-color 1s;\n width: 100%;\n}\nheader.main_display .nav-menu.show {\n height: 100%;\n background-color: rgba(0, 0, 0, 0.8);\n}\nheader.main_display .nav-menu button {\n background-color: #343a40;\n margin-left: auto;\n margin-right: 1rem;\n margin-top: 1rem;\n}\nheader.main_display .nav-menu button .lines {\n width: 30px;\n height: 30px;\n padding: 3px 0;\n justify-content: space-between;\n align-items: center;\n}\nheader.main_display .nav-menu button .lines .line {\n width: 30px;\n height: 2px;\n background-color: #9A9DA0;\n transition: opacity 0.5s, -webkit-transform 0.5s;\n transition: opacity .5s, -webkit-transform .5s;\n transition: transform .5s, opacity .5s;\n transition: transform .5s, opacity .5s, -webkit-transform .5s;\n transition: transform 0.5s, opacity 0.5s, -webkit-transform 0.5s;\n}\nheader.main_display .nav-menu button .lines .line-first.x {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n -webkit-transform: translateY(11px) rotate(45deg);\n transform: translateY(11px) rotate(45deg);\n}\nheader.main_display .nav-menu button .lines .line-second.x {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n}\nheader.main_display .nav-menu button .lines .line-third.x {\n -webkit-transform: translateY(-11px);\n transform: translateY(-11px);\n opacity: 0;\n}\nheader.main_display .nav-menu .navbar ul {\n position: relative;\n}\nheader.main_display .nav-menu .navbar ul li {\n transition: all .3s;\n}\nheader.main_display .nav-menu .navbar ul li a {\n color: white;\n display: block;\n text-transform: uppercase;\n font-size: 1rem;\n letter-spacing: 5px;\n position: relative;\n height: 60px;\n outline: none;\n transition: color .5s;\n}\nheader.main_display .nav-menu .navbar ul li:hover {\n background-color: rgba(0, 0, 0, 0.3);\n}\nheader.main_display .nav-menu .navbar ul li:hover a {\n color: #f13a19;\n /* @redIconsColor; */\n}\nheader.main_display .nav-menu .navbar ul li.background {\n width: 200px;\n margin: auto;\n}\nheader.main_display p {\n letter-spacing: 5px;\n font-weight: bold;\n font-size: 15px;\n}\nheader.main_display p.logo-line {\n -webkit-transform: translateX(-2rem);\n transform: translateX(-2rem);\n}\nheader.main_display p img {\n display: inline-block;\n height: 5.5rem;\n width: auto;\n}\nheader.main_display .middle {\n max-width: 80%;\n margin: 0 auto;\n background-color: rgba(255, 255, 255, 0.6);\n}\nheader.main_display .middle h1 {\n font-size: 1.8rem;\n font-weight: 600;\n color: #072704;\n}\nheader.main_display .middle .skills {\n font-size: 1rem;\n}\nheader.main_display .empty {\n height: 10rem;\n}\nmain {\n padding: 15px;\n}\nmain .about_me {\n margin-bottom: 100px;\n}\nmain .about_me h4 {\n color: #072704;\n margin-bottom: 25px;\n}\nmain .about_me .header {\n text-align: center;\n}\nmain .about_me .header div {\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nmain .about_me .header .underline {\n line-height: 3rem;\n border-bottom: 2px solid #000000;\n width: 60%;\n margin: auto;\n padding: 12px;\n}\nmain .about_me div {\n color: #222;\n}\nmain .about_me div.description .article .skills {\n margin-bottom: -23px;\n}\nmain .about_me div.description .article .skills span {\n margin: 0 3px 0 2px ;\n font-size: 6px;\n}\nmain .about_me div.description .article .skills span i {\n -webkit-transform: translateY(-4px);\n transform: translateY(-4px);\n}\nmain .about_me div .photo .wrapper_photo {\n border-radius: 50%;\n border: 1px solid black;\n overflow: hidden;\n max-height: 300px;\n max-width: 300px;\n}\nmain .about_me div .personal span {\n margin-right: 0.6em;\n}\nmain .about_me div .personal div {\n margin-bottom: 10px;\n}\nmain .about_me div .personal div.name {\n margin-bottom: 15px;\n color: #555;\n letter-spacing: 2px;\n font-size: 1.2em;\n}\nmain .about_me div .personal div.skype span {\n color: #00AFF0;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.skype span i {\n -webkit-transform: translateY(2px);\n transform: translateY(2px);\n}\nmain .about_me div .personal div.e-mail span {\n color: #00AFF0;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.e-mail span i {\n -webkit-transform: translateY(2px);\n transform: translateY(2px);\n}\nmain .about_me div .personal div.my_site a {\n color: inherit;\n text-decoration: underline;\n}\nmain .about_me div .personal div.my_site span.html {\n color: #FF6347;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.my_site span.html i {\n -webkit-transform: translateY(2px);\n transform: translateY(2px);\n}\nmain .about_me div .personal div.my_site span.hand {\n color: #00AFF0;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.my_site span.hand i {\n -webkit-transform: translate(-104px, 21px);\n transform: translate(-104px, 21px);\n}\nmain .resume {\n margin-bottom: 150px;\n}\nmain .resume .header {\n text-align: center;\n}\nmain .resume .header div {\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nmain .resume .header div.education {\n text-align: justify;\n}\nmain .resume .header .underline {\n line-height: 3rem;\n border-bottom: 2px solid #000000;\n width: 60%;\n margin: auto;\n padding: 12px;\n}\nmain .resume h2 {\n text-align: center;\n}\nmain .resume .subheader {\n text-align: center;\n font-size: 14px;\n display: inline-block;\n background-color: #FF6347;\n color: white;\n font-weight: 600;\n font-style: italic;\n padding: 0 15px;\n margin: 3rem 0;\n}\nmain .resume .ico {\n text-align: center;\n margin: 25px 0;\n}\nmain .resume .ico i {\n color: #00AFF0;\n}\nmain .portfolio {\n background-color: #222;\n padding-top: 50px;\n}\nmain .portfolio .last-card {\n margin-bottom: 8rem;\n}\nmain .portfolio .card {\n position: relative;\n overflow: hidden;\n color: white;\n background-color: rgba(0, 0, 0, 0.8);\n text-align: center;\n box-shadow: 0 0 0 rgba(0, 0, 0, 0);\n transition: box-shadow 0.3s;\n}\nmain .portfolio .card .card-body {\n position: absolute;\n background-color: rgba(0, 0, 0, 0.6);\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n opacity: 1;\n transition: opacity .3s;\n}\nmain .portfolio .card .card-body .card-title {\n text-transform: uppercase;\n font-size: 1rem;\n margin-bottom: 1rem;\n color: #FF6347;\n}\nmain .portfolio .card .card-body .wrapper {\n transition: -webkit-transform 0.3s;\n transition: -webkit-transform .3s;\n transition: transform .3s;\n transition: transform .3s, -webkit-transform .3s;\n transition: transform 0.3s, -webkit-transform 0.3s;\n}\nmain .portfolio .card .card-body-2 {\n position: absolute;\n justify-content: center;\n align-items: center;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n}\nmain .portfolio .card .card-body-2 .card-look {\n display: inline-block;\n opacity: 0;\n color: white;\n -webkit-transform: translateY(-100px);\n transform: translateY(-100px);\n transition: opacity 0.3s, color 0.3s, -webkit-transform 0.3s;\n transition: opacity .3s, color .3s, -webkit-transform .3s;\n transition: opacity .3s, color .3s, transform .3s;\n transition: opacity .3s, color .3s, transform .3s, -webkit-transform .3s;\n transition: opacity 0.3s, color 0.3s, transform 0.3s, -webkit-transform 0.3s;\n border: 3px solid #FF6347;\n padding: 5px 20px;\n}\nmain .portfolio .card .card-img-top {\n opacity: .7;\n -webkit-transform: scale(1.2, 1.2);\n transform: scale(1.2, 1.2);\n transition: -webkit-transform 0.3s;\n transition: -webkit-transform .3s;\n transition: transform .3s;\n transition: transform .3s, -webkit-transform .3s;\n transition: transform 0.3s, -webkit-transform 0.3s;\n}\nmain .portfolio .card:hover {\n cursor: pointer;\n box-shadow: 0 0 30px rgba(0, 0, 0, 0.9);\n}\nmain .portfolio .card:hover .card-body {\n opacity: 0;\n}\nmain .portfolio .card:hover .card-body .wrapper {\n -webkit-transform: translateY(100px);\n transform: translateY(100px);\n}\nmain .portfolio .card:hover .card-img-top {\n -webkit-transform: scale(1, 1);\n transform: scale(1, 1);\n}\nmain .portfolio .card:hover .card-look {\n opacity: 1;\n color: white;\n -webkit-transform: translateY(0);\n transform: translateY(0);\n}\nmain .portfolio img {\n width: 100%;\n height: auto;\n}\nmain .portfolio .header {\n text-align: center;\n color: white;\n}\nmain .portfolio .header h2 {\n padding: 5px 25px;\n margin-left: auto;\n margin-right: auto;\n}\nmain .portfolio .header div {\n max-width: 85%;\n margin: auto;\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nfooter .contacts .header {\n text-align: center;\n}\nfooter .contacts .header div {\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nfooter .contacts .header .underline {\n line-height: 3rem;\n border-bottom: 2px solid #000000;\n width: 60%;\n margin: auto;\n padding: 12px;\n}\nfooter .contacts .item {\n text-align: center;\n margin-bottom: 2rem;\n}\nfooter .contacts .item .ico {\n margin-bottom: 1rem;\n}\nfooter .contacts .item .ico span i {\n color: #00AFF0;\n}\nfooter .copyright {\n background-color: #222;\n color: white;\n margin-bottom: 0;\n}\nfooter .copyright i {\n color: #FF6347;\n cursor: pointer;\n}\n@media only screen and (max-width: 992px) {\n .description,\n .photo,\n .personal {\n margin-bottom: 40px;\n }\n}\n@media only screen and (max-width: 576px) {\n h2 {\n box-shadow: 0 11px 0 white, 0 20px 20px black;\n }\n .portfolio h2 {\n box-shadow: 0 11px 0 #222, 0 20px 20px white;\n }\n}\n@media only screen and (max-width: 480px) {\n h2 {\n margin-bottom: 100px;\n }\n .personal {\n margin-bottom: 15px;\n }\n}\n/* #1ee30b; */\nh3 {\n text-align: center;\n}\n",".middle.animated {\n -webkit-animation-duration: 1.5s;\n animation-duration: 1.5s;\n}\n.animated.fadeInRight,\n.animated.fadeInLeft {\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n}\n.navbar-nav .nav-item.item-4 {\n -webkit-animation-duration: 1.6s;\n animation-duration: 1.6s;\n}\n.navbar-nav .nav-item.item-3 {\n -webkit-animation-duration: 1.2s;\n animation-duration: 1.2s;\n}\n.navbar-nav .nav-item.item-2 {\n -webkit-animation-duration: 0.8s;\n animation-duration: 0.8s;\n}\n.navbar-nav .nav-item.item-1 {\n -webkit-animation-duration: 0.4s;\n animation-duration: 0.4s;\n}\n","\r\n/* Large Devices, Wide Screens */\r\n@media only screen and (max-width : 1200px) {\r\n main .about_me div .personal div.my_site span.hand i {\r\n transform: translate(183px, -11px); \r\n }\r\n\r\n header.main_display h1 {\r\n font-size: 1.5rem;\r\n }\r\n\r\n\r\n header.main_display,\r\n section.about_me{\r\n margin-bottom: 35px; \r\n }\r\n\r\n header p.web_html, \r\n header p.skills {\r\n font-size: 14px ! important;\r\n }\r\n \r\n header p.web_html {\r\n margin-bottom: 9px;\r\n }\r\n}\r\n\r\n\r\n@media only screen and (max-width : 954px) {\r\n header.main_display .middle .skills{\r\n display: none;\r\n }\r\n}\r\n\r\n\r\n\r\n/* Medium Devices, Desktops */\r\n@media only screen and (max-width : 992px) {\r\n \r\n main .about_me div .personal div.my_site span.hand i {\r\n transform: translate(-104px, 19px);\r\n }\r\n\r\n footer .contacts .header h1 {\r\n margin-bottom: 70px;\r\n }\r\n \r\n main .portfolio .card .card-body .card-title {\r\n font-size: 0.8rem;\r\n }\r\n}\r\n\r\n/* Small Devices, Tablets */\r\n@media only screen and (max-width : 768px) {\r\n main .portfolio .card .card-body .card-title {\r\n font-size: 0.7rem;\r\n }\r\n\r\n main .portfolio {\r\n padding-top: 50px;\r\n }\r\n\r\n main .portfolio .header div {\r\n font-size: 1rem;\r\n }\r\n\r\n main .portfolio .header h1 {\r\n margin-bottom: 47px;\r\n }\r\n\r\n}\r\n\r\n\r\n/* Small Devices, Tablets */\r\n@media only screen and (max-width : 576px) {\r\n #portfolio__ .row.mb-sm-5 {\r\n padding-left: 60px;\r\n padding-right: 60px;\r\n }\r\n\r\n main .portfolio .last-card {\r\n margin-bottom: 4rem;\r\n }\r\n \r\n}\r\n\r\n@media only screen and (max-width : 544px) {\r\n main .portfolio .header div {\r\n font-size: 0.8rem;\r\n } \r\n}\r\n\r\n\r\n/* Extra Small Devices, Phones */\r\n@media only screen and (max-width : 480px) {\r\n header.main_display p img {\r\n transform: translateX(-106px) !important;\r\n }\r\n\r\n h1{\r\n font-size: 1.7rem !important;\r\n }\r\n}\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/src/image/additional_display.jpg b/src/image/additional_display.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8b844279864746a5203fd6c8bca6dc5372112fc GIT binary patch literal 50813 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 { + 1 $('.navbar-toggler').click(); -}) \ No newline at end of file +}) + + +// При клике добавляем фон за счёт li.background устанавливаем +// ему высоту списка и сдвигаем вверх на неё же. затем сдвигаем неню вниз на половину высоты для центрирования +$('button.navbar-toggler').click(function (event) { + let nav_height = $('ul.navbar-nav').height(); + $('.nav-menu li.background').height(nav_height); + console.log(nav_height); + + if ($(window).height() < 400) { + $('ul.navbar-nav').css({ + 'transform': `translateY(-60px)` + }) + } else if ($(window).height() > 750) { + $('ul.navbar-nav').css({ + 'transform': `translateY(${nav_height/2}px)` + }); + }; + + $('.nav-menu li.background').css({ + 'transform': `translateY(-${nav_height}px)`, + 'z-index': '-1', + 'backgroundColor': 'black' + }); +}); \ No newline at end of file diff --git a/src/less/header.less b/src/less/header.less index 3ca18e8..dad8c18 100644 --- a/src/less/header.less +++ b/src/less/header.less @@ -69,9 +69,12 @@ header.main_display { // height: 100%; ul { + position: relative; + li{ -webkit-transition: all .3s; transition: all .3s; + a { color: white; display: block; @@ -86,12 +89,19 @@ header.main_display { } &:hover { - background-color: rgba(255, 255, 255, 0.3); + background-color: rgba(0, 0, 0, 0.3); a{ - color: white; - text-decoration: underline; + color: rgb(241, 58, 25); /* @redIconsColor; */ + // text-decoration: underline; } } + + &.background { + + width: 200px; + margin: auto; + + } } } } diff --git a/src/template.html b/src/template.html index cf06c8f..9083c32 100644 --- a/src/template.html +++ b/src/template.html @@ -51,6 +51,7 @@ +
  • @@ -276,10 +277,11 @@
    Andrey-programmer.ru
    - Card image cap + + alt="Card image cap">
    -
    http://_______________
    +
    any my site

    This card has supporting...

    Last updated 3 mins ago @@ -291,10 +293,10 @@

    http://_______________
    - Card image cap + alt="Card image cap">
    -
    http://_______________
    +
    any my site

    This card has supporting...

    Last updated 3 mins ago @@ -310,10 +312,10 @@

    http://_______________
    - Card image cap + alt="Card image cap">
    -
    http://_______________
    +
    any my site

    This card has supporting...

    Last updated 3 mins ago @@ -325,10 +327,10 @@

    http://_______________
    - Card image cap + alt="Card image cap">
    -
    http://_______________
    +
    any my site

    This card has supporting...

    Last updated 3 mins ago @@ -340,10 +342,10 @@

    http://_______________
    - Card image cap + alt="Card image cap">
    -
    http://_______________
    +
    any my site

    This card has supporting...

    Last updated 3 mins ago @@ -359,10 +361,10 @@

    http://_______________
    - Card image cap + alt="Card image cap">
    -
    http://_______________
    +
    any my site

    This card has supporting...

    Last updated 3 mins ago @@ -374,10 +376,10 @@

    http://_______________
    - Card image cap + alt="Card image cap">
    -
    http://_______________
    +
    any my site

    This card has supporting...

    Last updated 3 mins ago @@ -389,10 +391,10 @@

    http://_______________
    - Card image cap + alt="Card image cap">
    -
    http://_______________
    +
    any my site

    This card has supporting...

    Last updated 3 mins ago From a00d71d4b5b5b0c610a56494febda9726d80a80c Mon Sep 17 00:00:00 2001 From: Andrey_programmer Date: Mon, 2 Jul 2018 15:52:59 +0300 Subject: [PATCH 03/17] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=8F=D0=BD=D0=B4=D0=B5=D0=BA=D1=81?= =?UTF-8?q?-=D0=BC=D0=B5=D1=82=D1=80=D0=B8=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...bfa9.js => bundle.c2d4166337729aa59d3a.js} | 4 +- ...map => bundle.c2d4166337729aa59d3a.js.map} | 2 +- dist/index.html | 10 +- dist/metrica.c2d4166337729aa59d3a.js | 802 ++++++++++++++++++ dist/metrica.c2d4166337729aa59d3a.js.map | 1 + src/js/yandex_metrica.js | 5 + src/less/main.less | 4 +- src/less/partails/params.less | 2 +- src/template.html | 6 +- webpack.config.js | 5 +- 10 files changed, 825 insertions(+), 16 deletions(-) rename dist/{bundle.99755c668d66e0f3bfa9.js => bundle.c2d4166337729aa59d3a.js} (99%) rename dist/{bundle.99755c668d66e0f3bfa9.js.map => bundle.c2d4166337729aa59d3a.js.map} (99%) create mode 100644 dist/metrica.c2d4166337729aa59d3a.js create mode 100644 dist/metrica.c2d4166337729aa59d3a.js.map create mode 100644 src/js/yandex_metrica.js diff --git a/dist/bundle.99755c668d66e0f3bfa9.js b/dist/bundle.c2d4166337729aa59d3a.js similarity index 99% rename from dist/bundle.99755c668d66e0f3bfa9.js rename to dist/bundle.c2d4166337729aa59d3a.js index 8905104..5ec1c76 100644 --- a/dist/bundle.99755c668d66e0f3bfa9.js +++ b/dist/bundle.c2d4166337729aa59d3a.js @@ -62,7 +62,7 @@ /******/ } /******/ /******/ var hotApplyOnUpdate = true; -/******/ var hotCurrentHash = "99755c668d66e0f3bfa9"; // eslint-disable-line no-unused-vars +/******/ var hotCurrentHash = "c2d4166337729aa59d3a"; // eslint-disable-line no-unused-vars /******/ var hotRequestTimeout = 10000; /******/ var hotCurrentModuleData = {}; /******/ var hotCurrentChildModule; // eslint-disable-line no-unused-vars @@ -12476,4 +12476,4 @@ if(true) { /***/ }) /******/ }); -//# sourceMappingURL=bundle.99755c668d66e0f3bfa9.js.map \ No newline at end of file +//# sourceMappingURL=bundle.c2d4166337729aa59d3a.js.map \ No newline at end of file diff --git a/dist/bundle.99755c668d66e0f3bfa9.js.map b/dist/bundle.c2d4166337729aa59d3a.js.map similarity index 99% rename from dist/bundle.99755c668d66e0f3bfa9.js.map rename to dist/bundle.c2d4166337729aa59d3a.js.map index 2311da6..f8a01af 100644 --- a/dist/bundle.99755c668d66e0f3bfa9.js.map +++ b/dist/bundle.c2d4166337729aa59d3a.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../node_modules/jquery/dist/jquery.js","webpack:///./css/animate.css?906c","webpack:///./css/media.css?af8b","webpack:///./css/style.css","webpack:///./less/animate.less?db43","webpack:///./less/style.less?9faf","webpack:///../node_modules/style-loader/lib/addStyles.js","webpack:///../node_modules/style-loader/lib/urls.js","webpack:///./css/animate.css?82d5","webpack:///./css/media.css?e29a","webpack:///./css/style.css?05f0","webpack:///./image/additional_display.jpg","webpack:///./image/andrey_programmer.ru.jpg","webpack:///./image/favicon.ico","webpack:///./image/logo.png","webpack:///./image/main_picture.jpg","webpack:///./image/my_photo.jpg","webpack:///./js/about_me.js","webpack:///./js/animation.js","webpack:///./js/contacts.js","webpack:///./js/index.js","webpack:///./js/main_display.js","webpack:///./js/media.js","webpack:///./js/nav-menu.js","webpack:///./js/parallax.min.js","webpack:///./js/portfolio.js","webpack:///./less/animate.less?b356","webpack:///./less/style.less?681e"],"names":["sizeDesctiption","window","matchMedia","matches","MaxHeight","items","$","find","each","console","log","height","addClass","data","scrollPos","scroll","st","scrollTop","not","document","offset","top","css","removeClass","hasClass","click","animate","attr","index","last","hrefs","has","vkFooter","mouseover","event","mouseout","location","assign","open","parallax","imageSrc","image","width","after","i","toggleClass","dblclick","preventDefault","stopPropagation","nav_height","t","e","s","o","h","refresh","render","extend","$element","is","r","position","toLowerCase","match","length","push","positionX","positionY","isNaN","parseInt","navigator","userAgent","iosFix","backgroundImage","backgroundSize","backgroundPosition","androidFix","$mirror","prependTo","mirrorContainer","a","n","$slider","visibility","zIndex","left","overflow","one","naturalHeight","naturalWidth","aspectRatio","isSetup","setup","sliders","isFresh","requestRender","src","complete","trigger","requestAnimationFrame","cancelAnimationFrame","Date","getTime","Math","max","setTimeout","clearTimeout","prototype","speed","bleed","overScrollFix","boxWidth","outerWidth","boxHeight","outerHeight","boxOffsetTop","boxOffsetLeft","boxOffsetBottom","winHeight","docHeight","min","imageWidth","imageHeight","offsetBaseTop","offsetLeft","scrollLeft","overScroll","mirrorTop","mirrorLeft","offsetTop","transform","maxWidth","winWidth","docWidth","isReady","isBusy","p","pageYOffset","l","on","configure","destroy","remove","splice","off","fn","Constructor","noConflict","jQuery"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA,cAAM;AACN;AACA;AACA,cAAM;AACN;AACA;AACA;AACA,eAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA,sDAA8C;AAC9C;AACA;AACA,oCAA4B;AAC5B,qCAA6B;AAC7B,yCAAiC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAA6B;AAC7B,qCAA6B;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAAqB,gBAAgB;AACrC;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,6BAAqB,gBAAgB;AACrC;AACA;AACA,aAAK;AACL;AACA;AACA,aAAK;AACL;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,aAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,aAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0BAAkB,8BAA8B;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA,eAAO;AACP;AACA;AACA;AACA;AACA,YAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAAmB,cAAc;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAgB,KAAK;AACrB;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA;AACA,wBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAc,4BAA4B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uBAAe,4BAA4B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,uBAAe,4BAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAiB,uCAAuC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAiB,uCAAuC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAiB,sBAAsB;AACvC;AACA;AACA;AACA,gBAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,kBAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAc,wCAAwC;AACtD;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,eAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,iBAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA;AACA,gBAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA,8CAAsC,uBAAuB;;;AAG7D;AACA;;;;;;;;;;;;AC1vBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,YAAY;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,YAAY;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,YAAY;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS;AAClB;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA,gBAAgB,IAAI;;AAEpB;AACA;;AAEA;;AAEA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS;;AAET;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ,6BAA6B;AAChD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,eAAe;;AAEf,SAAS;;AAET;AACA,QAAQ,iCAAiC;AACzC,QAAQ,oBAAoB;AAC5B,QAAQ,sCAAsC;AAC9C,QAAQ;AACR,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,gBAAgB,aAAa,EAAE;AAC/B;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,4DAA4D;;AAE5D;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;AACA;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gEAAgE;;AAEhE;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,iEAAiE,UAAU;AAC3E,sCAAsC,2BAA2B;AACjE;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,UAAU;AACpB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,cAAc;AACxB;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA,YAAY,uEAAuE;AACnF;AACA;AACA,YAAY,4BAA4B;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,2DAA2D;;AAE3D;AACA;AACA,oFAAoF;;AAEpF;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,QAAQ,SAAS;AACjB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iDAAiD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD,UAAU,wCAAwC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA,CAAC;;;;AAID;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,QAAQ,GAAG;AACX;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;;;AAIA;;AAEA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA,cAAc,SAAS;AACvB;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,0BAA0B,wBAAwB;;AAElD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA,0CAA0C;AAC1C,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;;;AAIA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,cAAc;AACxB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA,OAAO;AACP,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wCAAwC,sCAAsC;AAC9E,oCAAoC,uCAAuC;AAC3E,oCAAoC,sCAAsC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,OAAO;AACP;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC,qCAAqC;AACrC,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;;;;AAKA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,aAAa;AACpC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;;AAEA;;AAEA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE;AACF;;AAEA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB;AAClB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA,WAAW;;AAEX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA,oDAAoD;AACpD;;AAEA;AACA;;AAEA,cAAc,sBAAsB;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,+DAA+D;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,cAAc;;AAExB;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uCAAuC;AACjE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,uDAAuD;AAC9E;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC,cAAc;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,+BAA+B;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAuC,OAAO;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC,OAAO;AAC/C;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,SAAS,qCAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA,SAAS,8BAA8B;AACvC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAW;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+CAA+C,cAAc,WAAW;AACxE,mBAAmB,UAAU;AAC7B;AACA,sBAAsB,cAAc,sBAAsB,gBAAgB;AAC1E,gBAAgB,WAAW,YAAY;AACvC,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,+DAA+D;AAC3E;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;;AAEf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,iDAAiD,0BAA0B;AAC3E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,gBAAgB;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2BAA2B;AAC3B;AACA,qBAAqB;AACrB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;;AAEA,6CAA6C;AAC7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,gBAAgB;AACzB;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;AACF;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,cAAc;AAClC,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,SAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,cAAc;AACd,CAAC;AACD;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,mBAAmB;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA,iCAAiC;AACjC;AACA;;AAEA,IAAI;AACJ;;AAEA,IAAI;AACJ;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA;AACA,WAAW,SAAS;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;;AAGA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC;AACA;AACA;;AAEA;;AAEA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA,UAAU,KAAK;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qCAAqC;;AAEpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,KAAK;AACL;;AAEA,WAAW;AACX,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB,gDAAgD;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA,iBAAiB;AACjB,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC;;AAElC;AACA,sBAAsB;AACtB,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,mDAAmD;AACnD;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA,EAAE;AACF;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA,cAAc,sDAAsD;AACpE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA,cAAc,mCAAmC;AACjD,eAAe,6DAA6D;AAC5E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AAAA;AACF;;;;;AAKA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA,CAAC;;;;;;;;;;;;AC3nUD,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;;;;;;;;;;;AC1XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA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","file":"bundle.99755c668d66e0f3bfa9.js","sourcesContent":[" \tfunction hotDisposeChunk(chunkId) {\n \t\tdelete installedChunks[chunkId];\n \t}\n \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n \t\thotAddUpdateChunk(chunkId, moreModules);\n \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n \t} ;\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadUpdateChunk(chunkId) {\n \t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\tvar script = document.createElement(\"script\");\n \t\tscript.charset = \"utf-8\";\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n \t\t;\n \t\thead.appendChild(script);\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadManifest(requestTimeout) {\n \t\trequestTimeout = requestTimeout || 10000;\n \t\treturn new Promise(function(resolve, reject) {\n \t\t\tif (typeof XMLHttpRequest === \"undefined\")\n \t\t\t\treturn reject(new Error(\"No browser support\"));\n \t\t\ttry {\n \t\t\t\tvar request = new XMLHttpRequest();\n \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n \t\t\t\trequest.open(\"GET\", requestPath, true);\n \t\t\t\trequest.timeout = requestTimeout;\n \t\t\t\trequest.send(null);\n \t\t\t} catch (err) {\n \t\t\t\treturn reject(err);\n \t\t\t}\n \t\t\trequest.onreadystatechange = function() {\n \t\t\t\tif (request.readyState !== 4) return;\n \t\t\t\tif (request.status === 0) {\n \t\t\t\t\t// timeout\n \t\t\t\t\treject(\n \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n \t\t\t\t\t);\n \t\t\t\t} else if (request.status === 404) {\n \t\t\t\t\t// no update available\n \t\t\t\t\tresolve();\n \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n \t\t\t\t\t// other failure\n \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n \t\t\t\t} else {\n \t\t\t\t\t// success\n \t\t\t\t\ttry {\n \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n \t\t\t\t\t} catch (e) {\n \t\t\t\t\t\treject(e);\n \t\t\t\t\t\treturn;\n \t\t\t\t\t}\n \t\t\t\t\tresolve(update);\n \t\t\t\t}\n \t\t\t};\n \t\t});\n \t}\n\n \tvar hotApplyOnUpdate = true;\n \tvar hotCurrentHash = \"99755c668d66e0f3bfa9\"; // eslint-disable-line no-unused-vars\n \tvar hotRequestTimeout = 10000;\n \tvar hotCurrentModuleData = {};\n \tvar hotCurrentChildModule; // eslint-disable-line no-unused-vars\n \tvar hotCurrentParents = []; // eslint-disable-line no-unused-vars\n \tvar hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateRequire(moduleId) {\n \t\tvar me = installedModules[moduleId];\n \t\tif (!me) return __webpack_require__;\n \t\tvar fn = function(request) {\n \t\t\tif (me.hot.active) {\n \t\t\t\tif (installedModules[request]) {\n \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1)\n \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n \t\t\t\t} else {\n \t\t\t\t\thotCurrentParents = [moduleId];\n \t\t\t\t\thotCurrentChildModule = request;\n \t\t\t\t}\n \t\t\t\tif (me.children.indexOf(request) === -1) me.children.push(request);\n \t\t\t} else {\n \t\t\t\tconsole.warn(\n \t\t\t\t\t\"[HMR] unexpected require(\" +\n \t\t\t\t\t\trequest +\n \t\t\t\t\t\t\") from disposed module \" +\n \t\t\t\t\t\tmoduleId\n \t\t\t\t);\n \t\t\t\thotCurrentParents = [];\n \t\t\t}\n \t\t\treturn __webpack_require__(request);\n \t\t};\n \t\tvar ObjectFactory = function ObjectFactory(name) {\n \t\t\treturn {\n \t\t\t\tconfigurable: true,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: function() {\n \t\t\t\t\treturn __webpack_require__[name];\n \t\t\t\t},\n \t\t\t\tset: function(value) {\n \t\t\t\t\t__webpack_require__[name] = value;\n \t\t\t\t}\n \t\t\t};\n \t\t};\n \t\tfor (var name in __webpack_require__) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n \t\t\t\tname !== \"e\"\n \t\t\t) {\n \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n \t\t\t}\n \t\t}\n \t\tfn.e = function(chunkId) {\n \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n \t\t\thotChunksLoading++;\n \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n \t\t\t\tfinishChunkLoading();\n \t\t\t\tthrow err;\n \t\t\t});\n\n \t\t\tfunction finishChunkLoading() {\n \t\t\t\thotChunksLoading--;\n \t\t\t\tif (hotStatus === \"prepare\") {\n \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t\t\t}\n \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n \t\t\t\t\t\thotUpdateDownloaded();\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t};\n \t\treturn fn;\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateModule(moduleId) {\n \t\tvar hot = {\n \t\t\t// private stuff\n \t\t\t_acceptedDependencies: {},\n \t\t\t_declinedDependencies: {},\n \t\t\t_selfAccepted: false,\n \t\t\t_selfDeclined: false,\n \t\t\t_disposeHandlers: [],\n \t\t\t_main: hotCurrentChildModule !== moduleId,\n\n \t\t\t// Module API\n \t\t\tactive: true,\n \t\t\taccept: function(dep, callback) {\n \t\t\t\tif (typeof dep === \"undefined\") hot._selfAccepted = true;\n \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n \t\t\t},\n \t\t\tdecline: function(dep) {\n \t\t\t\tif (typeof dep === \"undefined\") hot._selfDeclined = true;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n \t\t\t\telse hot._declinedDependencies[dep] = true;\n \t\t\t},\n \t\t\tdispose: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\taddDisposeHandler: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\tremoveDisposeHandler: function(callback) {\n \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t// Management API\n \t\t\tcheck: hotCheck,\n \t\t\tapply: hotApply,\n \t\t\tstatus: function(l) {\n \t\t\t\tif (!l) return hotStatus;\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\taddStatusHandler: function(l) {\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\tremoveStatusHandler: function(l) {\n \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t//inherit from previous dispose call\n \t\t\tdata: hotCurrentModuleData[moduleId]\n \t\t};\n \t\thotCurrentChildModule = undefined;\n \t\treturn hot;\n \t}\n\n \tvar hotStatusHandlers = [];\n \tvar hotStatus = \"idle\";\n\n \tfunction hotSetStatus(newStatus) {\n \t\thotStatus = newStatus;\n \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n \t\t\thotStatusHandlers[i].call(null, newStatus);\n \t}\n\n \t// while downloading\n \tvar hotWaitingFiles = 0;\n \tvar hotChunksLoading = 0;\n \tvar hotWaitingFilesMap = {};\n \tvar hotRequestedFilesMap = {};\n \tvar hotAvailableFilesMap = {};\n \tvar hotDeferred;\n\n \t// The update info\n \tvar hotUpdate, hotUpdateNewHash;\n\n \tfunction toModuleId(id) {\n \t\tvar isNumber = +id + \"\" === id;\n \t\treturn isNumber ? +id : id;\n \t}\n\n \tfunction hotCheck(apply) {\n \t\tif (hotStatus !== \"idle\")\n \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n \t\thotApplyOnUpdate = apply;\n \t\thotSetStatus(\"check\");\n \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n \t\t\tif (!update) {\n \t\t\t\thotSetStatus(\"idle\");\n \t\t\t\treturn null;\n \t\t\t}\n \t\t\thotRequestedFilesMap = {};\n \t\t\thotWaitingFilesMap = {};\n \t\t\thotAvailableFilesMap = update.c;\n \t\t\thotUpdateNewHash = update.h;\n\n \t\t\thotSetStatus(\"prepare\");\n \t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\thotDeferred = {\n \t\t\t\t\tresolve: resolve,\n \t\t\t\t\treject: reject\n \t\t\t\t};\n \t\t\t});\n \t\t\thotUpdate = {};\n \t\t\tvar chunkId = \"bundle\";\n \t\t\t{\n \t\t\t\t// eslint-disable-line no-lone-blocks\n \t\t\t\t/*globals chunkId */\n \t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t}\n \t\t\tif (\n \t\t\t\thotStatus === \"prepare\" &&\n \t\t\t\thotChunksLoading === 0 &&\n \t\t\t\thotWaitingFiles === 0\n \t\t\t) {\n \t\t\t\thotUpdateDownloaded();\n \t\t\t}\n \t\t\treturn promise;\n \t\t});\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n \t\t\treturn;\n \t\thotRequestedFilesMap[chunkId] = false;\n \t\tfor (var moduleId in moreModules) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n \t\t\thotUpdateDownloaded();\n \t\t}\n \t}\n\n \tfunction hotEnsureUpdateChunk(chunkId) {\n \t\tif (!hotAvailableFilesMap[chunkId]) {\n \t\t\thotWaitingFilesMap[chunkId] = true;\n \t\t} else {\n \t\t\thotRequestedFilesMap[chunkId] = true;\n \t\t\thotWaitingFiles++;\n \t\t\thotDownloadUpdateChunk(chunkId);\n \t\t}\n \t}\n\n \tfunction hotUpdateDownloaded() {\n \t\thotSetStatus(\"ready\");\n \t\tvar deferred = hotDeferred;\n \t\thotDeferred = null;\n \t\tif (!deferred) return;\n \t\tif (hotApplyOnUpdate) {\n \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n \t\t\t// avoid triggering uncaught exception warning in Chrome.\n \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n \t\t\tPromise.resolve()\n \t\t\t\t.then(function() {\n \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n \t\t\t\t})\n \t\t\t\t.then(\n \t\t\t\t\tfunction(result) {\n \t\t\t\t\t\tdeferred.resolve(result);\n \t\t\t\t\t},\n \t\t\t\t\tfunction(err) {\n \t\t\t\t\t\tdeferred.reject(err);\n \t\t\t\t\t}\n \t\t\t\t);\n \t\t} else {\n \t\t\tvar outdatedModules = [];\n \t\t\tfor (var id in hotUpdate) {\n \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\t\toutdatedModules.push(toModuleId(id));\n \t\t\t\t}\n \t\t\t}\n \t\t\tdeferred.resolve(outdatedModules);\n \t\t}\n \t}\n\n \tfunction hotApply(options) {\n \t\tif (hotStatus !== \"ready\")\n \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n \t\toptions = options || {};\n\n \t\tvar cb;\n \t\tvar i;\n \t\tvar j;\n \t\tvar module;\n \t\tvar moduleId;\n\n \t\tfunction getAffectedStuff(updateModuleId) {\n \t\t\tvar outdatedModules = [updateModuleId];\n \t\t\tvar outdatedDependencies = {};\n\n \t\t\tvar queue = outdatedModules.slice().map(function(id) {\n \t\t\t\treturn {\n \t\t\t\t\tchain: [id],\n \t\t\t\t\tid: id\n \t\t\t\t};\n \t\t\t});\n \t\t\twhile (queue.length > 0) {\n \t\t\t\tvar queueItem = queue.pop();\n \t\t\t\tvar moduleId = queueItem.id;\n \t\t\t\tvar chain = queueItem.chain;\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (!module || module.hot._selfAccepted) continue;\n \t\t\t\tif (module.hot._selfDeclined) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"self-declined\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tif (module.hot._main) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"unaccepted\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n \t\t\t\t\tvar parentId = module.parents[i];\n \t\t\t\t\tvar parent = installedModules[parentId];\n \t\t\t\t\tif (!parent) continue;\n \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n \t\t\t\t\t\treturn {\n \t\t\t\t\t\t\ttype: \"declined\",\n \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\tparentId: parentId\n \t\t\t\t\t\t};\n \t\t\t\t\t}\n \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n \t\t\t\t\t\tcontinue;\n \t\t\t\t\t}\n \t\t\t\t\tdelete outdatedDependencies[parentId];\n \t\t\t\t\toutdatedModules.push(parentId);\n \t\t\t\t\tqueue.push({\n \t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\tid: parentId\n \t\t\t\t\t});\n \t\t\t\t}\n \t\t\t}\n\n \t\t\treturn {\n \t\t\t\ttype: \"accepted\",\n \t\t\t\tmoduleId: updateModuleId,\n \t\t\t\toutdatedModules: outdatedModules,\n \t\t\t\toutdatedDependencies: outdatedDependencies\n \t\t\t};\n \t\t}\n\n \t\tfunction addAllToSet(a, b) {\n \t\t\tfor (var i = 0; i < b.length; i++) {\n \t\t\t\tvar item = b[i];\n \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n \t\t\t}\n \t\t}\n\n \t\t// at begin all updates modules are outdated\n \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n \t\tvar outdatedDependencies = {};\n \t\tvar outdatedModules = [];\n \t\tvar appliedUpdate = {};\n\n \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n \t\t\tconsole.warn(\n \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n \t\t\t);\n \t\t};\n\n \t\tfor (var id in hotUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\tmoduleId = toModuleId(id);\n \t\t\t\t/** @type {TODO} */\n \t\t\t\tvar result;\n \t\t\t\tif (hotUpdate[id]) {\n \t\t\t\t\tresult = getAffectedStuff(moduleId);\n \t\t\t\t} else {\n \t\t\t\t\tresult = {\n \t\t\t\t\t\ttype: \"disposed\",\n \t\t\t\t\t\tmoduleId: id\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\t/** @type {Error|false} */\n \t\t\t\tvar abortError = false;\n \t\t\t\tvar doApply = false;\n \t\t\t\tvar doDispose = false;\n \t\t\t\tvar chainInfo = \"\";\n \t\t\t\tif (result.chain) {\n \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n \t\t\t\t}\n \t\t\t\tswitch (result.type) {\n \t\t\t\t\tcase \"self-declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\t\" in \" +\n \t\t\t\t\t\t\t\t\tresult.parentId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"unaccepted\":\n \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"accepted\":\n \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n \t\t\t\t\t\tdoApply = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"disposed\":\n \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n \t\t\t\t\t\tdoDispose = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tdefault:\n \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n \t\t\t\t}\n \t\t\t\tif (abortError) {\n \t\t\t\t\thotSetStatus(\"abort\");\n \t\t\t\t\treturn Promise.reject(abortError);\n \t\t\t\t}\n \t\t\t\tif (doApply) {\n \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n \t\t\t\t\t\tif (\n \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n \t\t\t\t\t\t\t\tmoduleId\n \t\t\t\t\t\t\t)\n \t\t\t\t\t\t) {\n \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n \t\t\t\t\t\t\taddAllToSet(\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t\tif (doDispose) {\n \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Store self accepted outdated modules to require them later by the module system\n \t\tvar outdatedSelfAcceptedModules = [];\n \t\tfor (i = 0; i < outdatedModules.length; i++) {\n \t\t\tmoduleId = outdatedModules[i];\n \t\t\tif (\n \t\t\t\tinstalledModules[moduleId] &&\n \t\t\t\tinstalledModules[moduleId].hot._selfAccepted\n \t\t\t)\n \t\t\t\toutdatedSelfAcceptedModules.push({\n \t\t\t\t\tmodule: moduleId,\n \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n \t\t\t\t});\n \t\t}\n\n \t\t// Now in \"dispose\" phase\n \t\thotSetStatus(\"dispose\");\n \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n \t\t\t\thotDisposeChunk(chunkId);\n \t\t\t}\n \t\t});\n\n \t\tvar idx;\n \t\tvar queue = outdatedModules.slice();\n \t\twhile (queue.length > 0) {\n \t\t\tmoduleId = queue.pop();\n \t\t\tmodule = installedModules[moduleId];\n \t\t\tif (!module) continue;\n\n \t\t\tvar data = {};\n\n \t\t\t// Call dispose handlers\n \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n \t\t\t\tcb = disposeHandlers[j];\n \t\t\t\tcb(data);\n \t\t\t}\n \t\t\thotCurrentModuleData[moduleId] = data;\n\n \t\t\t// disable module (this disables requires from this module)\n \t\t\tmodule.hot.active = false;\n\n \t\t\t// remove module from cache\n \t\t\tdelete installedModules[moduleId];\n\n \t\t\t// when disposing there is no need to call dispose handler\n \t\t\tdelete outdatedDependencies[moduleId];\n\n \t\t\t// remove \"parents\" references from all children\n \t\t\tfor (j = 0; j < module.children.length; j++) {\n \t\t\t\tvar child = installedModules[module.children[j]];\n \t\t\t\tif (!child) continue;\n \t\t\t\tidx = child.parents.indexOf(moduleId);\n \t\t\t\tif (idx >= 0) {\n \t\t\t\t\tchild.parents.splice(idx, 1);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// remove outdated dependency from module children\n \t\tvar dependency;\n \t\tvar moduleOutdatedDependencies;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Not in \"apply\" phase\n \t\thotSetStatus(\"apply\");\n\n \t\thotCurrentHash = hotUpdateNewHash;\n\n \t\t// insert new code\n \t\tfor (moduleId in appliedUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n \t\t\t}\n \t\t}\n\n \t\t// call accept handlers\n \t\tvar error = null;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tvar callbacks = [];\n \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n \t\t\t\t\t\tif (cb) {\n \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n \t\t\t\t\t\t\tcallbacks.push(cb);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n \t\t\t\t\t\tcb = callbacks[i];\n \t\t\t\t\t\ttry {\n \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n \t\t\t\t\t\t} catch (err) {\n \t\t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n \t\t\t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t\t\t});\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Load self accepted modules\n \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n \t\t\tvar item = outdatedSelfAcceptedModules[i];\n \t\t\tmoduleId = item.module;\n \t\t\thotCurrentParents = [moduleId];\n \t\t\ttry {\n \t\t\t\t__webpack_require__(moduleId);\n \t\t\t} catch (err) {\n \t\t\t\tif (typeof item.errorHandler === \"function\") {\n \t\t\t\t\ttry {\n \t\t\t\t\t\titem.errorHandler(err);\n \t\t\t\t\t} catch (err2) {\n \t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n \t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\terror: err2,\n \t\t\t\t\t\t\t\toriginalError: err\n \t\t\t\t\t\t\t});\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\tif (!error) error = err2;\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t});\n \t\t\t\t\t}\n \t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// handle errors in accept handlers and self accepted module load\n \t\tif (error) {\n \t\t\thotSetStatus(\"fail\");\n \t\t\treturn Promise.reject(error);\n \t\t}\n\n \t\thotSetStatus(\"idle\");\n \t\treturn new Promise(function(resolve) {\n \t\t\tresolve(outdatedModules);\n \t\t});\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {},\n \t\t\thot: hotCreateModule(moduleId),\n \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n \t\t\tchildren: []\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// __webpack_hash__\n \t__webpack_require__.h = function() { return hotCurrentHash; };\n\n\n \t// Load entry module and return exports\n \treturn hotCreateRequire(\"./js/index.js\")(__webpack_require__.s = \"./js/index.js\");\n","/*!\n * jQuery JavaScript Library v3.3.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2018-01-20T17:24Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, doc, node ) {\n\t\tdoc = doc || document;\n\n\t\tvar i,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\t\t\t\tif ( node[ i ] ) {\n\t\t\t\t\tscript[ i ] = node[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.3.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n if ( nodeName( elem, \"iframe\" ) ) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if ( nodeName( elem, \"template\" ) ) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc, node );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = div.offsetWidth === 36 || \"absolute\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\t\t) );\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\t\tval = curCSS( elem, dimension, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox;\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = valueIsBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ dimension ] );\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\tif ( val === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) {\n\n\t\tval = elem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];\n\n\t\t// offsetWidth/offsetHeight provide border-box values\n\t\tvalueIsBorderBox = true;\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\t\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra && boxModelAdjustment(\n\t\t\t\t\telem,\n\t\t\t\t\tdimension,\n\t\t\t\t\textra,\n\t\t\t\t\tisBorderBox,\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && support.scrollboxSize() === styles.position ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \" - + \ No newline at end of file diff --git a/dist/metrica.c2d4166337729aa59d3a.js b/dist/metrica.c2d4166337729aa59d3a.js new file mode 100644 index 0000000..023771a --- /dev/null +++ b/dist/metrica.c2d4166337729aa59d3a.js @@ -0,0 +1,802 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ function hotDisposeChunk(chunkId) { +/******/ delete installedChunks[chunkId]; +/******/ } +/******/ var parentHotUpdateCallback = window["webpackHotUpdate"]; +/******/ window["webpackHotUpdate"] = // eslint-disable-next-line no-unused-vars +/******/ function webpackHotUpdateCallback(chunkId, moreModules) { +/******/ hotAddUpdateChunk(chunkId, moreModules); +/******/ if (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules); +/******/ } ; +/******/ +/******/ // eslint-disable-next-line no-unused-vars +/******/ function hotDownloadUpdateChunk(chunkId) { +/******/ var head = document.getElementsByTagName("head")[0]; +/******/ var script = document.createElement("script"); +/******/ script.charset = "utf-8"; +/******/ script.src = __webpack_require__.p + "" + chunkId + "." + hotCurrentHash + ".hot-update.js"; +/******/ ; +/******/ head.appendChild(script); +/******/ } +/******/ +/******/ // eslint-disable-next-line no-unused-vars +/******/ function hotDownloadManifest(requestTimeout) { +/******/ requestTimeout = requestTimeout || 10000; +/******/ return new Promise(function(resolve, reject) { +/******/ if (typeof XMLHttpRequest === "undefined") +/******/ return reject(new Error("No browser support")); +/******/ try { +/******/ var request = new XMLHttpRequest(); +/******/ var requestPath = __webpack_require__.p + "" + hotCurrentHash + ".hot-update.json"; +/******/ request.open("GET", requestPath, true); +/******/ request.timeout = requestTimeout; +/******/ request.send(null); +/******/ } catch (err) { +/******/ return reject(err); +/******/ } +/******/ request.onreadystatechange = function() { +/******/ if (request.readyState !== 4) return; +/******/ if (request.status === 0) { +/******/ // timeout +/******/ reject( +/******/ new Error("Manifest request to " + requestPath + " timed out.") +/******/ ); +/******/ } else if (request.status === 404) { +/******/ // no update available +/******/ resolve(); +/******/ } else if (request.status !== 200 && request.status !== 304) { +/******/ // other failure +/******/ reject(new Error("Manifest request to " + requestPath + " failed.")); +/******/ } else { +/******/ // success +/******/ try { +/******/ var update = JSON.parse(request.responseText); +/******/ } catch (e) { +/******/ reject(e); +/******/ return; +/******/ } +/******/ resolve(update); +/******/ } +/******/ }; +/******/ }); +/******/ } +/******/ +/******/ var hotApplyOnUpdate = true; +/******/ var hotCurrentHash = "c2d4166337729aa59d3a"; // eslint-disable-line no-unused-vars +/******/ var hotRequestTimeout = 10000; +/******/ var hotCurrentModuleData = {}; +/******/ var hotCurrentChildModule; // eslint-disable-line no-unused-vars +/******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars +/******/ var hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars +/******/ +/******/ // eslint-disable-next-line no-unused-vars +/******/ function hotCreateRequire(moduleId) { +/******/ var me = installedModules[moduleId]; +/******/ if (!me) return __webpack_require__; +/******/ var fn = function(request) { +/******/ if (me.hot.active) { +/******/ if (installedModules[request]) { +/******/ if (installedModules[request].parents.indexOf(moduleId) === -1) +/******/ installedModules[request].parents.push(moduleId); +/******/ } else { +/******/ hotCurrentParents = [moduleId]; +/******/ hotCurrentChildModule = request; +/******/ } +/******/ if (me.children.indexOf(request) === -1) me.children.push(request); +/******/ } else { +/******/ console.warn( +/******/ "[HMR] unexpected require(" + +/******/ request + +/******/ ") from disposed module " + +/******/ moduleId +/******/ ); +/******/ hotCurrentParents = []; +/******/ } +/******/ return __webpack_require__(request); +/******/ }; +/******/ var ObjectFactory = function ObjectFactory(name) { +/******/ return { +/******/ configurable: true, +/******/ enumerable: true, +/******/ get: function() { +/******/ return __webpack_require__[name]; +/******/ }, +/******/ set: function(value) { +/******/ __webpack_require__[name] = value; +/******/ } +/******/ }; +/******/ }; +/******/ for (var name in __webpack_require__) { +/******/ if ( +/******/ Object.prototype.hasOwnProperty.call(__webpack_require__, name) && +/******/ name !== "e" +/******/ ) { +/******/ Object.defineProperty(fn, name, ObjectFactory(name)); +/******/ } +/******/ } +/******/ fn.e = function(chunkId) { +/******/ if (hotStatus === "ready") hotSetStatus("prepare"); +/******/ hotChunksLoading++; +/******/ return __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) { +/******/ finishChunkLoading(); +/******/ throw err; +/******/ }); +/******/ +/******/ function finishChunkLoading() { +/******/ hotChunksLoading--; +/******/ if (hotStatus === "prepare") { +/******/ if (!hotWaitingFilesMap[chunkId]) { +/******/ hotEnsureUpdateChunk(chunkId); +/******/ } +/******/ if (hotChunksLoading === 0 && hotWaitingFiles === 0) { +/******/ hotUpdateDownloaded(); +/******/ } +/******/ } +/******/ } +/******/ }; +/******/ return fn; +/******/ } +/******/ +/******/ // eslint-disable-next-line no-unused-vars +/******/ function hotCreateModule(moduleId) { +/******/ var hot = { +/******/ // private stuff +/******/ _acceptedDependencies: {}, +/******/ _declinedDependencies: {}, +/******/ _selfAccepted: false, +/******/ _selfDeclined: false, +/******/ _disposeHandlers: [], +/******/ _main: hotCurrentChildModule !== moduleId, +/******/ +/******/ // Module API +/******/ active: true, +/******/ accept: function(dep, callback) { +/******/ if (typeof dep === "undefined") hot._selfAccepted = true; +/******/ else if (typeof dep === "function") hot._selfAccepted = dep; +/******/ else if (typeof dep === "object") +/******/ for (var i = 0; i < dep.length; i++) +/******/ hot._acceptedDependencies[dep[i]] = callback || function() {}; +/******/ else hot._acceptedDependencies[dep] = callback || function() {}; +/******/ }, +/******/ decline: function(dep) { +/******/ if (typeof dep === "undefined") hot._selfDeclined = true; +/******/ else if (typeof dep === "object") +/******/ for (var i = 0; i < dep.length; i++) +/******/ hot._declinedDependencies[dep[i]] = true; +/******/ else hot._declinedDependencies[dep] = true; +/******/ }, +/******/ dispose: function(callback) { +/******/ hot._disposeHandlers.push(callback); +/******/ }, +/******/ addDisposeHandler: function(callback) { +/******/ hot._disposeHandlers.push(callback); +/******/ }, +/******/ removeDisposeHandler: function(callback) { +/******/ var idx = hot._disposeHandlers.indexOf(callback); +/******/ if (idx >= 0) hot._disposeHandlers.splice(idx, 1); +/******/ }, +/******/ +/******/ // Management API +/******/ check: hotCheck, +/******/ apply: hotApply, +/******/ status: function(l) { +/******/ if (!l) return hotStatus; +/******/ hotStatusHandlers.push(l); +/******/ }, +/******/ addStatusHandler: function(l) { +/******/ hotStatusHandlers.push(l); +/******/ }, +/******/ removeStatusHandler: function(l) { +/******/ var idx = hotStatusHandlers.indexOf(l); +/******/ if (idx >= 0) hotStatusHandlers.splice(idx, 1); +/******/ }, +/******/ +/******/ //inherit from previous dispose call +/******/ data: hotCurrentModuleData[moduleId] +/******/ }; +/******/ hotCurrentChildModule = undefined; +/******/ return hot; +/******/ } +/******/ +/******/ var hotStatusHandlers = []; +/******/ var hotStatus = "idle"; +/******/ +/******/ function hotSetStatus(newStatus) { +/******/ hotStatus = newStatus; +/******/ for (var i = 0; i < hotStatusHandlers.length; i++) +/******/ hotStatusHandlers[i].call(null, newStatus); +/******/ } +/******/ +/******/ // while downloading +/******/ var hotWaitingFiles = 0; +/******/ var hotChunksLoading = 0; +/******/ var hotWaitingFilesMap = {}; +/******/ var hotRequestedFilesMap = {}; +/******/ var hotAvailableFilesMap = {}; +/******/ var hotDeferred; +/******/ +/******/ // The update info +/******/ var hotUpdate, hotUpdateNewHash; +/******/ +/******/ function toModuleId(id) { +/******/ var isNumber = +id + "" === id; +/******/ return isNumber ? +id : id; +/******/ } +/******/ +/******/ function hotCheck(apply) { +/******/ if (hotStatus !== "idle") +/******/ throw new Error("check() is only allowed in idle status"); +/******/ hotApplyOnUpdate = apply; +/******/ hotSetStatus("check"); +/******/ return hotDownloadManifest(hotRequestTimeout).then(function(update) { +/******/ if (!update) { +/******/ hotSetStatus("idle"); +/******/ return null; +/******/ } +/******/ hotRequestedFilesMap = {}; +/******/ hotWaitingFilesMap = {}; +/******/ hotAvailableFilesMap = update.c; +/******/ hotUpdateNewHash = update.h; +/******/ +/******/ hotSetStatus("prepare"); +/******/ var promise = new Promise(function(resolve, reject) { +/******/ hotDeferred = { +/******/ resolve: resolve, +/******/ reject: reject +/******/ }; +/******/ }); +/******/ hotUpdate = {}; +/******/ var chunkId = "metrica"; +/******/ { +/******/ // eslint-disable-line no-lone-blocks +/******/ /*globals chunkId */ +/******/ hotEnsureUpdateChunk(chunkId); +/******/ } +/******/ if ( +/******/ hotStatus === "prepare" && +/******/ hotChunksLoading === 0 && +/******/ hotWaitingFiles === 0 +/******/ ) { +/******/ hotUpdateDownloaded(); +/******/ } +/******/ return promise; +/******/ }); +/******/ } +/******/ +/******/ // eslint-disable-next-line no-unused-vars +/******/ function hotAddUpdateChunk(chunkId, moreModules) { +/******/ if (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId]) +/******/ return; +/******/ hotRequestedFilesMap[chunkId] = false; +/******/ for (var moduleId in moreModules) { +/******/ if (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { +/******/ hotUpdate[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if (--hotWaitingFiles === 0 && hotChunksLoading === 0) { +/******/ hotUpdateDownloaded(); +/******/ } +/******/ } +/******/ +/******/ function hotEnsureUpdateChunk(chunkId) { +/******/ if (!hotAvailableFilesMap[chunkId]) { +/******/ hotWaitingFilesMap[chunkId] = true; +/******/ } else { +/******/ hotRequestedFilesMap[chunkId] = true; +/******/ hotWaitingFiles++; +/******/ hotDownloadUpdateChunk(chunkId); +/******/ } +/******/ } +/******/ +/******/ function hotUpdateDownloaded() { +/******/ hotSetStatus("ready"); +/******/ var deferred = hotDeferred; +/******/ hotDeferred = null; +/******/ if (!deferred) return; +/******/ if (hotApplyOnUpdate) { +/******/ // Wrap deferred object in Promise to mark it as a well-handled Promise to +/******/ // avoid triggering uncaught exception warning in Chrome. +/******/ // See https://bugs.chromium.org/p/chromium/issues/detail?id=465666 +/******/ Promise.resolve() +/******/ .then(function() { +/******/ return hotApply(hotApplyOnUpdate); +/******/ }) +/******/ .then( +/******/ function(result) { +/******/ deferred.resolve(result); +/******/ }, +/******/ function(err) { +/******/ deferred.reject(err); +/******/ } +/******/ ); +/******/ } else { +/******/ var outdatedModules = []; +/******/ for (var id in hotUpdate) { +/******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) { +/******/ outdatedModules.push(toModuleId(id)); +/******/ } +/******/ } +/******/ deferred.resolve(outdatedModules); +/******/ } +/******/ } +/******/ +/******/ function hotApply(options) { +/******/ if (hotStatus !== "ready") +/******/ throw new Error("apply() is only allowed in ready status"); +/******/ options = options || {}; +/******/ +/******/ var cb; +/******/ var i; +/******/ var j; +/******/ var module; +/******/ var moduleId; +/******/ +/******/ function getAffectedStuff(updateModuleId) { +/******/ var outdatedModules = [updateModuleId]; +/******/ var outdatedDependencies = {}; +/******/ +/******/ var queue = outdatedModules.slice().map(function(id) { +/******/ return { +/******/ chain: [id], +/******/ id: id +/******/ }; +/******/ }); +/******/ while (queue.length > 0) { +/******/ var queueItem = queue.pop(); +/******/ var moduleId = queueItem.id; +/******/ var chain = queueItem.chain; +/******/ module = installedModules[moduleId]; +/******/ if (!module || module.hot._selfAccepted) continue; +/******/ if (module.hot._selfDeclined) { +/******/ return { +/******/ type: "self-declined", +/******/ chain: chain, +/******/ moduleId: moduleId +/******/ }; +/******/ } +/******/ if (module.hot._main) { +/******/ return { +/******/ type: "unaccepted", +/******/ chain: chain, +/******/ moduleId: moduleId +/******/ }; +/******/ } +/******/ for (var i = 0; i < module.parents.length; i++) { +/******/ var parentId = module.parents[i]; +/******/ var parent = installedModules[parentId]; +/******/ if (!parent) continue; +/******/ if (parent.hot._declinedDependencies[moduleId]) { +/******/ return { +/******/ type: "declined", +/******/ chain: chain.concat([parentId]), +/******/ moduleId: moduleId, +/******/ parentId: parentId +/******/ }; +/******/ } +/******/ if (outdatedModules.indexOf(parentId) !== -1) continue; +/******/ if (parent.hot._acceptedDependencies[moduleId]) { +/******/ if (!outdatedDependencies[parentId]) +/******/ outdatedDependencies[parentId] = []; +/******/ addAllToSet(outdatedDependencies[parentId], [moduleId]); +/******/ continue; +/******/ } +/******/ delete outdatedDependencies[parentId]; +/******/ outdatedModules.push(parentId); +/******/ queue.push({ +/******/ chain: chain.concat([parentId]), +/******/ id: parentId +/******/ }); +/******/ } +/******/ } +/******/ +/******/ return { +/******/ type: "accepted", +/******/ moduleId: updateModuleId, +/******/ outdatedModules: outdatedModules, +/******/ outdatedDependencies: outdatedDependencies +/******/ }; +/******/ } +/******/ +/******/ function addAllToSet(a, b) { +/******/ for (var i = 0; i < b.length; i++) { +/******/ var item = b[i]; +/******/ if (a.indexOf(item) === -1) a.push(item); +/******/ } +/******/ } +/******/ +/******/ // at begin all updates modules are outdated +/******/ // the "outdated" status can propagate to parents if they don't accept the children +/******/ var outdatedDependencies = {}; +/******/ var outdatedModules = []; +/******/ var appliedUpdate = {}; +/******/ +/******/ var warnUnexpectedRequire = function warnUnexpectedRequire() { +/******/ console.warn( +/******/ "[HMR] unexpected require(" + result.moduleId + ") to disposed module" +/******/ ); +/******/ }; +/******/ +/******/ for (var id in hotUpdate) { +/******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) { +/******/ moduleId = toModuleId(id); +/******/ /** @type {TODO} */ +/******/ var result; +/******/ if (hotUpdate[id]) { +/******/ result = getAffectedStuff(moduleId); +/******/ } else { +/******/ result = { +/******/ type: "disposed", +/******/ moduleId: id +/******/ }; +/******/ } +/******/ /** @type {Error|false} */ +/******/ var abortError = false; +/******/ var doApply = false; +/******/ var doDispose = false; +/******/ var chainInfo = ""; +/******/ if (result.chain) { +/******/ chainInfo = "\nUpdate propagation: " + result.chain.join(" -> "); +/******/ } +/******/ switch (result.type) { +/******/ case "self-declined": +/******/ if (options.onDeclined) options.onDeclined(result); +/******/ if (!options.ignoreDeclined) +/******/ abortError = new Error( +/******/ "Aborted because of self decline: " + +/******/ result.moduleId + +/******/ chainInfo +/******/ ); +/******/ break; +/******/ case "declined": +/******/ if (options.onDeclined) options.onDeclined(result); +/******/ if (!options.ignoreDeclined) +/******/ abortError = new Error( +/******/ "Aborted because of declined dependency: " + +/******/ result.moduleId + +/******/ " in " + +/******/ result.parentId + +/******/ chainInfo +/******/ ); +/******/ break; +/******/ case "unaccepted": +/******/ if (options.onUnaccepted) options.onUnaccepted(result); +/******/ if (!options.ignoreUnaccepted) +/******/ abortError = new Error( +/******/ "Aborted because " + moduleId + " is not accepted" + chainInfo +/******/ ); +/******/ break; +/******/ case "accepted": +/******/ if (options.onAccepted) options.onAccepted(result); +/******/ doApply = true; +/******/ break; +/******/ case "disposed": +/******/ if (options.onDisposed) options.onDisposed(result); +/******/ doDispose = true; +/******/ break; +/******/ default: +/******/ throw new Error("Unexception type " + result.type); +/******/ } +/******/ if (abortError) { +/******/ hotSetStatus("abort"); +/******/ return Promise.reject(abortError); +/******/ } +/******/ if (doApply) { +/******/ appliedUpdate[moduleId] = hotUpdate[moduleId]; +/******/ addAllToSet(outdatedModules, result.outdatedModules); +/******/ for (moduleId in result.outdatedDependencies) { +/******/ if ( +/******/ Object.prototype.hasOwnProperty.call( +/******/ result.outdatedDependencies, +/******/ moduleId +/******/ ) +/******/ ) { +/******/ if (!outdatedDependencies[moduleId]) +/******/ outdatedDependencies[moduleId] = []; +/******/ addAllToSet( +/******/ outdatedDependencies[moduleId], +/******/ result.outdatedDependencies[moduleId] +/******/ ); +/******/ } +/******/ } +/******/ } +/******/ if (doDispose) { +/******/ addAllToSet(outdatedModules, [result.moduleId]); +/******/ appliedUpdate[moduleId] = warnUnexpectedRequire; +/******/ } +/******/ } +/******/ } +/******/ +/******/ // Store self accepted outdated modules to require them later by the module system +/******/ var outdatedSelfAcceptedModules = []; +/******/ for (i = 0; i < outdatedModules.length; i++) { +/******/ moduleId = outdatedModules[i]; +/******/ if ( +/******/ installedModules[moduleId] && +/******/ installedModules[moduleId].hot._selfAccepted +/******/ ) +/******/ outdatedSelfAcceptedModules.push({ +/******/ module: moduleId, +/******/ errorHandler: installedModules[moduleId].hot._selfAccepted +/******/ }); +/******/ } +/******/ +/******/ // Now in "dispose" phase +/******/ hotSetStatus("dispose"); +/******/ Object.keys(hotAvailableFilesMap).forEach(function(chunkId) { +/******/ if (hotAvailableFilesMap[chunkId] === false) { +/******/ hotDisposeChunk(chunkId); +/******/ } +/******/ }); +/******/ +/******/ var idx; +/******/ var queue = outdatedModules.slice(); +/******/ while (queue.length > 0) { +/******/ moduleId = queue.pop(); +/******/ module = installedModules[moduleId]; +/******/ if (!module) continue; +/******/ +/******/ var data = {}; +/******/ +/******/ // Call dispose handlers +/******/ var disposeHandlers = module.hot._disposeHandlers; +/******/ for (j = 0; j < disposeHandlers.length; j++) { +/******/ cb = disposeHandlers[j]; +/******/ cb(data); +/******/ } +/******/ hotCurrentModuleData[moduleId] = data; +/******/ +/******/ // disable module (this disables requires from this module) +/******/ module.hot.active = false; +/******/ +/******/ // remove module from cache +/******/ delete installedModules[moduleId]; +/******/ +/******/ // when disposing there is no need to call dispose handler +/******/ delete outdatedDependencies[moduleId]; +/******/ +/******/ // remove "parents" references from all children +/******/ for (j = 0; j < module.children.length; j++) { +/******/ var child = installedModules[module.children[j]]; +/******/ if (!child) continue; +/******/ idx = child.parents.indexOf(moduleId); +/******/ if (idx >= 0) { +/******/ child.parents.splice(idx, 1); +/******/ } +/******/ } +/******/ } +/******/ +/******/ // remove outdated dependency from module children +/******/ var dependency; +/******/ var moduleOutdatedDependencies; +/******/ for (moduleId in outdatedDependencies) { +/******/ if ( +/******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId) +/******/ ) { +/******/ module = installedModules[moduleId]; +/******/ if (module) { +/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; +/******/ for (j = 0; j < moduleOutdatedDependencies.length; j++) { +/******/ dependency = moduleOutdatedDependencies[j]; +/******/ idx = module.children.indexOf(dependency); +/******/ if (idx >= 0) module.children.splice(idx, 1); +/******/ } +/******/ } +/******/ } +/******/ } +/******/ +/******/ // Not in "apply" phase +/******/ hotSetStatus("apply"); +/******/ +/******/ hotCurrentHash = hotUpdateNewHash; +/******/ +/******/ // insert new code +/******/ for (moduleId in appliedUpdate) { +/******/ if (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) { +/******/ modules[moduleId] = appliedUpdate[moduleId]; +/******/ } +/******/ } +/******/ +/******/ // call accept handlers +/******/ var error = null; +/******/ for (moduleId in outdatedDependencies) { +/******/ if ( +/******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId) +/******/ ) { +/******/ module = installedModules[moduleId]; +/******/ if (module) { +/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; +/******/ var callbacks = []; +/******/ for (i = 0; i < moduleOutdatedDependencies.length; i++) { +/******/ dependency = moduleOutdatedDependencies[i]; +/******/ cb = module.hot._acceptedDependencies[dependency]; +/******/ if (cb) { +/******/ if (callbacks.indexOf(cb) !== -1) continue; +/******/ callbacks.push(cb); +/******/ } +/******/ } +/******/ for (i = 0; i < callbacks.length; i++) { +/******/ cb = callbacks[i]; +/******/ try { +/******/ cb(moduleOutdatedDependencies); +/******/ } catch (err) { +/******/ if (options.onErrored) { +/******/ options.onErrored({ +/******/ type: "accept-errored", +/******/ moduleId: moduleId, +/******/ dependencyId: moduleOutdatedDependencies[i], +/******/ error: err +/******/ }); +/******/ } +/******/ if (!options.ignoreErrored) { +/******/ if (!error) error = err; +/******/ } +/******/ } +/******/ } +/******/ } +/******/ } +/******/ } +/******/ +/******/ // Load self accepted modules +/******/ for (i = 0; i < outdatedSelfAcceptedModules.length; i++) { +/******/ var item = outdatedSelfAcceptedModules[i]; +/******/ moduleId = item.module; +/******/ hotCurrentParents = [moduleId]; +/******/ try { +/******/ __webpack_require__(moduleId); +/******/ } catch (err) { +/******/ if (typeof item.errorHandler === "function") { +/******/ try { +/******/ item.errorHandler(err); +/******/ } catch (err2) { +/******/ if (options.onErrored) { +/******/ options.onErrored({ +/******/ type: "self-accept-error-handler-errored", +/******/ moduleId: moduleId, +/******/ error: err2, +/******/ originalError: err +/******/ }); +/******/ } +/******/ if (!options.ignoreErrored) { +/******/ if (!error) error = err2; +/******/ } +/******/ if (!error) error = err; +/******/ } +/******/ } else { +/******/ if (options.onErrored) { +/******/ options.onErrored({ +/******/ type: "self-accept-errored", +/******/ moduleId: moduleId, +/******/ error: err +/******/ }); +/******/ } +/******/ if (!options.ignoreErrored) { +/******/ if (!error) error = err; +/******/ } +/******/ } +/******/ } +/******/ } +/******/ +/******/ // handle errors in accept handlers and self accepted module load +/******/ if (error) { +/******/ hotSetStatus("fail"); +/******/ return Promise.reject(error); +/******/ } +/******/ +/******/ hotSetStatus("idle"); +/******/ return new Promise(function(resolve) { +/******/ resolve(outdatedModules); +/******/ }); +/******/ } +/******/ +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {}, +/******/ hot: hotCreateModule(moduleId), +/******/ parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp), +/******/ children: [] +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId)); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // __webpack_hash__ +/******/ __webpack_require__.h = function() { return hotCurrentHash; }; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return hotCreateRequire("./js/yandex_metrica.js")(__webpack_require__.s = "./js/yandex_metrica.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./js/yandex_metrica.js": +/*!******************************!*\ + !*** ./js/yandex_metrica.js ***! + \******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +// +(function (d, w, c) { + (w[c] = w[c] || []).push(function () { + try { + w.yaCounter49443436 = new Ya.Metrika2({ id: 49443436, clickmap: true, trackLinks: true, accurateTrackBounce: true, trackHash: true }); + } catch (e) {} + });var n = d.getElementsByTagName("script")[0], + s = d.createElement("script"), + f = function f() { + n.parentNode.insertBefore(s, n); + };s.type = "text/javascript";s.async = true;s.src = "https://mc.yandex.ru/metrika/tag.js";if (w.opera == "[object Opera]") { + d.addEventListener("DOMContentLoaded", f, false); + } else { + f(); + } +})(document, window, "yandex_metrika_callbacks2"); +/* + */ +// + +/***/ }) + +/******/ }); +//# sourceMappingURL=metrica.c2d4166337729aa59d3a.js.map \ No newline at end of file diff --git a/dist/metrica.c2d4166337729aa59d3a.js.map b/dist/metrica.c2d4166337729aa59d3a.js.map new file mode 100644 index 0000000..2099916 --- /dev/null +++ b/dist/metrica.c2d4166337729aa59d3a.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./js/yandex_metrica.js"],"names":["d","w","c","push","yaCounter49443436","Ya","Metrika2","id","clickmap","trackLinks","accurateTrackBounce","trackHash","e","n","getElementsByTagName","s","createElement","f","parentNode","insertBefore","type","async","src","opera","addEventListener","document","window"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA,cAAM;AACN;AACA;AACA,cAAM;AACN;AACA;AACA;AACA,eAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA,sDAA8C;AAC9C;AACA;AACA,oCAA4B;AAC5B,qCAA6B;AAC7B,yCAAiC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAA6B;AAC7B,qCAA6B;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAAqB,gBAAgB;AACrC;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,6BAAqB,gBAAgB;AACrC;AACA;AACA,aAAK;AACL;AACA;AACA,aAAK;AACL;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,aAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,aAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0BAAkB,8BAA8B;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA,eAAO;AACP;AACA;AACA;AACA;AACA,YAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAAmB,cAAc;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAgB,KAAK;AACrB;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA;AACA,wBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAc,4BAA4B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uBAAe,4BAA4B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,uBAAe,4BAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAiB,uCAAuC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAiB,uCAAuC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAiB,sBAAsB;AACvC;AACA;AACA;AACA,gBAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,kBAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAc,wCAAwC;AACtD;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,eAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,iBAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA;AACA,gBAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA,8CAAsC,uBAAuB;;;AAG7D;AACA;;;;;;;;;;;;;;;AC1vBA;AACA,CAAC,UAAUA,CAAV,EAAaC,CAAb,EAAgBC,CAAhB,EAAmB;AAAE,GAACD,EAAEC,CAAF,IAAOD,EAAEC,CAAF,KAAQ,EAAhB,EAAoBC,IAApB,CAAyB,YAAW;AAAE,QAAI;AAAEF,QAAEG,iBAAF,GAAsB,IAAIC,GAAGC,QAAP,CAAgB,EAAEC,IAAG,QAAL,EAAeC,UAAS,IAAxB,EAA8BC,YAAW,IAAzC,EAA+CC,qBAAoB,IAAnE,EAAyEC,WAAU,IAAnF,EAAhB,CAAtB;AAAmI,KAAzI,CAA0I,OAAMC,CAAN,EAAS,CAAG;AAAE,GAA9L,EAAiM,IAAIC,IAAIb,EAAEc,oBAAF,CAAuB,QAAvB,EAAiC,CAAjC,CAAR;AAAA,MAA6CC,IAAIf,EAAEgB,aAAF,CAAgB,QAAhB,CAAjD;AAAA,MAA4EC,IAAI,SAAJA,CAAI,GAAY;AAAEJ,MAAEK,UAAF,CAAaC,YAAb,CAA0BJ,CAA1B,EAA6BF,CAA7B;AAAkC,GAAhI,CAAkIE,EAAEK,IAAF,GAAS,iBAAT,CAA4BL,EAAEM,KAAF,GAAU,IAAV,CAAgBN,EAAEO,GAAF,GAAQ,qCAAR,CAA+C,IAAIrB,EAAEsB,KAAF,IAAW,gBAAf,EAAiC;AAAEvB,MAAEwB,gBAAF,CAAmB,kBAAnB,EAAuCP,CAAvC,EAA0C,KAA1C;AAAmD,GAAtF,MAA4F;AAAEA;AAAM;AAAE,CAA1hB,EAA4hBQ,QAA5hB,EAAsiBC,MAAtiB,EAA8iB,2BAA9iB;AACA;;AAEA,mC","file":"metrica.c2d4166337729aa59d3a.js","sourcesContent":[" \tfunction hotDisposeChunk(chunkId) {\n \t\tdelete installedChunks[chunkId];\n \t}\n \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n \t\thotAddUpdateChunk(chunkId, moreModules);\n \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n \t} ;\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadUpdateChunk(chunkId) {\n \t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\tvar script = document.createElement(\"script\");\n \t\tscript.charset = \"utf-8\";\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n \t\t;\n \t\thead.appendChild(script);\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadManifest(requestTimeout) {\n \t\trequestTimeout = requestTimeout || 10000;\n \t\treturn new Promise(function(resolve, reject) {\n \t\t\tif (typeof XMLHttpRequest === \"undefined\")\n \t\t\t\treturn reject(new Error(\"No browser support\"));\n \t\t\ttry {\n \t\t\t\tvar request = new XMLHttpRequest();\n \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n \t\t\t\trequest.open(\"GET\", requestPath, true);\n \t\t\t\trequest.timeout = requestTimeout;\n \t\t\t\trequest.send(null);\n \t\t\t} catch (err) {\n \t\t\t\treturn reject(err);\n \t\t\t}\n \t\t\trequest.onreadystatechange = function() {\n \t\t\t\tif (request.readyState !== 4) return;\n \t\t\t\tif (request.status === 0) {\n \t\t\t\t\t// timeout\n \t\t\t\t\treject(\n \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n \t\t\t\t\t);\n \t\t\t\t} else if (request.status === 404) {\n \t\t\t\t\t// no update available\n \t\t\t\t\tresolve();\n \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n \t\t\t\t\t// other failure\n \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n \t\t\t\t} else {\n \t\t\t\t\t// success\n \t\t\t\t\ttry {\n \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n \t\t\t\t\t} catch (e) {\n \t\t\t\t\t\treject(e);\n \t\t\t\t\t\treturn;\n \t\t\t\t\t}\n \t\t\t\t\tresolve(update);\n \t\t\t\t}\n \t\t\t};\n \t\t});\n \t}\n\n \tvar hotApplyOnUpdate = true;\n \tvar hotCurrentHash = \"c2d4166337729aa59d3a\"; // eslint-disable-line no-unused-vars\n \tvar hotRequestTimeout = 10000;\n \tvar hotCurrentModuleData = {};\n \tvar hotCurrentChildModule; // eslint-disable-line no-unused-vars\n \tvar hotCurrentParents = []; // eslint-disable-line no-unused-vars\n \tvar hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateRequire(moduleId) {\n \t\tvar me = installedModules[moduleId];\n \t\tif (!me) return __webpack_require__;\n \t\tvar fn = function(request) {\n \t\t\tif (me.hot.active) {\n \t\t\t\tif (installedModules[request]) {\n \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1)\n \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n \t\t\t\t} else {\n \t\t\t\t\thotCurrentParents = [moduleId];\n \t\t\t\t\thotCurrentChildModule = request;\n \t\t\t\t}\n \t\t\t\tif (me.children.indexOf(request) === -1) me.children.push(request);\n \t\t\t} else {\n \t\t\t\tconsole.warn(\n \t\t\t\t\t\"[HMR] unexpected require(\" +\n \t\t\t\t\t\trequest +\n \t\t\t\t\t\t\") from disposed module \" +\n \t\t\t\t\t\tmoduleId\n \t\t\t\t);\n \t\t\t\thotCurrentParents = [];\n \t\t\t}\n \t\t\treturn __webpack_require__(request);\n \t\t};\n \t\tvar ObjectFactory = function ObjectFactory(name) {\n \t\t\treturn {\n \t\t\t\tconfigurable: true,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: function() {\n \t\t\t\t\treturn __webpack_require__[name];\n \t\t\t\t},\n \t\t\t\tset: function(value) {\n \t\t\t\t\t__webpack_require__[name] = value;\n \t\t\t\t}\n \t\t\t};\n \t\t};\n \t\tfor (var name in __webpack_require__) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n \t\t\t\tname !== \"e\"\n \t\t\t) {\n \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n \t\t\t}\n \t\t}\n \t\tfn.e = function(chunkId) {\n \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n \t\t\thotChunksLoading++;\n \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n \t\t\t\tfinishChunkLoading();\n \t\t\t\tthrow err;\n \t\t\t});\n\n \t\t\tfunction finishChunkLoading() {\n \t\t\t\thotChunksLoading--;\n \t\t\t\tif (hotStatus === \"prepare\") {\n \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t\t\t}\n \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n \t\t\t\t\t\thotUpdateDownloaded();\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t};\n \t\treturn fn;\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateModule(moduleId) {\n \t\tvar hot = {\n \t\t\t// private stuff\n \t\t\t_acceptedDependencies: {},\n \t\t\t_declinedDependencies: {},\n \t\t\t_selfAccepted: false,\n \t\t\t_selfDeclined: false,\n \t\t\t_disposeHandlers: [],\n \t\t\t_main: hotCurrentChildModule !== moduleId,\n\n \t\t\t// Module API\n \t\t\tactive: true,\n \t\t\taccept: function(dep, callback) {\n \t\t\t\tif (typeof dep === \"undefined\") hot._selfAccepted = true;\n \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n \t\t\t},\n \t\t\tdecline: function(dep) {\n \t\t\t\tif (typeof dep === \"undefined\") hot._selfDeclined = true;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n \t\t\t\telse hot._declinedDependencies[dep] = true;\n \t\t\t},\n \t\t\tdispose: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\taddDisposeHandler: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\tremoveDisposeHandler: function(callback) {\n \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t// Management API\n \t\t\tcheck: hotCheck,\n \t\t\tapply: hotApply,\n \t\t\tstatus: function(l) {\n \t\t\t\tif (!l) return hotStatus;\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\taddStatusHandler: function(l) {\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\tremoveStatusHandler: function(l) {\n \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t//inherit from previous dispose call\n \t\t\tdata: hotCurrentModuleData[moduleId]\n \t\t};\n \t\thotCurrentChildModule = undefined;\n \t\treturn hot;\n \t}\n\n \tvar hotStatusHandlers = [];\n \tvar hotStatus = \"idle\";\n\n \tfunction hotSetStatus(newStatus) {\n \t\thotStatus = newStatus;\n \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n \t\t\thotStatusHandlers[i].call(null, newStatus);\n \t}\n\n \t// while downloading\n \tvar hotWaitingFiles = 0;\n \tvar hotChunksLoading = 0;\n \tvar hotWaitingFilesMap = {};\n \tvar hotRequestedFilesMap = {};\n \tvar hotAvailableFilesMap = {};\n \tvar hotDeferred;\n\n \t// The update info\n \tvar hotUpdate, hotUpdateNewHash;\n\n \tfunction toModuleId(id) {\n \t\tvar isNumber = +id + \"\" === id;\n \t\treturn isNumber ? +id : id;\n \t}\n\n \tfunction hotCheck(apply) {\n \t\tif (hotStatus !== \"idle\")\n \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n \t\thotApplyOnUpdate = apply;\n \t\thotSetStatus(\"check\");\n \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n \t\t\tif (!update) {\n \t\t\t\thotSetStatus(\"idle\");\n \t\t\t\treturn null;\n \t\t\t}\n \t\t\thotRequestedFilesMap = {};\n \t\t\thotWaitingFilesMap = {};\n \t\t\thotAvailableFilesMap = update.c;\n \t\t\thotUpdateNewHash = update.h;\n\n \t\t\thotSetStatus(\"prepare\");\n \t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\thotDeferred = {\n \t\t\t\t\tresolve: resolve,\n \t\t\t\t\treject: reject\n \t\t\t\t};\n \t\t\t});\n \t\t\thotUpdate = {};\n \t\t\tvar chunkId = \"metrica\";\n \t\t\t{\n \t\t\t\t// eslint-disable-line no-lone-blocks\n \t\t\t\t/*globals chunkId */\n \t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t}\n \t\t\tif (\n \t\t\t\thotStatus === \"prepare\" &&\n \t\t\t\thotChunksLoading === 0 &&\n \t\t\t\thotWaitingFiles === 0\n \t\t\t) {\n \t\t\t\thotUpdateDownloaded();\n \t\t\t}\n \t\t\treturn promise;\n \t\t});\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n \t\t\treturn;\n \t\thotRequestedFilesMap[chunkId] = false;\n \t\tfor (var moduleId in moreModules) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n \t\t\thotUpdateDownloaded();\n \t\t}\n \t}\n\n \tfunction hotEnsureUpdateChunk(chunkId) {\n \t\tif (!hotAvailableFilesMap[chunkId]) {\n \t\t\thotWaitingFilesMap[chunkId] = true;\n \t\t} else {\n \t\t\thotRequestedFilesMap[chunkId] = true;\n \t\t\thotWaitingFiles++;\n \t\t\thotDownloadUpdateChunk(chunkId);\n \t\t}\n \t}\n\n \tfunction hotUpdateDownloaded() {\n \t\thotSetStatus(\"ready\");\n \t\tvar deferred = hotDeferred;\n \t\thotDeferred = null;\n \t\tif (!deferred) return;\n \t\tif (hotApplyOnUpdate) {\n \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n \t\t\t// avoid triggering uncaught exception warning in Chrome.\n \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n \t\t\tPromise.resolve()\n \t\t\t\t.then(function() {\n \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n \t\t\t\t})\n \t\t\t\t.then(\n \t\t\t\t\tfunction(result) {\n \t\t\t\t\t\tdeferred.resolve(result);\n \t\t\t\t\t},\n \t\t\t\t\tfunction(err) {\n \t\t\t\t\t\tdeferred.reject(err);\n \t\t\t\t\t}\n \t\t\t\t);\n \t\t} else {\n \t\t\tvar outdatedModules = [];\n \t\t\tfor (var id in hotUpdate) {\n \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\t\toutdatedModules.push(toModuleId(id));\n \t\t\t\t}\n \t\t\t}\n \t\t\tdeferred.resolve(outdatedModules);\n \t\t}\n \t}\n\n \tfunction hotApply(options) {\n \t\tif (hotStatus !== \"ready\")\n \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n \t\toptions = options || {};\n\n \t\tvar cb;\n \t\tvar i;\n \t\tvar j;\n \t\tvar module;\n \t\tvar moduleId;\n\n \t\tfunction getAffectedStuff(updateModuleId) {\n \t\t\tvar outdatedModules = [updateModuleId];\n \t\t\tvar outdatedDependencies = {};\n\n \t\t\tvar queue = outdatedModules.slice().map(function(id) {\n \t\t\t\treturn {\n \t\t\t\t\tchain: [id],\n \t\t\t\t\tid: id\n \t\t\t\t};\n \t\t\t});\n \t\t\twhile (queue.length > 0) {\n \t\t\t\tvar queueItem = queue.pop();\n \t\t\t\tvar moduleId = queueItem.id;\n \t\t\t\tvar chain = queueItem.chain;\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (!module || module.hot._selfAccepted) continue;\n \t\t\t\tif (module.hot._selfDeclined) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"self-declined\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tif (module.hot._main) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"unaccepted\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n \t\t\t\t\tvar parentId = module.parents[i];\n \t\t\t\t\tvar parent = installedModules[parentId];\n \t\t\t\t\tif (!parent) continue;\n \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n \t\t\t\t\t\treturn {\n \t\t\t\t\t\t\ttype: \"declined\",\n \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\tparentId: parentId\n \t\t\t\t\t\t};\n \t\t\t\t\t}\n \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n \t\t\t\t\t\tcontinue;\n \t\t\t\t\t}\n \t\t\t\t\tdelete outdatedDependencies[parentId];\n \t\t\t\t\toutdatedModules.push(parentId);\n \t\t\t\t\tqueue.push({\n \t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\tid: parentId\n \t\t\t\t\t});\n \t\t\t\t}\n \t\t\t}\n\n \t\t\treturn {\n \t\t\t\ttype: \"accepted\",\n \t\t\t\tmoduleId: updateModuleId,\n \t\t\t\toutdatedModules: outdatedModules,\n \t\t\t\toutdatedDependencies: outdatedDependencies\n \t\t\t};\n \t\t}\n\n \t\tfunction addAllToSet(a, b) {\n \t\t\tfor (var i = 0; i < b.length; i++) {\n \t\t\t\tvar item = b[i];\n \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n \t\t\t}\n \t\t}\n\n \t\t// at begin all updates modules are outdated\n \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n \t\tvar outdatedDependencies = {};\n \t\tvar outdatedModules = [];\n \t\tvar appliedUpdate = {};\n\n \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n \t\t\tconsole.warn(\n \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n \t\t\t);\n \t\t};\n\n \t\tfor (var id in hotUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\tmoduleId = toModuleId(id);\n \t\t\t\t/** @type {TODO} */\n \t\t\t\tvar result;\n \t\t\t\tif (hotUpdate[id]) {\n \t\t\t\t\tresult = getAffectedStuff(moduleId);\n \t\t\t\t} else {\n \t\t\t\t\tresult = {\n \t\t\t\t\t\ttype: \"disposed\",\n \t\t\t\t\t\tmoduleId: id\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\t/** @type {Error|false} */\n \t\t\t\tvar abortError = false;\n \t\t\t\tvar doApply = false;\n \t\t\t\tvar doDispose = false;\n \t\t\t\tvar chainInfo = \"\";\n \t\t\t\tif (result.chain) {\n \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n \t\t\t\t}\n \t\t\t\tswitch (result.type) {\n \t\t\t\t\tcase \"self-declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\t\" in \" +\n \t\t\t\t\t\t\t\t\tresult.parentId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"unaccepted\":\n \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"accepted\":\n \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n \t\t\t\t\t\tdoApply = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"disposed\":\n \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n \t\t\t\t\t\tdoDispose = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tdefault:\n \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n \t\t\t\t}\n \t\t\t\tif (abortError) {\n \t\t\t\t\thotSetStatus(\"abort\");\n \t\t\t\t\treturn Promise.reject(abortError);\n \t\t\t\t}\n \t\t\t\tif (doApply) {\n \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n \t\t\t\t\t\tif (\n \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n \t\t\t\t\t\t\t\tmoduleId\n \t\t\t\t\t\t\t)\n \t\t\t\t\t\t) {\n \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n \t\t\t\t\t\t\taddAllToSet(\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t\tif (doDispose) {\n \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Store self accepted outdated modules to require them later by the module system\n \t\tvar outdatedSelfAcceptedModules = [];\n \t\tfor (i = 0; i < outdatedModules.length; i++) {\n \t\t\tmoduleId = outdatedModules[i];\n \t\t\tif (\n \t\t\t\tinstalledModules[moduleId] &&\n \t\t\t\tinstalledModules[moduleId].hot._selfAccepted\n \t\t\t)\n \t\t\t\toutdatedSelfAcceptedModules.push({\n \t\t\t\t\tmodule: moduleId,\n \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n \t\t\t\t});\n \t\t}\n\n \t\t// Now in \"dispose\" phase\n \t\thotSetStatus(\"dispose\");\n \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n \t\t\t\thotDisposeChunk(chunkId);\n \t\t\t}\n \t\t});\n\n \t\tvar idx;\n \t\tvar queue = outdatedModules.slice();\n \t\twhile (queue.length > 0) {\n \t\t\tmoduleId = queue.pop();\n \t\t\tmodule = installedModules[moduleId];\n \t\t\tif (!module) continue;\n\n \t\t\tvar data = {};\n\n \t\t\t// Call dispose handlers\n \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n \t\t\t\tcb = disposeHandlers[j];\n \t\t\t\tcb(data);\n \t\t\t}\n \t\t\thotCurrentModuleData[moduleId] = data;\n\n \t\t\t// disable module (this disables requires from this module)\n \t\t\tmodule.hot.active = false;\n\n \t\t\t// remove module from cache\n \t\t\tdelete installedModules[moduleId];\n\n \t\t\t// when disposing there is no need to call dispose handler\n \t\t\tdelete outdatedDependencies[moduleId];\n\n \t\t\t// remove \"parents\" references from all children\n \t\t\tfor (j = 0; j < module.children.length; j++) {\n \t\t\t\tvar child = installedModules[module.children[j]];\n \t\t\t\tif (!child) continue;\n \t\t\t\tidx = child.parents.indexOf(moduleId);\n \t\t\t\tif (idx >= 0) {\n \t\t\t\t\tchild.parents.splice(idx, 1);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// remove outdated dependency from module children\n \t\tvar dependency;\n \t\tvar moduleOutdatedDependencies;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Not in \"apply\" phase\n \t\thotSetStatus(\"apply\");\n\n \t\thotCurrentHash = hotUpdateNewHash;\n\n \t\t// insert new code\n \t\tfor (moduleId in appliedUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n \t\t\t}\n \t\t}\n\n \t\t// call accept handlers\n \t\tvar error = null;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tvar callbacks = [];\n \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n \t\t\t\t\t\tif (cb) {\n \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n \t\t\t\t\t\t\tcallbacks.push(cb);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n \t\t\t\t\t\tcb = callbacks[i];\n \t\t\t\t\t\ttry {\n \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n \t\t\t\t\t\t} catch (err) {\n \t\t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n \t\t\t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t\t\t});\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Load self accepted modules\n \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n \t\t\tvar item = outdatedSelfAcceptedModules[i];\n \t\t\tmoduleId = item.module;\n \t\t\thotCurrentParents = [moduleId];\n \t\t\ttry {\n \t\t\t\t__webpack_require__(moduleId);\n \t\t\t} catch (err) {\n \t\t\t\tif (typeof item.errorHandler === \"function\") {\n \t\t\t\t\ttry {\n \t\t\t\t\t\titem.errorHandler(err);\n \t\t\t\t\t} catch (err2) {\n \t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n \t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\terror: err2,\n \t\t\t\t\t\t\t\toriginalError: err\n \t\t\t\t\t\t\t});\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\tif (!error) error = err2;\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t});\n \t\t\t\t\t}\n \t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// handle errors in accept handlers and self accepted module load\n \t\tif (error) {\n \t\t\thotSetStatus(\"fail\");\n \t\t\treturn Promise.reject(error);\n \t\t}\n\n \t\thotSetStatus(\"idle\");\n \t\treturn new Promise(function(resolve) {\n \t\t\tresolve(outdatedModules);\n \t\t});\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {},\n \t\t\thot: hotCreateModule(moduleId),\n \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n \t\t\tchildren: []\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// __webpack_hash__\n \t__webpack_require__.h = function() { return hotCurrentHash; };\n\n\n \t// Load entry module and return exports\n \treturn hotCreateRequire(\"./js/yandex_metrica.js\")(__webpack_require__.s = \"./js/yandex_metrica.js\");\n","// \r\n(function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter49443436 = new Ya.Metrika2({ id:49443436, clickmap:true, trackLinks:true, accurateTrackBounce:true, trackHash:true }); } catch(e) { } }); var n = d.getElementsByTagName(\"script\")[0], s = d.createElement(\"script\"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = \"text/javascript\"; s.async = true; s.src = \"https://mc.yandex.ru/metrika/tag.js\"; if (w.opera == \"[object Opera]\") { d.addEventListener(\"DOMContentLoaded\", f, false); } else { f(); } })(document, window, \"yandex_metrika_callbacks2\"); \r\n/* \r\n */\r\n// "],"sourceRoot":""} \ No newline at end of file diff --git a/src/js/yandex_metrica.js b/src/js/yandex_metrica.js new file mode 100644 index 0000000..cfc154f --- /dev/null +++ b/src/js/yandex_metrica.js @@ -0,0 +1,5 @@ +// +(function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter49443436 = new Ya.Metrika2({ id:49443436, clickmap:true, trackLinks:true, accurateTrackBounce:true, trackHash:true }); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = "https://mc.yandex.ru/metrika/tag.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks2"); +/* + */ +// \ No newline at end of file diff --git a/src/less/main.less b/src/less/main.less index 5750bb2..34d2ac8 100644 --- a/src/less/main.less +++ b/src/less/main.less @@ -220,7 +220,7 @@ main { text-transform: uppercase; font-size: 1rem; margin-bottom: 1rem; - color: @card_color; + color: @redIconsColor; } .wrapper { @@ -256,7 +256,7 @@ main { transition: opacity .3s, color .3s, -webkit-transform .3s; transition: opacity .3s, color .3s, transform .3s; transition: opacity .3s, color .3s, transform .3s, -webkit-transform .3s; - border: 3px solid @card_color; + border: 3px solid @redIconsColor; padding: 5px 20px; } } diff --git a/src/less/partails/params.less b/src/less/partails/params.less index 1336416..c41e968 100644 --- a/src/less/partails/params.less +++ b/src/less/partails/params.less @@ -5,4 +5,4 @@ @content_text_color : #222; @navButtonLines : #9A9DA0; @personal_name_color: #555; -@card_color : #FF6347 ; /* #1ee30b; */ \ No newline at end of file +@nav_menu_hover : rgb(241, 58, 25) ; /* #1ee30b; */ \ No newline at end of file diff --git a/src/template.html b/src/template.html index 9083c32..e763be5 100644 --- a/src/template.html +++ b/src/template.html @@ -67,7 +67,7 @@ alt="logo"> Сайт-портфолио веб-разработчика

    -
    +

    Андрей Кадочников

    Web-разработчик /
    HTML-верстальщик

    @@ -141,7 +141,7 @@

    Немного о себе

    БЭМ
    -
    Пользуюсь последними версиями передовых продуктов Bootstrap и Webpack, что гарантирует что Ваш +
    Пользуюсь последними версиями передовых продуктов Bootstrap и Webpack, это гарантирует что Ваш сайт будет адаптивным и отлично выглядеть на всех устройствах. Вы можете заказать у меня разработку сайта с нуля или связаться со мной для сотрудничества.
    @@ -255,7 +255,7 @@

    Знания и навыки

    Портфолио

    Здесь будут размещаться примеры моих работ -
    куда я надеюсь попадёт и Ваш сайт :)
    +
    куда, я надеюсь, попадёт и Ваш сайт :)
    diff --git a/webpack.config.js b/webpack.config.js index d0e3d2e..be7c059 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -31,7 +31,8 @@ module.exports = { context: path.resolve(__dirname, 'src'), entry: { // Тут писать в порядке подключения в index.html // vendor: ['jquery'], - bundle: './js/index.js' + bundle: './js/index.js', + metrica: './js/yandex_metrica.js' }, output: { filename: '[name].[hash].js', // Можно filename: '[name].[chunkhash].js' но будут длинные имена файлов @@ -95,7 +96,7 @@ module.exports = { new HtmlWebpackPlugin({ template: './template.html', - chunks: [/* 'vendor', */ 'bundle'], //скрипты. которые нужно подключить к html + chunks: [/* 'vendor', */ 'bundle', 'metrica'], //скрипты. которые нужно подключить к html name: 'index.html', hash: true, inject: true From fe498486cd0d5c86b13acfa91172e6b45b73c494 Mon Sep 17 00:00:00 2001 From: Andrey_programmer Date: Wed, 4 Jul 2018 12:54:17 +0300 Subject: [PATCH 04/17] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=BB=20=D0=BC=D0=B5=D1=82=D1=80=D0=B8=D0=BA?= =?UTF-8?q?=D1=83,=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B2=D0=B8=D0=B4=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D1=8C=20=D0=B0?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D0=B0=D1=80=D0=B0=20=D0=BD=D0=B0=20=D0=B2?= =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D0=B4=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...9d3a.js => bundle.57c44ebb2341cfcfe95d.js} | 4 +- dist/bundle.57c44ebb2341cfcfe95d.js.map | 1 + dist/bundle.c2d4166337729aa59d3a.js.map | 1 - dist/index.html | 6 +- dist/metrica.c2d4166337729aa59d3a.js | 802 ---- dist/metrica.c2d4166337729aa59d3a.js.map | 1 - dist/style.3abd22fd5b86b00e73a3.css | 4082 ----------------- dist/style.3abd22fd5b86b00e73a3.css.map | 1 - dist/style.6b4bf5c471d8889e3f3e.css | 9 + src/template.html | 2 +- webpack.config.js | 6 +- 11 files changed, 19 insertions(+), 4896 deletions(-) rename dist/{bundle.c2d4166337729aa59d3a.js => bundle.57c44ebb2341cfcfe95d.js} (99%) create mode 100644 dist/bundle.57c44ebb2341cfcfe95d.js.map delete mode 100644 dist/bundle.c2d4166337729aa59d3a.js.map delete mode 100644 dist/metrica.c2d4166337729aa59d3a.js delete mode 100644 dist/metrica.c2d4166337729aa59d3a.js.map delete mode 100644 dist/style.3abd22fd5b86b00e73a3.css delete mode 100644 dist/style.3abd22fd5b86b00e73a3.css.map create mode 100644 dist/style.6b4bf5c471d8889e3f3e.css diff --git a/dist/bundle.c2d4166337729aa59d3a.js b/dist/bundle.57c44ebb2341cfcfe95d.js similarity index 99% rename from dist/bundle.c2d4166337729aa59d3a.js rename to dist/bundle.57c44ebb2341cfcfe95d.js index 5ec1c76..557e065 100644 --- a/dist/bundle.c2d4166337729aa59d3a.js +++ b/dist/bundle.57c44ebb2341cfcfe95d.js @@ -62,7 +62,7 @@ /******/ } /******/ /******/ var hotApplyOnUpdate = true; -/******/ var hotCurrentHash = "c2d4166337729aa59d3a"; // eslint-disable-line no-unused-vars +/******/ var hotCurrentHash = "57c44ebb2341cfcfe95d"; // eslint-disable-line no-unused-vars /******/ var hotRequestTimeout = 10000; /******/ var hotCurrentModuleData = {}; /******/ var hotCurrentChildModule; // eslint-disable-line no-unused-vars @@ -12476,4 +12476,4 @@ if(true) { /***/ }) /******/ }); -//# sourceMappingURL=bundle.c2d4166337729aa59d3a.js.map \ No newline at end of file +//# sourceMappingURL=bundle.57c44ebb2341cfcfe95d.js.map \ No newline at end of file diff --git a/dist/bundle.57c44ebb2341cfcfe95d.js.map b/dist/bundle.57c44ebb2341cfcfe95d.js.map new file mode 100644 index 0000000..f5ba637 --- /dev/null +++ b/dist/bundle.57c44ebb2341cfcfe95d.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../node_modules/jquery/dist/jquery.js","webpack:///./css/animate.css","webpack:///./css/media.css","webpack:///./css/style.css","webpack:///./less/animate.less","webpack:///./less/style.less","webpack:///../node_modules/style-loader/lib/addStyles.js","webpack:///../node_modules/style-loader/lib/urls.js","webpack:///./css/animate.css?82d5","webpack:///./css/media.css?e29a","webpack:///./css/style.css?05f0","webpack:///./image/additional_display.jpg","webpack:///./image/andrey_programmer.ru.jpg","webpack:///./image/favicon.ico","webpack:///./image/logo.png","webpack:///./image/main_picture.jpg","webpack:///./image/my_photo.jpg","webpack:///./js/about_me.js","webpack:///./js/animation.js","webpack:///./js/contacts.js","webpack:///./js/index.js","webpack:///./js/main_display.js","webpack:///./js/media.js","webpack:///./js/nav-menu.js","webpack:///./js/parallax.min.js","webpack:///./js/portfolio.js","webpack:///./less/animate.less?b356","webpack:///./less/style.less?681e"],"names":["sizeDesctiption","window","matchMedia","matches","MaxHeight","items","$","find","each","console","log","height","addClass","data","scrollPos","scroll","st","scrollTop","not","document","offset","top","css","removeClass","hasClass","click","animate","attr","index","last","hrefs","has","vkFooter","mouseover","event","mouseout","location","assign","open","parallax","imageSrc","image","width","after","i","toggleClass","dblclick","preventDefault","stopPropagation","nav_height","t","e","s","o","h","refresh","render","extend","$element","is","r","position","toLowerCase","match","length","push","positionX","positionY","isNaN","parseInt","navigator","userAgent","iosFix","backgroundImage","backgroundSize","backgroundPosition","androidFix","$mirror","prependTo","mirrorContainer","a","n","$slider","visibility","zIndex","left","overflow","one","naturalHeight","naturalWidth","aspectRatio","isSetup","setup","sliders","isFresh","requestRender","src","complete","trigger","requestAnimationFrame","cancelAnimationFrame","Date","getTime","Math","max","setTimeout","clearTimeout","prototype","speed","bleed","overScrollFix","boxWidth","outerWidth","boxHeight","outerHeight","boxOffsetTop","boxOffsetLeft","boxOffsetBottom","winHeight","docHeight","min","imageWidth","imageHeight","offsetBaseTop","offsetLeft","scrollLeft","overScroll","mirrorTop","mirrorLeft","offsetTop","transform","maxWidth","winWidth","docWidth","isReady","isBusy","p","pageYOffset","l","on","configure","destroy","remove","splice","off","fn","Constructor","noConflict","jQuery"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA,cAAM;AACN;AACA;AACA,cAAM;AACN;AACA;AACA;AACA,eAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA,sDAA8C;AAC9C;AACA;AACA,oCAA4B;AAC5B,qCAA6B;AAC7B,yCAAiC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAA6B;AAC7B,qCAA6B;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAAqB,gBAAgB;AACrC;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,6BAAqB,gBAAgB;AACrC;AACA;AACA,aAAK;AACL;AACA;AACA,aAAK;AACL;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,aAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,aAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0BAAkB,8BAA8B;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA,eAAO;AACP;AACA;AACA;AACA;AACA,YAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAAmB,cAAc;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAgB,KAAK;AACrB;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA;AACA,wBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAc,4BAA4B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uBAAe,4BAA4B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,uBAAe,4BAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAiB,uCAAuC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAiB,uCAAuC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAiB,sBAAsB;AACvC;AACA;AACA;AACA,gBAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,kBAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAc,wCAAwC;AACtD;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,eAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,iBAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA;AACA,gBAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA,8CAAsC,uBAAuB;;;AAG7D;AACA;;;;;;;;;;;;AC1vBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,YAAY;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,YAAY;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,YAAY;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS;AAClB;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA,gBAAgB,IAAI;;AAEpB;AACA;;AAEA;;AAEA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS;;AAET;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ,6BAA6B;AAChD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,eAAe;;AAEf,SAAS;;AAET;AACA,QAAQ,iCAAiC;AACzC,QAAQ,oBAAoB;AAC5B,QAAQ,sCAAsC;AAC9C,QAAQ;AACR,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,gBAAgB,aAAa,EAAE;AAC/B;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,4DAA4D;;AAE5D;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;AACA;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gEAAgE;;AAEhE;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,iEAAiE,UAAU;AAC3E,sCAAsC,2BAA2B;AACjE;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,UAAU;AACpB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,cAAc;AACxB;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA,YAAY,uEAAuE;AACnF;AACA;AACA,YAAY,4BAA4B;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,2DAA2D;;AAE3D;AACA;AACA,oFAAoF;;AAEpF;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,QAAQ,SAAS;AACjB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iDAAiD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD,UAAU,wCAAwC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA,CAAC;;;;AAID;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,QAAQ,GAAG;AACX;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;;;AAIA;;AAEA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA,cAAc,SAAS;AACvB;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,0BAA0B,wBAAwB;;AAElD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA,0CAA0C;AAC1C,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;;;AAIA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,cAAc;AACxB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA,OAAO;AACP,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wCAAwC,sCAAsC;AAC9E,oCAAoC,uCAAuC;AAC3E,oCAAoC,sCAAsC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,OAAO;AACP;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC,qCAAqC;AACrC,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;;;;AAKA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,aAAa;AACpC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;;AAEA;;AAEA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE;AACF;;AAEA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB;AAClB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA,WAAW;;AAEX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA,oDAAoD;AACpD;;AAEA;AACA;;AAEA,cAAc,sBAAsB;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,+DAA+D;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,cAAc;;AAExB;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uCAAuC;AACjE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,uDAAuD;AAC9E;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC,cAAc;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,+BAA+B;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAuC,OAAO;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC,OAAO;AAC/C;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,SAAS,qCAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA,SAAS,8BAA8B;AACvC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAW;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+CAA+C,cAAc,WAAW;AACxE,mBAAmB,UAAU;AAC7B;AACA,sBAAsB,cAAc,sBAAsB,gBAAgB;AAC1E,gBAAgB,WAAW,YAAY;AACvC,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,+DAA+D;AAC3E;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;;AAEf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,iDAAiD,0BAA0B;AAC3E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,gBAAgB;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2BAA2B;AAC3B;AACA,qBAAqB;AACrB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;;AAEA,6CAA6C;AAC7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,gBAAgB;AACzB;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;AACF;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,cAAc;AAClC,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,SAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,cAAc;AACd,CAAC;AACD;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,mBAAmB;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA,iCAAiC;AACjC;AACA;;AAEA,IAAI;AACJ;;AAEA,IAAI;AACJ;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA;AACA,WAAW,SAAS;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;;AAGA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC;AACA;AACA;;AAEA;;AAEA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA,UAAU,KAAK;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qCAAqC;;AAEpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,KAAK;AACL;;AAEA,WAAW;AACX,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB,gDAAgD;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA,iBAAiB;AACjB,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC;;AAElC;AACA,sBAAsB;AACtB,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,mDAAmD;AACnD;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA,EAAE;AACF;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA,cAAc,sDAAsD;AACpE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA,cAAc,mCAAmC;AACjD,eAAe,6DAA6D;AAC5E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AAAA;AACF;;;;;AAKA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA,CAAC;;;;;;;;;;;;AC3nUD,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;;;;;;;;;;;AC1XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA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","file":"bundle.57c44ebb2341cfcfe95d.js","sourcesContent":[" \tfunction hotDisposeChunk(chunkId) {\n \t\tdelete installedChunks[chunkId];\n \t}\n \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n \t\thotAddUpdateChunk(chunkId, moreModules);\n \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n \t} ;\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadUpdateChunk(chunkId) {\n \t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\tvar script = document.createElement(\"script\");\n \t\tscript.charset = \"utf-8\";\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n \t\t;\n \t\thead.appendChild(script);\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadManifest(requestTimeout) {\n \t\trequestTimeout = requestTimeout || 10000;\n \t\treturn new Promise(function(resolve, reject) {\n \t\t\tif (typeof XMLHttpRequest === \"undefined\")\n \t\t\t\treturn reject(new Error(\"No browser support\"));\n \t\t\ttry {\n \t\t\t\tvar request = new XMLHttpRequest();\n \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n \t\t\t\trequest.open(\"GET\", requestPath, true);\n \t\t\t\trequest.timeout = requestTimeout;\n \t\t\t\trequest.send(null);\n \t\t\t} catch (err) {\n \t\t\t\treturn reject(err);\n \t\t\t}\n \t\t\trequest.onreadystatechange = function() {\n \t\t\t\tif (request.readyState !== 4) return;\n \t\t\t\tif (request.status === 0) {\n \t\t\t\t\t// timeout\n \t\t\t\t\treject(\n \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n \t\t\t\t\t);\n \t\t\t\t} else if (request.status === 404) {\n \t\t\t\t\t// no update available\n \t\t\t\t\tresolve();\n \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n \t\t\t\t\t// other failure\n \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n \t\t\t\t} else {\n \t\t\t\t\t// success\n \t\t\t\t\ttry {\n \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n \t\t\t\t\t} catch (e) {\n \t\t\t\t\t\treject(e);\n \t\t\t\t\t\treturn;\n \t\t\t\t\t}\n \t\t\t\t\tresolve(update);\n \t\t\t\t}\n \t\t\t};\n \t\t});\n \t}\n\n \tvar hotApplyOnUpdate = true;\n \tvar hotCurrentHash = \"57c44ebb2341cfcfe95d\"; // eslint-disable-line no-unused-vars\n \tvar hotRequestTimeout = 10000;\n \tvar hotCurrentModuleData = {};\n \tvar hotCurrentChildModule; // eslint-disable-line no-unused-vars\n \tvar hotCurrentParents = []; // eslint-disable-line no-unused-vars\n \tvar hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateRequire(moduleId) {\n \t\tvar me = installedModules[moduleId];\n \t\tif (!me) return __webpack_require__;\n \t\tvar fn = function(request) {\n \t\t\tif (me.hot.active) {\n \t\t\t\tif (installedModules[request]) {\n \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1)\n \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n \t\t\t\t} else {\n \t\t\t\t\thotCurrentParents = [moduleId];\n \t\t\t\t\thotCurrentChildModule = request;\n \t\t\t\t}\n \t\t\t\tif (me.children.indexOf(request) === -1) me.children.push(request);\n \t\t\t} else {\n \t\t\t\tconsole.warn(\n \t\t\t\t\t\"[HMR] unexpected require(\" +\n \t\t\t\t\t\trequest +\n \t\t\t\t\t\t\") from disposed module \" +\n \t\t\t\t\t\tmoduleId\n \t\t\t\t);\n \t\t\t\thotCurrentParents = [];\n \t\t\t}\n \t\t\treturn __webpack_require__(request);\n \t\t};\n \t\tvar ObjectFactory = function ObjectFactory(name) {\n \t\t\treturn {\n \t\t\t\tconfigurable: true,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: function() {\n \t\t\t\t\treturn __webpack_require__[name];\n \t\t\t\t},\n \t\t\t\tset: function(value) {\n \t\t\t\t\t__webpack_require__[name] = value;\n \t\t\t\t}\n \t\t\t};\n \t\t};\n \t\tfor (var name in __webpack_require__) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n \t\t\t\tname !== \"e\"\n \t\t\t) {\n \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n \t\t\t}\n \t\t}\n \t\tfn.e = function(chunkId) {\n \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n \t\t\thotChunksLoading++;\n \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n \t\t\t\tfinishChunkLoading();\n \t\t\t\tthrow err;\n \t\t\t});\n\n \t\t\tfunction finishChunkLoading() {\n \t\t\t\thotChunksLoading--;\n \t\t\t\tif (hotStatus === \"prepare\") {\n \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t\t\t}\n \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n \t\t\t\t\t\thotUpdateDownloaded();\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t};\n \t\treturn fn;\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateModule(moduleId) {\n \t\tvar hot = {\n \t\t\t// private stuff\n \t\t\t_acceptedDependencies: {},\n \t\t\t_declinedDependencies: {},\n \t\t\t_selfAccepted: false,\n \t\t\t_selfDeclined: false,\n \t\t\t_disposeHandlers: [],\n \t\t\t_main: hotCurrentChildModule !== moduleId,\n\n \t\t\t// Module API\n \t\t\tactive: true,\n \t\t\taccept: function(dep, callback) {\n \t\t\t\tif (typeof dep === \"undefined\") hot._selfAccepted = true;\n \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n \t\t\t},\n \t\t\tdecline: function(dep) {\n \t\t\t\tif (typeof dep === \"undefined\") hot._selfDeclined = true;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n \t\t\t\telse hot._declinedDependencies[dep] = true;\n \t\t\t},\n \t\t\tdispose: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\taddDisposeHandler: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\tremoveDisposeHandler: function(callback) {\n \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t// Management API\n \t\t\tcheck: hotCheck,\n \t\t\tapply: hotApply,\n \t\t\tstatus: function(l) {\n \t\t\t\tif (!l) return hotStatus;\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\taddStatusHandler: function(l) {\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\tremoveStatusHandler: function(l) {\n \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t//inherit from previous dispose call\n \t\t\tdata: hotCurrentModuleData[moduleId]\n \t\t};\n \t\thotCurrentChildModule = undefined;\n \t\treturn hot;\n \t}\n\n \tvar hotStatusHandlers = [];\n \tvar hotStatus = \"idle\";\n\n \tfunction hotSetStatus(newStatus) {\n \t\thotStatus = newStatus;\n \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n \t\t\thotStatusHandlers[i].call(null, newStatus);\n \t}\n\n \t// while downloading\n \tvar hotWaitingFiles = 0;\n \tvar hotChunksLoading = 0;\n \tvar hotWaitingFilesMap = {};\n \tvar hotRequestedFilesMap = {};\n \tvar hotAvailableFilesMap = {};\n \tvar hotDeferred;\n\n \t// The update info\n \tvar hotUpdate, hotUpdateNewHash;\n\n \tfunction toModuleId(id) {\n \t\tvar isNumber = +id + \"\" === id;\n \t\treturn isNumber ? +id : id;\n \t}\n\n \tfunction hotCheck(apply) {\n \t\tif (hotStatus !== \"idle\")\n \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n \t\thotApplyOnUpdate = apply;\n \t\thotSetStatus(\"check\");\n \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n \t\t\tif (!update) {\n \t\t\t\thotSetStatus(\"idle\");\n \t\t\t\treturn null;\n \t\t\t}\n \t\t\thotRequestedFilesMap = {};\n \t\t\thotWaitingFilesMap = {};\n \t\t\thotAvailableFilesMap = update.c;\n \t\t\thotUpdateNewHash = update.h;\n\n \t\t\thotSetStatus(\"prepare\");\n \t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\thotDeferred = {\n \t\t\t\t\tresolve: resolve,\n \t\t\t\t\treject: reject\n \t\t\t\t};\n \t\t\t});\n \t\t\thotUpdate = {};\n \t\t\tvar chunkId = \"bundle\";\n \t\t\t{\n \t\t\t\t// eslint-disable-line no-lone-blocks\n \t\t\t\t/*globals chunkId */\n \t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t}\n \t\t\tif (\n \t\t\t\thotStatus === \"prepare\" &&\n \t\t\t\thotChunksLoading === 0 &&\n \t\t\t\thotWaitingFiles === 0\n \t\t\t) {\n \t\t\t\thotUpdateDownloaded();\n \t\t\t}\n \t\t\treturn promise;\n \t\t});\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n \t\t\treturn;\n \t\thotRequestedFilesMap[chunkId] = false;\n \t\tfor (var moduleId in moreModules) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n \t\t\thotUpdateDownloaded();\n \t\t}\n \t}\n\n \tfunction hotEnsureUpdateChunk(chunkId) {\n \t\tif (!hotAvailableFilesMap[chunkId]) {\n \t\t\thotWaitingFilesMap[chunkId] = true;\n \t\t} else {\n \t\t\thotRequestedFilesMap[chunkId] = true;\n \t\t\thotWaitingFiles++;\n \t\t\thotDownloadUpdateChunk(chunkId);\n \t\t}\n \t}\n\n \tfunction hotUpdateDownloaded() {\n \t\thotSetStatus(\"ready\");\n \t\tvar deferred = hotDeferred;\n \t\thotDeferred = null;\n \t\tif (!deferred) return;\n \t\tif (hotApplyOnUpdate) {\n \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n \t\t\t// avoid triggering uncaught exception warning in Chrome.\n \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n \t\t\tPromise.resolve()\n \t\t\t\t.then(function() {\n \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n \t\t\t\t})\n \t\t\t\t.then(\n \t\t\t\t\tfunction(result) {\n \t\t\t\t\t\tdeferred.resolve(result);\n \t\t\t\t\t},\n \t\t\t\t\tfunction(err) {\n \t\t\t\t\t\tdeferred.reject(err);\n \t\t\t\t\t}\n \t\t\t\t);\n \t\t} else {\n \t\t\tvar outdatedModules = [];\n \t\t\tfor (var id in hotUpdate) {\n \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\t\toutdatedModules.push(toModuleId(id));\n \t\t\t\t}\n \t\t\t}\n \t\t\tdeferred.resolve(outdatedModules);\n \t\t}\n \t}\n\n \tfunction hotApply(options) {\n \t\tif (hotStatus !== \"ready\")\n \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n \t\toptions = options || {};\n\n \t\tvar cb;\n \t\tvar i;\n \t\tvar j;\n \t\tvar module;\n \t\tvar moduleId;\n\n \t\tfunction getAffectedStuff(updateModuleId) {\n \t\t\tvar outdatedModules = [updateModuleId];\n \t\t\tvar outdatedDependencies = {};\n\n \t\t\tvar queue = outdatedModules.slice().map(function(id) {\n \t\t\t\treturn {\n \t\t\t\t\tchain: [id],\n \t\t\t\t\tid: id\n \t\t\t\t};\n \t\t\t});\n \t\t\twhile (queue.length > 0) {\n \t\t\t\tvar queueItem = queue.pop();\n \t\t\t\tvar moduleId = queueItem.id;\n \t\t\t\tvar chain = queueItem.chain;\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (!module || module.hot._selfAccepted) continue;\n \t\t\t\tif (module.hot._selfDeclined) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"self-declined\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tif (module.hot._main) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"unaccepted\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n \t\t\t\t\tvar parentId = module.parents[i];\n \t\t\t\t\tvar parent = installedModules[parentId];\n \t\t\t\t\tif (!parent) continue;\n \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n \t\t\t\t\t\treturn {\n \t\t\t\t\t\t\ttype: \"declined\",\n \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\tparentId: parentId\n \t\t\t\t\t\t};\n \t\t\t\t\t}\n \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n \t\t\t\t\t\tcontinue;\n \t\t\t\t\t}\n \t\t\t\t\tdelete outdatedDependencies[parentId];\n \t\t\t\t\toutdatedModules.push(parentId);\n \t\t\t\t\tqueue.push({\n \t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\tid: parentId\n \t\t\t\t\t});\n \t\t\t\t}\n \t\t\t}\n\n \t\t\treturn {\n \t\t\t\ttype: \"accepted\",\n \t\t\t\tmoduleId: updateModuleId,\n \t\t\t\toutdatedModules: outdatedModules,\n \t\t\t\toutdatedDependencies: outdatedDependencies\n \t\t\t};\n \t\t}\n\n \t\tfunction addAllToSet(a, b) {\n \t\t\tfor (var i = 0; i < b.length; i++) {\n \t\t\t\tvar item = b[i];\n \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n \t\t\t}\n \t\t}\n\n \t\t// at begin all updates modules are outdated\n \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n \t\tvar outdatedDependencies = {};\n \t\tvar outdatedModules = [];\n \t\tvar appliedUpdate = {};\n\n \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n \t\t\tconsole.warn(\n \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n \t\t\t);\n \t\t};\n\n \t\tfor (var id in hotUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\tmoduleId = toModuleId(id);\n \t\t\t\t/** @type {TODO} */\n \t\t\t\tvar result;\n \t\t\t\tif (hotUpdate[id]) {\n \t\t\t\t\tresult = getAffectedStuff(moduleId);\n \t\t\t\t} else {\n \t\t\t\t\tresult = {\n \t\t\t\t\t\ttype: \"disposed\",\n \t\t\t\t\t\tmoduleId: id\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\t/** @type {Error|false} */\n \t\t\t\tvar abortError = false;\n \t\t\t\tvar doApply = false;\n \t\t\t\tvar doDispose = false;\n \t\t\t\tvar chainInfo = \"\";\n \t\t\t\tif (result.chain) {\n \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n \t\t\t\t}\n \t\t\t\tswitch (result.type) {\n \t\t\t\t\tcase \"self-declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\t\" in \" +\n \t\t\t\t\t\t\t\t\tresult.parentId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"unaccepted\":\n \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"accepted\":\n \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n \t\t\t\t\t\tdoApply = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"disposed\":\n \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n \t\t\t\t\t\tdoDispose = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tdefault:\n \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n \t\t\t\t}\n \t\t\t\tif (abortError) {\n \t\t\t\t\thotSetStatus(\"abort\");\n \t\t\t\t\treturn Promise.reject(abortError);\n \t\t\t\t}\n \t\t\t\tif (doApply) {\n \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n \t\t\t\t\t\tif (\n \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n \t\t\t\t\t\t\t\tmoduleId\n \t\t\t\t\t\t\t)\n \t\t\t\t\t\t) {\n \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n \t\t\t\t\t\t\taddAllToSet(\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t\tif (doDispose) {\n \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Store self accepted outdated modules to require them later by the module system\n \t\tvar outdatedSelfAcceptedModules = [];\n \t\tfor (i = 0; i < outdatedModules.length; i++) {\n \t\t\tmoduleId = outdatedModules[i];\n \t\t\tif (\n \t\t\t\tinstalledModules[moduleId] &&\n \t\t\t\tinstalledModules[moduleId].hot._selfAccepted\n \t\t\t)\n \t\t\t\toutdatedSelfAcceptedModules.push({\n \t\t\t\t\tmodule: moduleId,\n \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n \t\t\t\t});\n \t\t}\n\n \t\t// Now in \"dispose\" phase\n \t\thotSetStatus(\"dispose\");\n \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n \t\t\t\thotDisposeChunk(chunkId);\n \t\t\t}\n \t\t});\n\n \t\tvar idx;\n \t\tvar queue = outdatedModules.slice();\n \t\twhile (queue.length > 0) {\n \t\t\tmoduleId = queue.pop();\n \t\t\tmodule = installedModules[moduleId];\n \t\t\tif (!module) continue;\n\n \t\t\tvar data = {};\n\n \t\t\t// Call dispose handlers\n \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n \t\t\t\tcb = disposeHandlers[j];\n \t\t\t\tcb(data);\n \t\t\t}\n \t\t\thotCurrentModuleData[moduleId] = data;\n\n \t\t\t// disable module (this disables requires from this module)\n \t\t\tmodule.hot.active = false;\n\n \t\t\t// remove module from cache\n \t\t\tdelete installedModules[moduleId];\n\n \t\t\t// when disposing there is no need to call dispose handler\n \t\t\tdelete outdatedDependencies[moduleId];\n\n \t\t\t// remove \"parents\" references from all children\n \t\t\tfor (j = 0; j < module.children.length; j++) {\n \t\t\t\tvar child = installedModules[module.children[j]];\n \t\t\t\tif (!child) continue;\n \t\t\t\tidx = child.parents.indexOf(moduleId);\n \t\t\t\tif (idx >= 0) {\n \t\t\t\t\tchild.parents.splice(idx, 1);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// remove outdated dependency from module children\n \t\tvar dependency;\n \t\tvar moduleOutdatedDependencies;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Not in \"apply\" phase\n \t\thotSetStatus(\"apply\");\n\n \t\thotCurrentHash = hotUpdateNewHash;\n\n \t\t// insert new code\n \t\tfor (moduleId in appliedUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n \t\t\t}\n \t\t}\n\n \t\t// call accept handlers\n \t\tvar error = null;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tvar callbacks = [];\n \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n \t\t\t\t\t\tif (cb) {\n \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n \t\t\t\t\t\t\tcallbacks.push(cb);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n \t\t\t\t\t\tcb = callbacks[i];\n \t\t\t\t\t\ttry {\n \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n \t\t\t\t\t\t} catch (err) {\n \t\t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n \t\t\t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t\t\t});\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Load self accepted modules\n \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n \t\t\tvar item = outdatedSelfAcceptedModules[i];\n \t\t\tmoduleId = item.module;\n \t\t\thotCurrentParents = [moduleId];\n \t\t\ttry {\n \t\t\t\t__webpack_require__(moduleId);\n \t\t\t} catch (err) {\n \t\t\t\tif (typeof item.errorHandler === \"function\") {\n \t\t\t\t\ttry {\n \t\t\t\t\t\titem.errorHandler(err);\n \t\t\t\t\t} catch (err2) {\n \t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n \t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\terror: err2,\n \t\t\t\t\t\t\t\toriginalError: err\n \t\t\t\t\t\t\t});\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\tif (!error) error = err2;\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t});\n \t\t\t\t\t}\n \t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// handle errors in accept handlers and self accepted module load\n \t\tif (error) {\n \t\t\thotSetStatus(\"fail\");\n \t\t\treturn Promise.reject(error);\n \t\t}\n\n \t\thotSetStatus(\"idle\");\n \t\treturn new Promise(function(resolve) {\n \t\t\tresolve(outdatedModules);\n \t\t});\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {},\n \t\t\thot: hotCreateModule(moduleId),\n \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n \t\t\tchildren: []\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// __webpack_hash__\n \t__webpack_require__.h = function() { return hotCurrentHash; };\n\n\n \t// Load entry module and return exports\n \treturn hotCreateRequire(\"./js/index.js\")(__webpack_require__.s = \"./js/index.js\");\n","/*!\n * jQuery JavaScript Library v3.3.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2018-01-20T17:24Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, doc, node ) {\n\t\tdoc = doc || document;\n\n\t\tvar i,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\t\t\t\tif ( node[ i ] ) {\n\t\t\t\t\tscript[ i ] = node[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.3.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n if ( nodeName( elem, \"iframe\" ) ) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if ( nodeName( elem, \"template\" ) ) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc, node );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = div.offsetWidth === 36 || \"absolute\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\t\t) );\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\t\tval = curCSS( elem, dimension, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox;\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = valueIsBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ dimension ] );\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\tif ( val === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) {\n\n\t\tval = elem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];\n\n\t\t// offsetWidth/offsetHeight provide border-box values\n\t\tvalueIsBorderBox = true;\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\t\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra && boxModelAdjustment(\n\t\t\t\t\telem,\n\t\t\t\t\tdimension,\n\t\t\t\t\textra,\n\t\t\t\t\tisBorderBox,\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && support.scrollboxSize() === styles.position ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \" - + \ No newline at end of file diff --git a/dist/metrica.c2d4166337729aa59d3a.js b/dist/metrica.c2d4166337729aa59d3a.js deleted file mode 100644 index 023771a..0000000 --- a/dist/metrica.c2d4166337729aa59d3a.js +++ /dev/null @@ -1,802 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ function hotDisposeChunk(chunkId) { -/******/ delete installedChunks[chunkId]; -/******/ } -/******/ var parentHotUpdateCallback = window["webpackHotUpdate"]; -/******/ window["webpackHotUpdate"] = // eslint-disable-next-line no-unused-vars -/******/ function webpackHotUpdateCallback(chunkId, moreModules) { -/******/ hotAddUpdateChunk(chunkId, moreModules); -/******/ if (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules); -/******/ } ; -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotDownloadUpdateChunk(chunkId) { -/******/ var head = document.getElementsByTagName("head")[0]; -/******/ var script = document.createElement("script"); -/******/ script.charset = "utf-8"; -/******/ script.src = __webpack_require__.p + "" + chunkId + "." + hotCurrentHash + ".hot-update.js"; -/******/ ; -/******/ head.appendChild(script); -/******/ } -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotDownloadManifest(requestTimeout) { -/******/ requestTimeout = requestTimeout || 10000; -/******/ return new Promise(function(resolve, reject) { -/******/ if (typeof XMLHttpRequest === "undefined") -/******/ return reject(new Error("No browser support")); -/******/ try { -/******/ var request = new XMLHttpRequest(); -/******/ var requestPath = __webpack_require__.p + "" + hotCurrentHash + ".hot-update.json"; -/******/ request.open("GET", requestPath, true); -/******/ request.timeout = requestTimeout; -/******/ request.send(null); -/******/ } catch (err) { -/******/ return reject(err); -/******/ } -/******/ request.onreadystatechange = function() { -/******/ if (request.readyState !== 4) return; -/******/ if (request.status === 0) { -/******/ // timeout -/******/ reject( -/******/ new Error("Manifest request to " + requestPath + " timed out.") -/******/ ); -/******/ } else if (request.status === 404) { -/******/ // no update available -/******/ resolve(); -/******/ } else if (request.status !== 200 && request.status !== 304) { -/******/ // other failure -/******/ reject(new Error("Manifest request to " + requestPath + " failed.")); -/******/ } else { -/******/ // success -/******/ try { -/******/ var update = JSON.parse(request.responseText); -/******/ } catch (e) { -/******/ reject(e); -/******/ return; -/******/ } -/******/ resolve(update); -/******/ } -/******/ }; -/******/ }); -/******/ } -/******/ -/******/ var hotApplyOnUpdate = true; -/******/ var hotCurrentHash = "c2d4166337729aa59d3a"; // eslint-disable-line no-unused-vars -/******/ var hotRequestTimeout = 10000; -/******/ var hotCurrentModuleData = {}; -/******/ var hotCurrentChildModule; // eslint-disable-line no-unused-vars -/******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars -/******/ var hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotCreateRequire(moduleId) { -/******/ var me = installedModules[moduleId]; -/******/ if (!me) return __webpack_require__; -/******/ var fn = function(request) { -/******/ if (me.hot.active) { -/******/ if (installedModules[request]) { -/******/ if (installedModules[request].parents.indexOf(moduleId) === -1) -/******/ installedModules[request].parents.push(moduleId); -/******/ } else { -/******/ hotCurrentParents = [moduleId]; -/******/ hotCurrentChildModule = request; -/******/ } -/******/ if (me.children.indexOf(request) === -1) me.children.push(request); -/******/ } else { -/******/ console.warn( -/******/ "[HMR] unexpected require(" + -/******/ request + -/******/ ") from disposed module " + -/******/ moduleId -/******/ ); -/******/ hotCurrentParents = []; -/******/ } -/******/ return __webpack_require__(request); -/******/ }; -/******/ var ObjectFactory = function ObjectFactory(name) { -/******/ return { -/******/ configurable: true, -/******/ enumerable: true, -/******/ get: function() { -/******/ return __webpack_require__[name]; -/******/ }, -/******/ set: function(value) { -/******/ __webpack_require__[name] = value; -/******/ } -/******/ }; -/******/ }; -/******/ for (var name in __webpack_require__) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call(__webpack_require__, name) && -/******/ name !== "e" -/******/ ) { -/******/ Object.defineProperty(fn, name, ObjectFactory(name)); -/******/ } -/******/ } -/******/ fn.e = function(chunkId) { -/******/ if (hotStatus === "ready") hotSetStatus("prepare"); -/******/ hotChunksLoading++; -/******/ return __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) { -/******/ finishChunkLoading(); -/******/ throw err; -/******/ }); -/******/ -/******/ function finishChunkLoading() { -/******/ hotChunksLoading--; -/******/ if (hotStatus === "prepare") { -/******/ if (!hotWaitingFilesMap[chunkId]) { -/******/ hotEnsureUpdateChunk(chunkId); -/******/ } -/******/ if (hotChunksLoading === 0 && hotWaitingFiles === 0) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ } -/******/ } -/******/ }; -/******/ return fn; -/******/ } -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotCreateModule(moduleId) { -/******/ var hot = { -/******/ // private stuff -/******/ _acceptedDependencies: {}, -/******/ _declinedDependencies: {}, -/******/ _selfAccepted: false, -/******/ _selfDeclined: false, -/******/ _disposeHandlers: [], -/******/ _main: hotCurrentChildModule !== moduleId, -/******/ -/******/ // Module API -/******/ active: true, -/******/ accept: function(dep, callback) { -/******/ if (typeof dep === "undefined") hot._selfAccepted = true; -/******/ else if (typeof dep === "function") hot._selfAccepted = dep; -/******/ else if (typeof dep === "object") -/******/ for (var i = 0; i < dep.length; i++) -/******/ hot._acceptedDependencies[dep[i]] = callback || function() {}; -/******/ else hot._acceptedDependencies[dep] = callback || function() {}; -/******/ }, -/******/ decline: function(dep) { -/******/ if (typeof dep === "undefined") hot._selfDeclined = true; -/******/ else if (typeof dep === "object") -/******/ for (var i = 0; i < dep.length; i++) -/******/ hot._declinedDependencies[dep[i]] = true; -/******/ else hot._declinedDependencies[dep] = true; -/******/ }, -/******/ dispose: function(callback) { -/******/ hot._disposeHandlers.push(callback); -/******/ }, -/******/ addDisposeHandler: function(callback) { -/******/ hot._disposeHandlers.push(callback); -/******/ }, -/******/ removeDisposeHandler: function(callback) { -/******/ var idx = hot._disposeHandlers.indexOf(callback); -/******/ if (idx >= 0) hot._disposeHandlers.splice(idx, 1); -/******/ }, -/******/ -/******/ // Management API -/******/ check: hotCheck, -/******/ apply: hotApply, -/******/ status: function(l) { -/******/ if (!l) return hotStatus; -/******/ hotStatusHandlers.push(l); -/******/ }, -/******/ addStatusHandler: function(l) { -/******/ hotStatusHandlers.push(l); -/******/ }, -/******/ removeStatusHandler: function(l) { -/******/ var idx = hotStatusHandlers.indexOf(l); -/******/ if (idx >= 0) hotStatusHandlers.splice(idx, 1); -/******/ }, -/******/ -/******/ //inherit from previous dispose call -/******/ data: hotCurrentModuleData[moduleId] -/******/ }; -/******/ hotCurrentChildModule = undefined; -/******/ return hot; -/******/ } -/******/ -/******/ var hotStatusHandlers = []; -/******/ var hotStatus = "idle"; -/******/ -/******/ function hotSetStatus(newStatus) { -/******/ hotStatus = newStatus; -/******/ for (var i = 0; i < hotStatusHandlers.length; i++) -/******/ hotStatusHandlers[i].call(null, newStatus); -/******/ } -/******/ -/******/ // while downloading -/******/ var hotWaitingFiles = 0; -/******/ var hotChunksLoading = 0; -/******/ var hotWaitingFilesMap = {}; -/******/ var hotRequestedFilesMap = {}; -/******/ var hotAvailableFilesMap = {}; -/******/ var hotDeferred; -/******/ -/******/ // The update info -/******/ var hotUpdate, hotUpdateNewHash; -/******/ -/******/ function toModuleId(id) { -/******/ var isNumber = +id + "" === id; -/******/ return isNumber ? +id : id; -/******/ } -/******/ -/******/ function hotCheck(apply) { -/******/ if (hotStatus !== "idle") -/******/ throw new Error("check() is only allowed in idle status"); -/******/ hotApplyOnUpdate = apply; -/******/ hotSetStatus("check"); -/******/ return hotDownloadManifest(hotRequestTimeout).then(function(update) { -/******/ if (!update) { -/******/ hotSetStatus("idle"); -/******/ return null; -/******/ } -/******/ hotRequestedFilesMap = {}; -/******/ hotWaitingFilesMap = {}; -/******/ hotAvailableFilesMap = update.c; -/******/ hotUpdateNewHash = update.h; -/******/ -/******/ hotSetStatus("prepare"); -/******/ var promise = new Promise(function(resolve, reject) { -/******/ hotDeferred = { -/******/ resolve: resolve, -/******/ reject: reject -/******/ }; -/******/ }); -/******/ hotUpdate = {}; -/******/ var chunkId = "metrica"; -/******/ { -/******/ // eslint-disable-line no-lone-blocks -/******/ /*globals chunkId */ -/******/ hotEnsureUpdateChunk(chunkId); -/******/ } -/******/ if ( -/******/ hotStatus === "prepare" && -/******/ hotChunksLoading === 0 && -/******/ hotWaitingFiles === 0 -/******/ ) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ return promise; -/******/ }); -/******/ } -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotAddUpdateChunk(chunkId, moreModules) { -/******/ if (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId]) -/******/ return; -/******/ hotRequestedFilesMap[chunkId] = false; -/******/ for (var moduleId in moreModules) { -/******/ if (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { -/******/ hotUpdate[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if (--hotWaitingFiles === 0 && hotChunksLoading === 0) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ } -/******/ -/******/ function hotEnsureUpdateChunk(chunkId) { -/******/ if (!hotAvailableFilesMap[chunkId]) { -/******/ hotWaitingFilesMap[chunkId] = true; -/******/ } else { -/******/ hotRequestedFilesMap[chunkId] = true; -/******/ hotWaitingFiles++; -/******/ hotDownloadUpdateChunk(chunkId); -/******/ } -/******/ } -/******/ -/******/ function hotUpdateDownloaded() { -/******/ hotSetStatus("ready"); -/******/ var deferred = hotDeferred; -/******/ hotDeferred = null; -/******/ if (!deferred) return; -/******/ if (hotApplyOnUpdate) { -/******/ // Wrap deferred object in Promise to mark it as a well-handled Promise to -/******/ // avoid triggering uncaught exception warning in Chrome. -/******/ // See https://bugs.chromium.org/p/chromium/issues/detail?id=465666 -/******/ Promise.resolve() -/******/ .then(function() { -/******/ return hotApply(hotApplyOnUpdate); -/******/ }) -/******/ .then( -/******/ function(result) { -/******/ deferred.resolve(result); -/******/ }, -/******/ function(err) { -/******/ deferred.reject(err); -/******/ } -/******/ ); -/******/ } else { -/******/ var outdatedModules = []; -/******/ for (var id in hotUpdate) { -/******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) { -/******/ outdatedModules.push(toModuleId(id)); -/******/ } -/******/ } -/******/ deferred.resolve(outdatedModules); -/******/ } -/******/ } -/******/ -/******/ function hotApply(options) { -/******/ if (hotStatus !== "ready") -/******/ throw new Error("apply() is only allowed in ready status"); -/******/ options = options || {}; -/******/ -/******/ var cb; -/******/ var i; -/******/ var j; -/******/ var module; -/******/ var moduleId; -/******/ -/******/ function getAffectedStuff(updateModuleId) { -/******/ var outdatedModules = [updateModuleId]; -/******/ var outdatedDependencies = {}; -/******/ -/******/ var queue = outdatedModules.slice().map(function(id) { -/******/ return { -/******/ chain: [id], -/******/ id: id -/******/ }; -/******/ }); -/******/ while (queue.length > 0) { -/******/ var queueItem = queue.pop(); -/******/ var moduleId = queueItem.id; -/******/ var chain = queueItem.chain; -/******/ module = installedModules[moduleId]; -/******/ if (!module || module.hot._selfAccepted) continue; -/******/ if (module.hot._selfDeclined) { -/******/ return { -/******/ type: "self-declined", -/******/ chain: chain, -/******/ moduleId: moduleId -/******/ }; -/******/ } -/******/ if (module.hot._main) { -/******/ return { -/******/ type: "unaccepted", -/******/ chain: chain, -/******/ moduleId: moduleId -/******/ }; -/******/ } -/******/ for (var i = 0; i < module.parents.length; i++) { -/******/ var parentId = module.parents[i]; -/******/ var parent = installedModules[parentId]; -/******/ if (!parent) continue; -/******/ if (parent.hot._declinedDependencies[moduleId]) { -/******/ return { -/******/ type: "declined", -/******/ chain: chain.concat([parentId]), -/******/ moduleId: moduleId, -/******/ parentId: parentId -/******/ }; -/******/ } -/******/ if (outdatedModules.indexOf(parentId) !== -1) continue; -/******/ if (parent.hot._acceptedDependencies[moduleId]) { -/******/ if (!outdatedDependencies[parentId]) -/******/ outdatedDependencies[parentId] = []; -/******/ addAllToSet(outdatedDependencies[parentId], [moduleId]); -/******/ continue; -/******/ } -/******/ delete outdatedDependencies[parentId]; -/******/ outdatedModules.push(parentId); -/******/ queue.push({ -/******/ chain: chain.concat([parentId]), -/******/ id: parentId -/******/ }); -/******/ } -/******/ } -/******/ -/******/ return { -/******/ type: "accepted", -/******/ moduleId: updateModuleId, -/******/ outdatedModules: outdatedModules, -/******/ outdatedDependencies: outdatedDependencies -/******/ }; -/******/ } -/******/ -/******/ function addAllToSet(a, b) { -/******/ for (var i = 0; i < b.length; i++) { -/******/ var item = b[i]; -/******/ if (a.indexOf(item) === -1) a.push(item); -/******/ } -/******/ } -/******/ -/******/ // at begin all updates modules are outdated -/******/ // the "outdated" status can propagate to parents if they don't accept the children -/******/ var outdatedDependencies = {}; -/******/ var outdatedModules = []; -/******/ var appliedUpdate = {}; -/******/ -/******/ var warnUnexpectedRequire = function warnUnexpectedRequire() { -/******/ console.warn( -/******/ "[HMR] unexpected require(" + result.moduleId + ") to disposed module" -/******/ ); -/******/ }; -/******/ -/******/ for (var id in hotUpdate) { -/******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) { -/******/ moduleId = toModuleId(id); -/******/ /** @type {TODO} */ -/******/ var result; -/******/ if (hotUpdate[id]) { -/******/ result = getAffectedStuff(moduleId); -/******/ } else { -/******/ result = { -/******/ type: "disposed", -/******/ moduleId: id -/******/ }; -/******/ } -/******/ /** @type {Error|false} */ -/******/ var abortError = false; -/******/ var doApply = false; -/******/ var doDispose = false; -/******/ var chainInfo = ""; -/******/ if (result.chain) { -/******/ chainInfo = "\nUpdate propagation: " + result.chain.join(" -> "); -/******/ } -/******/ switch (result.type) { -/******/ case "self-declined": -/******/ if (options.onDeclined) options.onDeclined(result); -/******/ if (!options.ignoreDeclined) -/******/ abortError = new Error( -/******/ "Aborted because of self decline: " + -/******/ result.moduleId + -/******/ chainInfo -/******/ ); -/******/ break; -/******/ case "declined": -/******/ if (options.onDeclined) options.onDeclined(result); -/******/ if (!options.ignoreDeclined) -/******/ abortError = new Error( -/******/ "Aborted because of declined dependency: " + -/******/ result.moduleId + -/******/ " in " + -/******/ result.parentId + -/******/ chainInfo -/******/ ); -/******/ break; -/******/ case "unaccepted": -/******/ if (options.onUnaccepted) options.onUnaccepted(result); -/******/ if (!options.ignoreUnaccepted) -/******/ abortError = new Error( -/******/ "Aborted because " + moduleId + " is not accepted" + chainInfo -/******/ ); -/******/ break; -/******/ case "accepted": -/******/ if (options.onAccepted) options.onAccepted(result); -/******/ doApply = true; -/******/ break; -/******/ case "disposed": -/******/ if (options.onDisposed) options.onDisposed(result); -/******/ doDispose = true; -/******/ break; -/******/ default: -/******/ throw new Error("Unexception type " + result.type); -/******/ } -/******/ if (abortError) { -/******/ hotSetStatus("abort"); -/******/ return Promise.reject(abortError); -/******/ } -/******/ if (doApply) { -/******/ appliedUpdate[moduleId] = hotUpdate[moduleId]; -/******/ addAllToSet(outdatedModules, result.outdatedModules); -/******/ for (moduleId in result.outdatedDependencies) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call( -/******/ result.outdatedDependencies, -/******/ moduleId -/******/ ) -/******/ ) { -/******/ if (!outdatedDependencies[moduleId]) -/******/ outdatedDependencies[moduleId] = []; -/******/ addAllToSet( -/******/ outdatedDependencies[moduleId], -/******/ result.outdatedDependencies[moduleId] -/******/ ); -/******/ } -/******/ } -/******/ } -/******/ if (doDispose) { -/******/ addAllToSet(outdatedModules, [result.moduleId]); -/******/ appliedUpdate[moduleId] = warnUnexpectedRequire; -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Store self accepted outdated modules to require them later by the module system -/******/ var outdatedSelfAcceptedModules = []; -/******/ for (i = 0; i < outdatedModules.length; i++) { -/******/ moduleId = outdatedModules[i]; -/******/ if ( -/******/ installedModules[moduleId] && -/******/ installedModules[moduleId].hot._selfAccepted -/******/ ) -/******/ outdatedSelfAcceptedModules.push({ -/******/ module: moduleId, -/******/ errorHandler: installedModules[moduleId].hot._selfAccepted -/******/ }); -/******/ } -/******/ -/******/ // Now in "dispose" phase -/******/ hotSetStatus("dispose"); -/******/ Object.keys(hotAvailableFilesMap).forEach(function(chunkId) { -/******/ if (hotAvailableFilesMap[chunkId] === false) { -/******/ hotDisposeChunk(chunkId); -/******/ } -/******/ }); -/******/ -/******/ var idx; -/******/ var queue = outdatedModules.slice(); -/******/ while (queue.length > 0) { -/******/ moduleId = queue.pop(); -/******/ module = installedModules[moduleId]; -/******/ if (!module) continue; -/******/ -/******/ var data = {}; -/******/ -/******/ // Call dispose handlers -/******/ var disposeHandlers = module.hot._disposeHandlers; -/******/ for (j = 0; j < disposeHandlers.length; j++) { -/******/ cb = disposeHandlers[j]; -/******/ cb(data); -/******/ } -/******/ hotCurrentModuleData[moduleId] = data; -/******/ -/******/ // disable module (this disables requires from this module) -/******/ module.hot.active = false; -/******/ -/******/ // remove module from cache -/******/ delete installedModules[moduleId]; -/******/ -/******/ // when disposing there is no need to call dispose handler -/******/ delete outdatedDependencies[moduleId]; -/******/ -/******/ // remove "parents" references from all children -/******/ for (j = 0; j < module.children.length; j++) { -/******/ var child = installedModules[module.children[j]]; -/******/ if (!child) continue; -/******/ idx = child.parents.indexOf(moduleId); -/******/ if (idx >= 0) { -/******/ child.parents.splice(idx, 1); -/******/ } -/******/ } -/******/ } -/******/ -/******/ // remove outdated dependency from module children -/******/ var dependency; -/******/ var moduleOutdatedDependencies; -/******/ for (moduleId in outdatedDependencies) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId) -/******/ ) { -/******/ module = installedModules[moduleId]; -/******/ if (module) { -/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; -/******/ for (j = 0; j < moduleOutdatedDependencies.length; j++) { -/******/ dependency = moduleOutdatedDependencies[j]; -/******/ idx = module.children.indexOf(dependency); -/******/ if (idx >= 0) module.children.splice(idx, 1); -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Not in "apply" phase -/******/ hotSetStatus("apply"); -/******/ -/******/ hotCurrentHash = hotUpdateNewHash; -/******/ -/******/ // insert new code -/******/ for (moduleId in appliedUpdate) { -/******/ if (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) { -/******/ modules[moduleId] = appliedUpdate[moduleId]; -/******/ } -/******/ } -/******/ -/******/ // call accept handlers -/******/ var error = null; -/******/ for (moduleId in outdatedDependencies) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId) -/******/ ) { -/******/ module = installedModules[moduleId]; -/******/ if (module) { -/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; -/******/ var callbacks = []; -/******/ for (i = 0; i < moduleOutdatedDependencies.length; i++) { -/******/ dependency = moduleOutdatedDependencies[i]; -/******/ cb = module.hot._acceptedDependencies[dependency]; -/******/ if (cb) { -/******/ if (callbacks.indexOf(cb) !== -1) continue; -/******/ callbacks.push(cb); -/******/ } -/******/ } -/******/ for (i = 0; i < callbacks.length; i++) { -/******/ cb = callbacks[i]; -/******/ try { -/******/ cb(moduleOutdatedDependencies); -/******/ } catch (err) { -/******/ if (options.onErrored) { -/******/ options.onErrored({ -/******/ type: "accept-errored", -/******/ moduleId: moduleId, -/******/ dependencyId: moduleOutdatedDependencies[i], -/******/ error: err -/******/ }); -/******/ } -/******/ if (!options.ignoreErrored) { -/******/ if (!error) error = err; -/******/ } -/******/ } -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Load self accepted modules -/******/ for (i = 0; i < outdatedSelfAcceptedModules.length; i++) { -/******/ var item = outdatedSelfAcceptedModules[i]; -/******/ moduleId = item.module; -/******/ hotCurrentParents = [moduleId]; -/******/ try { -/******/ __webpack_require__(moduleId); -/******/ } catch (err) { -/******/ if (typeof item.errorHandler === "function") { -/******/ try { -/******/ item.errorHandler(err); -/******/ } catch (err2) { -/******/ if (options.onErrored) { -/******/ options.onErrored({ -/******/ type: "self-accept-error-handler-errored", -/******/ moduleId: moduleId, -/******/ error: err2, -/******/ originalError: err -/******/ }); -/******/ } -/******/ if (!options.ignoreErrored) { -/******/ if (!error) error = err2; -/******/ } -/******/ if (!error) error = err; -/******/ } -/******/ } else { -/******/ if (options.onErrored) { -/******/ options.onErrored({ -/******/ type: "self-accept-errored", -/******/ moduleId: moduleId, -/******/ error: err -/******/ }); -/******/ } -/******/ if (!options.ignoreErrored) { -/******/ if (!error) error = err; -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // handle errors in accept handlers and self accepted module load -/******/ if (error) { -/******/ hotSetStatus("fail"); -/******/ return Promise.reject(error); -/******/ } -/******/ -/******/ hotSetStatus("idle"); -/******/ return new Promise(function(resolve) { -/******/ resolve(outdatedModules); -/******/ }); -/******/ } -/******/ -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {}, -/******/ hot: hotCreateModule(moduleId), -/******/ parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp), -/******/ children: [] -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId)); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // __webpack_hash__ -/******/ __webpack_require__.h = function() { return hotCurrentHash; }; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return hotCreateRequire("./js/yandex_metrica.js")(__webpack_require__.s = "./js/yandex_metrica.js"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "./js/yandex_metrica.js": -/*!******************************!*\ - !*** ./js/yandex_metrica.js ***! - \******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -// -(function (d, w, c) { - (w[c] = w[c] || []).push(function () { - try { - w.yaCounter49443436 = new Ya.Metrika2({ id: 49443436, clickmap: true, trackLinks: true, accurateTrackBounce: true, trackHash: true }); - } catch (e) {} - });var n = d.getElementsByTagName("script")[0], - s = d.createElement("script"), - f = function f() { - n.parentNode.insertBefore(s, n); - };s.type = "text/javascript";s.async = true;s.src = "https://mc.yandex.ru/metrika/tag.js";if (w.opera == "[object Opera]") { - d.addEventListener("DOMContentLoaded", f, false); - } else { - f(); - } -})(document, window, "yandex_metrika_callbacks2"); -/* - */ -// - -/***/ }) - -/******/ }); -//# sourceMappingURL=metrica.c2d4166337729aa59d3a.js.map \ No newline at end of file diff --git a/dist/metrica.c2d4166337729aa59d3a.js.map b/dist/metrica.c2d4166337729aa59d3a.js.map deleted file mode 100644 index 2099916..0000000 --- a/dist/metrica.c2d4166337729aa59d3a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./js/yandex_metrica.js"],"names":["d","w","c","push","yaCounter49443436","Ya","Metrika2","id","clickmap","trackLinks","accurateTrackBounce","trackHash","e","n","getElementsByTagName","s","createElement","f","parentNode","insertBefore","type","async","src","opera","addEventListener","document","window"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA,cAAM;AACN;AACA;AACA,cAAM;AACN;AACA;AACA;AACA,eAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA,sDAA8C;AAC9C;AACA;AACA,oCAA4B;AAC5B,qCAA6B;AAC7B,yCAAiC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAA6B;AAC7B,qCAA6B;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAAqB,gBAAgB;AACrC;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,6BAAqB,gBAAgB;AACrC;AACA;AACA,aAAK;AACL;AACA;AACA,aAAK;AACL;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,aAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,aAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0BAAkB,8BAA8B;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA,eAAO;AACP;AACA;AACA;AACA;AACA,YAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAAmB,cAAc;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAgB,KAAK;AACrB;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA;AACA,wBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAc,4BAA4B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uBAAe,4BAA4B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,uBAAe,4BAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAiB,uCAAuC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAiB,uCAAuC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAiB,sBAAsB;AACvC;AACA;AACA;AACA,gBAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,kBAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAc,wCAAwC;AACtD;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;AACA;AACA,eAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,iBAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAM;AACN;AACA;AACA;AACA;AACA;AACA,gBAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA,8CAAsC,uBAAuB;;;AAG7D;AACA;;;;;;;;;;;;;;;AC1vBA;AACA,CAAC,UAAUA,CAAV,EAAaC,CAAb,EAAgBC,CAAhB,EAAmB;AAAE,GAACD,EAAEC,CAAF,IAAOD,EAAEC,CAAF,KAAQ,EAAhB,EAAoBC,IAApB,CAAyB,YAAW;AAAE,QAAI;AAAEF,QAAEG,iBAAF,GAAsB,IAAIC,GAAGC,QAAP,CAAgB,EAAEC,IAAG,QAAL,EAAeC,UAAS,IAAxB,EAA8BC,YAAW,IAAzC,EAA+CC,qBAAoB,IAAnE,EAAyEC,WAAU,IAAnF,EAAhB,CAAtB;AAAmI,KAAzI,CAA0I,OAAMC,CAAN,EAAS,CAAG;AAAE,GAA9L,EAAiM,IAAIC,IAAIb,EAAEc,oBAAF,CAAuB,QAAvB,EAAiC,CAAjC,CAAR;AAAA,MAA6CC,IAAIf,EAAEgB,aAAF,CAAgB,QAAhB,CAAjD;AAAA,MAA4EC,IAAI,SAAJA,CAAI,GAAY;AAAEJ,MAAEK,UAAF,CAAaC,YAAb,CAA0BJ,CAA1B,EAA6BF,CAA7B;AAAkC,GAAhI,CAAkIE,EAAEK,IAAF,GAAS,iBAAT,CAA4BL,EAAEM,KAAF,GAAU,IAAV,CAAgBN,EAAEO,GAAF,GAAQ,qCAAR,CAA+C,IAAIrB,EAAEsB,KAAF,IAAW,gBAAf,EAAiC;AAAEvB,MAAEwB,gBAAF,CAAmB,kBAAnB,EAAuCP,CAAvC,EAA0C,KAA1C;AAAmD,GAAtF,MAA4F;AAAEA;AAAM;AAAE,CAA1hB,EAA4hBQ,QAA5hB,EAAsiBC,MAAtiB,EAA8iB,2BAA9iB;AACA;;AAEA,mC","file":"metrica.c2d4166337729aa59d3a.js","sourcesContent":[" \tfunction hotDisposeChunk(chunkId) {\n \t\tdelete installedChunks[chunkId];\n \t}\n \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n \t\thotAddUpdateChunk(chunkId, moreModules);\n \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n \t} ;\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadUpdateChunk(chunkId) {\n \t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\tvar script = document.createElement(\"script\");\n \t\tscript.charset = \"utf-8\";\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n \t\t;\n \t\thead.appendChild(script);\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadManifest(requestTimeout) {\n \t\trequestTimeout = requestTimeout || 10000;\n \t\treturn new Promise(function(resolve, reject) {\n \t\t\tif (typeof XMLHttpRequest === \"undefined\")\n \t\t\t\treturn reject(new Error(\"No browser support\"));\n \t\t\ttry {\n \t\t\t\tvar request = new XMLHttpRequest();\n \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n \t\t\t\trequest.open(\"GET\", requestPath, true);\n \t\t\t\trequest.timeout = requestTimeout;\n \t\t\t\trequest.send(null);\n \t\t\t} catch (err) {\n \t\t\t\treturn reject(err);\n \t\t\t}\n \t\t\trequest.onreadystatechange = function() {\n \t\t\t\tif (request.readyState !== 4) return;\n \t\t\t\tif (request.status === 0) {\n \t\t\t\t\t// timeout\n \t\t\t\t\treject(\n \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n \t\t\t\t\t);\n \t\t\t\t} else if (request.status === 404) {\n \t\t\t\t\t// no update available\n \t\t\t\t\tresolve();\n \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n \t\t\t\t\t// other failure\n \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n \t\t\t\t} else {\n \t\t\t\t\t// success\n \t\t\t\t\ttry {\n \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n \t\t\t\t\t} catch (e) {\n \t\t\t\t\t\treject(e);\n \t\t\t\t\t\treturn;\n \t\t\t\t\t}\n \t\t\t\t\tresolve(update);\n \t\t\t\t}\n \t\t\t};\n \t\t});\n \t}\n\n \tvar hotApplyOnUpdate = true;\n \tvar hotCurrentHash = \"c2d4166337729aa59d3a\"; // eslint-disable-line no-unused-vars\n \tvar hotRequestTimeout = 10000;\n \tvar hotCurrentModuleData = {};\n \tvar hotCurrentChildModule; // eslint-disable-line no-unused-vars\n \tvar hotCurrentParents = []; // eslint-disable-line no-unused-vars\n \tvar hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateRequire(moduleId) {\n \t\tvar me = installedModules[moduleId];\n \t\tif (!me) return __webpack_require__;\n \t\tvar fn = function(request) {\n \t\t\tif (me.hot.active) {\n \t\t\t\tif (installedModules[request]) {\n \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1)\n \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n \t\t\t\t} else {\n \t\t\t\t\thotCurrentParents = [moduleId];\n \t\t\t\t\thotCurrentChildModule = request;\n \t\t\t\t}\n \t\t\t\tif (me.children.indexOf(request) === -1) me.children.push(request);\n \t\t\t} else {\n \t\t\t\tconsole.warn(\n \t\t\t\t\t\"[HMR] unexpected require(\" +\n \t\t\t\t\t\trequest +\n \t\t\t\t\t\t\") from disposed module \" +\n \t\t\t\t\t\tmoduleId\n \t\t\t\t);\n \t\t\t\thotCurrentParents = [];\n \t\t\t}\n \t\t\treturn __webpack_require__(request);\n \t\t};\n \t\tvar ObjectFactory = function ObjectFactory(name) {\n \t\t\treturn {\n \t\t\t\tconfigurable: true,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: function() {\n \t\t\t\t\treturn __webpack_require__[name];\n \t\t\t\t},\n \t\t\t\tset: function(value) {\n \t\t\t\t\t__webpack_require__[name] = value;\n \t\t\t\t}\n \t\t\t};\n \t\t};\n \t\tfor (var name in __webpack_require__) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n \t\t\t\tname !== \"e\"\n \t\t\t) {\n \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n \t\t\t}\n \t\t}\n \t\tfn.e = function(chunkId) {\n \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n \t\t\thotChunksLoading++;\n \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n \t\t\t\tfinishChunkLoading();\n \t\t\t\tthrow err;\n \t\t\t});\n\n \t\t\tfunction finishChunkLoading() {\n \t\t\t\thotChunksLoading--;\n \t\t\t\tif (hotStatus === \"prepare\") {\n \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t\t\t}\n \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n \t\t\t\t\t\thotUpdateDownloaded();\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t};\n \t\treturn fn;\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateModule(moduleId) {\n \t\tvar hot = {\n \t\t\t// private stuff\n \t\t\t_acceptedDependencies: {},\n \t\t\t_declinedDependencies: {},\n \t\t\t_selfAccepted: false,\n \t\t\t_selfDeclined: false,\n \t\t\t_disposeHandlers: [],\n \t\t\t_main: hotCurrentChildModule !== moduleId,\n\n \t\t\t// Module API\n \t\t\tactive: true,\n \t\t\taccept: function(dep, callback) {\n \t\t\t\tif (typeof dep === \"undefined\") hot._selfAccepted = true;\n \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n \t\t\t},\n \t\t\tdecline: function(dep) {\n \t\t\t\tif (typeof dep === \"undefined\") hot._selfDeclined = true;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n \t\t\t\telse hot._declinedDependencies[dep] = true;\n \t\t\t},\n \t\t\tdispose: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\taddDisposeHandler: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\tremoveDisposeHandler: function(callback) {\n \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t// Management API\n \t\t\tcheck: hotCheck,\n \t\t\tapply: hotApply,\n \t\t\tstatus: function(l) {\n \t\t\t\tif (!l) return hotStatus;\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\taddStatusHandler: function(l) {\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\tremoveStatusHandler: function(l) {\n \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t//inherit from previous dispose call\n \t\t\tdata: hotCurrentModuleData[moduleId]\n \t\t};\n \t\thotCurrentChildModule = undefined;\n \t\treturn hot;\n \t}\n\n \tvar hotStatusHandlers = [];\n \tvar hotStatus = \"idle\";\n\n \tfunction hotSetStatus(newStatus) {\n \t\thotStatus = newStatus;\n \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n \t\t\thotStatusHandlers[i].call(null, newStatus);\n \t}\n\n \t// while downloading\n \tvar hotWaitingFiles = 0;\n \tvar hotChunksLoading = 0;\n \tvar hotWaitingFilesMap = {};\n \tvar hotRequestedFilesMap = {};\n \tvar hotAvailableFilesMap = {};\n \tvar hotDeferred;\n\n \t// The update info\n \tvar hotUpdate, hotUpdateNewHash;\n\n \tfunction toModuleId(id) {\n \t\tvar isNumber = +id + \"\" === id;\n \t\treturn isNumber ? +id : id;\n \t}\n\n \tfunction hotCheck(apply) {\n \t\tif (hotStatus !== \"idle\")\n \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n \t\thotApplyOnUpdate = apply;\n \t\thotSetStatus(\"check\");\n \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n \t\t\tif (!update) {\n \t\t\t\thotSetStatus(\"idle\");\n \t\t\t\treturn null;\n \t\t\t}\n \t\t\thotRequestedFilesMap = {};\n \t\t\thotWaitingFilesMap = {};\n \t\t\thotAvailableFilesMap = update.c;\n \t\t\thotUpdateNewHash = update.h;\n\n \t\t\thotSetStatus(\"prepare\");\n \t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\thotDeferred = {\n \t\t\t\t\tresolve: resolve,\n \t\t\t\t\treject: reject\n \t\t\t\t};\n \t\t\t});\n \t\t\thotUpdate = {};\n \t\t\tvar chunkId = \"metrica\";\n \t\t\t{\n \t\t\t\t// eslint-disable-line no-lone-blocks\n \t\t\t\t/*globals chunkId */\n \t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t}\n \t\t\tif (\n \t\t\t\thotStatus === \"prepare\" &&\n \t\t\t\thotChunksLoading === 0 &&\n \t\t\t\thotWaitingFiles === 0\n \t\t\t) {\n \t\t\t\thotUpdateDownloaded();\n \t\t\t}\n \t\t\treturn promise;\n \t\t});\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n \t\t\treturn;\n \t\thotRequestedFilesMap[chunkId] = false;\n \t\tfor (var moduleId in moreModules) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n \t\t\thotUpdateDownloaded();\n \t\t}\n \t}\n\n \tfunction hotEnsureUpdateChunk(chunkId) {\n \t\tif (!hotAvailableFilesMap[chunkId]) {\n \t\t\thotWaitingFilesMap[chunkId] = true;\n \t\t} else {\n \t\t\thotRequestedFilesMap[chunkId] = true;\n \t\t\thotWaitingFiles++;\n \t\t\thotDownloadUpdateChunk(chunkId);\n \t\t}\n \t}\n\n \tfunction hotUpdateDownloaded() {\n \t\thotSetStatus(\"ready\");\n \t\tvar deferred = hotDeferred;\n \t\thotDeferred = null;\n \t\tif (!deferred) return;\n \t\tif (hotApplyOnUpdate) {\n \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n \t\t\t// avoid triggering uncaught exception warning in Chrome.\n \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n \t\t\tPromise.resolve()\n \t\t\t\t.then(function() {\n \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n \t\t\t\t})\n \t\t\t\t.then(\n \t\t\t\t\tfunction(result) {\n \t\t\t\t\t\tdeferred.resolve(result);\n \t\t\t\t\t},\n \t\t\t\t\tfunction(err) {\n \t\t\t\t\t\tdeferred.reject(err);\n \t\t\t\t\t}\n \t\t\t\t);\n \t\t} else {\n \t\t\tvar outdatedModules = [];\n \t\t\tfor (var id in hotUpdate) {\n \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\t\toutdatedModules.push(toModuleId(id));\n \t\t\t\t}\n \t\t\t}\n \t\t\tdeferred.resolve(outdatedModules);\n \t\t}\n \t}\n\n \tfunction hotApply(options) {\n \t\tif (hotStatus !== \"ready\")\n \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n \t\toptions = options || {};\n\n \t\tvar cb;\n \t\tvar i;\n \t\tvar j;\n \t\tvar module;\n \t\tvar moduleId;\n\n \t\tfunction getAffectedStuff(updateModuleId) {\n \t\t\tvar outdatedModules = [updateModuleId];\n \t\t\tvar outdatedDependencies = {};\n\n \t\t\tvar queue = outdatedModules.slice().map(function(id) {\n \t\t\t\treturn {\n \t\t\t\t\tchain: [id],\n \t\t\t\t\tid: id\n \t\t\t\t};\n \t\t\t});\n \t\t\twhile (queue.length > 0) {\n \t\t\t\tvar queueItem = queue.pop();\n \t\t\t\tvar moduleId = queueItem.id;\n \t\t\t\tvar chain = queueItem.chain;\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (!module || module.hot._selfAccepted) continue;\n \t\t\t\tif (module.hot._selfDeclined) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"self-declined\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tif (module.hot._main) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"unaccepted\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n \t\t\t\t\tvar parentId = module.parents[i];\n \t\t\t\t\tvar parent = installedModules[parentId];\n \t\t\t\t\tif (!parent) continue;\n \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n \t\t\t\t\t\treturn {\n \t\t\t\t\t\t\ttype: \"declined\",\n \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\tparentId: parentId\n \t\t\t\t\t\t};\n \t\t\t\t\t}\n \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n \t\t\t\t\t\tcontinue;\n \t\t\t\t\t}\n \t\t\t\t\tdelete outdatedDependencies[parentId];\n \t\t\t\t\toutdatedModules.push(parentId);\n \t\t\t\t\tqueue.push({\n \t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\tid: parentId\n \t\t\t\t\t});\n \t\t\t\t}\n \t\t\t}\n\n \t\t\treturn {\n \t\t\t\ttype: \"accepted\",\n \t\t\t\tmoduleId: updateModuleId,\n \t\t\t\toutdatedModules: outdatedModules,\n \t\t\t\toutdatedDependencies: outdatedDependencies\n \t\t\t};\n \t\t}\n\n \t\tfunction addAllToSet(a, b) {\n \t\t\tfor (var i = 0; i < b.length; i++) {\n \t\t\t\tvar item = b[i];\n \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n \t\t\t}\n \t\t}\n\n \t\t// at begin all updates modules are outdated\n \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n \t\tvar outdatedDependencies = {};\n \t\tvar outdatedModules = [];\n \t\tvar appliedUpdate = {};\n\n \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n \t\t\tconsole.warn(\n \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n \t\t\t);\n \t\t};\n\n \t\tfor (var id in hotUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\tmoduleId = toModuleId(id);\n \t\t\t\t/** @type {TODO} */\n \t\t\t\tvar result;\n \t\t\t\tif (hotUpdate[id]) {\n \t\t\t\t\tresult = getAffectedStuff(moduleId);\n \t\t\t\t} else {\n \t\t\t\t\tresult = {\n \t\t\t\t\t\ttype: \"disposed\",\n \t\t\t\t\t\tmoduleId: id\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\t/** @type {Error|false} */\n \t\t\t\tvar abortError = false;\n \t\t\t\tvar doApply = false;\n \t\t\t\tvar doDispose = false;\n \t\t\t\tvar chainInfo = \"\";\n \t\t\t\tif (result.chain) {\n \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n \t\t\t\t}\n \t\t\t\tswitch (result.type) {\n \t\t\t\t\tcase \"self-declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\t\" in \" +\n \t\t\t\t\t\t\t\t\tresult.parentId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"unaccepted\":\n \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"accepted\":\n \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n \t\t\t\t\t\tdoApply = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"disposed\":\n \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n \t\t\t\t\t\tdoDispose = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tdefault:\n \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n \t\t\t\t}\n \t\t\t\tif (abortError) {\n \t\t\t\t\thotSetStatus(\"abort\");\n \t\t\t\t\treturn Promise.reject(abortError);\n \t\t\t\t}\n \t\t\t\tif (doApply) {\n \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n \t\t\t\t\t\tif (\n \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n \t\t\t\t\t\t\t\tmoduleId\n \t\t\t\t\t\t\t)\n \t\t\t\t\t\t) {\n \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n \t\t\t\t\t\t\taddAllToSet(\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t\tif (doDispose) {\n \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Store self accepted outdated modules to require them later by the module system\n \t\tvar outdatedSelfAcceptedModules = [];\n \t\tfor (i = 0; i < outdatedModules.length; i++) {\n \t\t\tmoduleId = outdatedModules[i];\n \t\t\tif (\n \t\t\t\tinstalledModules[moduleId] &&\n \t\t\t\tinstalledModules[moduleId].hot._selfAccepted\n \t\t\t)\n \t\t\t\toutdatedSelfAcceptedModules.push({\n \t\t\t\t\tmodule: moduleId,\n \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n \t\t\t\t});\n \t\t}\n\n \t\t// Now in \"dispose\" phase\n \t\thotSetStatus(\"dispose\");\n \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n \t\t\t\thotDisposeChunk(chunkId);\n \t\t\t}\n \t\t});\n\n \t\tvar idx;\n \t\tvar queue = outdatedModules.slice();\n \t\twhile (queue.length > 0) {\n \t\t\tmoduleId = queue.pop();\n \t\t\tmodule = installedModules[moduleId];\n \t\t\tif (!module) continue;\n\n \t\t\tvar data = {};\n\n \t\t\t// Call dispose handlers\n \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n \t\t\t\tcb = disposeHandlers[j];\n \t\t\t\tcb(data);\n \t\t\t}\n \t\t\thotCurrentModuleData[moduleId] = data;\n\n \t\t\t// disable module (this disables requires from this module)\n \t\t\tmodule.hot.active = false;\n\n \t\t\t// remove module from cache\n \t\t\tdelete installedModules[moduleId];\n\n \t\t\t// when disposing there is no need to call dispose handler\n \t\t\tdelete outdatedDependencies[moduleId];\n\n \t\t\t// remove \"parents\" references from all children\n \t\t\tfor (j = 0; j < module.children.length; j++) {\n \t\t\t\tvar child = installedModules[module.children[j]];\n \t\t\t\tif (!child) continue;\n \t\t\t\tidx = child.parents.indexOf(moduleId);\n \t\t\t\tif (idx >= 0) {\n \t\t\t\t\tchild.parents.splice(idx, 1);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// remove outdated dependency from module children\n \t\tvar dependency;\n \t\tvar moduleOutdatedDependencies;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Not in \"apply\" phase\n \t\thotSetStatus(\"apply\");\n\n \t\thotCurrentHash = hotUpdateNewHash;\n\n \t\t// insert new code\n \t\tfor (moduleId in appliedUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n \t\t\t}\n \t\t}\n\n \t\t// call accept handlers\n \t\tvar error = null;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tvar callbacks = [];\n \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n \t\t\t\t\t\tif (cb) {\n \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n \t\t\t\t\t\t\tcallbacks.push(cb);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n \t\t\t\t\t\tcb = callbacks[i];\n \t\t\t\t\t\ttry {\n \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n \t\t\t\t\t\t} catch (err) {\n \t\t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n \t\t\t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t\t\t});\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Load self accepted modules\n \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n \t\t\tvar item = outdatedSelfAcceptedModules[i];\n \t\t\tmoduleId = item.module;\n \t\t\thotCurrentParents = [moduleId];\n \t\t\ttry {\n \t\t\t\t__webpack_require__(moduleId);\n \t\t\t} catch (err) {\n \t\t\t\tif (typeof item.errorHandler === \"function\") {\n \t\t\t\t\ttry {\n \t\t\t\t\t\titem.errorHandler(err);\n \t\t\t\t\t} catch (err2) {\n \t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n \t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\terror: err2,\n \t\t\t\t\t\t\t\toriginalError: err\n \t\t\t\t\t\t\t});\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\tif (!error) error = err2;\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t});\n \t\t\t\t\t}\n \t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// handle errors in accept handlers and self accepted module load\n \t\tif (error) {\n \t\t\thotSetStatus(\"fail\");\n \t\t\treturn Promise.reject(error);\n \t\t}\n\n \t\thotSetStatus(\"idle\");\n \t\treturn new Promise(function(resolve) {\n \t\t\tresolve(outdatedModules);\n \t\t});\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {},\n \t\t\thot: hotCreateModule(moduleId),\n \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n \t\t\tchildren: []\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// __webpack_hash__\n \t__webpack_require__.h = function() { return hotCurrentHash; };\n\n\n \t// Load entry module and return exports\n \treturn hotCreateRequire(\"./js/yandex_metrica.js\")(__webpack_require__.s = \"./js/yandex_metrica.js\");\n","// \r\n(function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter49443436 = new Ya.Metrika2({ id:49443436, clickmap:true, trackLinks:true, accurateTrackBounce:true, trackHash:true }); } catch(e) { } }); var n = d.getElementsByTagName(\"script\")[0], s = d.createElement(\"script\"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = \"text/javascript\"; s.async = true; s.src = \"https://mc.yandex.ru/metrika/tag.js\"; if (w.opera == \"[object Opera]\") { d.addEventListener(\"DOMContentLoaded\", f, false); } else { f(); } })(document, window, \"yandex_metrika_callbacks2\"); \r\n/* \r\n */\r\n// "],"sourceRoot":""} \ No newline at end of file diff --git a/dist/style.3abd22fd5b86b00e73a3.css b/dist/style.3abd22fd5b86b00e73a3.css deleted file mode 100644 index 2c07e3e..0000000 --- a/dist/style.3abd22fd5b86b00e73a3.css +++ /dev/null @@ -1,4082 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,400i,600,700&subset=cyrillic); -@charset "UTF-8"; - -/*! - * animate.css -http://daneden.me/animate - * Version - 3.6.0 - * Licensed under the MIT license - http://opensource.org/licenses/MIT - * - * Copyright (c) 2018 Daniel Eden - */ - -.animated { - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -.animated.infinite { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -@-webkit-keyframes bounce { - from, - 20%, - 53%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 40%, - 43% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -30px, 0); - transform: translate3d(0, -30px, 0); - } - - 70% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -15px, 0); - transform: translate3d(0, -15px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -4px, 0); - transform: translate3d(0, -4px, 0); - } -} - -@keyframes bounce { - from, - 20%, - 53%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 40%, - 43% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -30px, 0); - transform: translate3d(0, -30px, 0); - } - - 70% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - -webkit-transform: translate3d(0, -15px, 0); - transform: translate3d(0, -15px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -4px, 0); - transform: translate3d(0, -4px, 0); - } -} - -.bounce { - -webkit-animation-name: bounce; - animation-name: bounce; - -webkit-transform-origin: center bottom; - transform-origin: center bottom; -} - -@-webkit-keyframes flash { - from, - 50%, - to { - opacity: 1; - } - - 25%, - 75% { - opacity: 0; - } -} - -@keyframes flash { - from, - 50%, - to { - opacity: 1; - } - - 25%, - 75% { - opacity: 0; - } -} - -.flash { - -webkit-animation-name: flash; - animation-name: flash; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes pulse { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 50% { - -webkit-transform: scale3d(1.05, 1.05, 1.05); - transform: scale3d(1.05, 1.05, 1.05); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes pulse { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 50% { - -webkit-transform: scale3d(1.05, 1.05, 1.05); - transform: scale3d(1.05, 1.05, 1.05); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.pulse { - -webkit-animation-name: pulse; - animation-name: pulse; -} - -@-webkit-keyframes rubberBand { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 30% { - -webkit-transform: scale3d(1.25, 0.75, 1); - transform: scale3d(1.25, 0.75, 1); - } - - 40% { - -webkit-transform: scale3d(0.75, 1.25, 1); - transform: scale3d(0.75, 1.25, 1); - } - - 50% { - -webkit-transform: scale3d(1.15, 0.85, 1); - transform: scale3d(1.15, 0.85, 1); - } - - 65% { - -webkit-transform: scale3d(0.95, 1.05, 1); - transform: scale3d(0.95, 1.05, 1); - } - - 75% { - -webkit-transform: scale3d(1.05, 0.95, 1); - transform: scale3d(1.05, 0.95, 1); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes rubberBand { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 30% { - -webkit-transform: scale3d(1.25, 0.75, 1); - transform: scale3d(1.25, 0.75, 1); - } - - 40% { - -webkit-transform: scale3d(0.75, 1.25, 1); - transform: scale3d(0.75, 1.25, 1); - } - - 50% { - -webkit-transform: scale3d(1.15, 0.85, 1); - transform: scale3d(1.15, 0.85, 1); - } - - 65% { - -webkit-transform: scale3d(0.95, 1.05, 1); - transform: scale3d(0.95, 1.05, 1); - } - - 75% { - -webkit-transform: scale3d(1.05, 0.95, 1); - transform: scale3d(1.05, 0.95, 1); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.rubberBand { - -webkit-animation-name: rubberBand; - animation-name: rubberBand; -} - -@-webkit-keyframes shake { - from, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, - 30%, - 50%, - 70%, - 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, - 40%, - 60%, - 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -@keyframes shake { - from, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, - 30%, - 50%, - 70%, - 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, - 40%, - 60%, - 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -.shake { - -webkit-animation-name: shake; - animation-name: shake; -} - -@-webkit-keyframes headShake { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 6.5% { - -webkit-transform: translateX(-6px) rotateY(-9deg); - transform: translateX(-6px) rotateY(-9deg); - } - - 18.5% { - -webkit-transform: translateX(5px) rotateY(7deg); - transform: translateX(5px) rotateY(7deg); - } - - 31.5% { - -webkit-transform: translateX(-3px) rotateY(-5deg); - transform: translateX(-3px) rotateY(-5deg); - } - - 43.5% { - -webkit-transform: translateX(2px) rotateY(3deg); - transform: translateX(2px) rotateY(3deg); - } - - 50% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes headShake { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 6.5% { - -webkit-transform: translateX(-6px) rotateY(-9deg); - transform: translateX(-6px) rotateY(-9deg); - } - - 18.5% { - -webkit-transform: translateX(5px) rotateY(7deg); - transform: translateX(5px) rotateY(7deg); - } - - 31.5% { - -webkit-transform: translateX(-3px) rotateY(-5deg); - transform: translateX(-3px) rotateY(-5deg); - } - - 43.5% { - -webkit-transform: translateX(2px) rotateY(3deg); - transform: translateX(2px) rotateY(3deg); - } - - 50% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -.headShake { - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-name: headShake; - animation-name: headShake; -} - -@-webkit-keyframes swing { - 20% { - -webkit-transform: rotate3d(0, 0, 1, 15deg); - transform: rotate3d(0, 0, 1, 15deg); - } - - 40% { - -webkit-transform: rotate3d(0, 0, 1, -10deg); - transform: rotate3d(0, 0, 1, -10deg); - } - - 60% { - -webkit-transform: rotate3d(0, 0, 1, 5deg); - transform: rotate3d(0, 0, 1, 5deg); - } - - 80% { - -webkit-transform: rotate3d(0, 0, 1, -5deg); - transform: rotate3d(0, 0, 1, -5deg); - } - - to { - -webkit-transform: rotate3d(0, 0, 1, 0deg); - transform: rotate3d(0, 0, 1, 0deg); - } -} - -@keyframes swing { - 20% { - -webkit-transform: rotate3d(0, 0, 1, 15deg); - transform: rotate3d(0, 0, 1, 15deg); - } - - 40% { - -webkit-transform: rotate3d(0, 0, 1, -10deg); - transform: rotate3d(0, 0, 1, -10deg); - } - - 60% { - -webkit-transform: rotate3d(0, 0, 1, 5deg); - transform: rotate3d(0, 0, 1, 5deg); - } - - 80% { - -webkit-transform: rotate3d(0, 0, 1, -5deg); - transform: rotate3d(0, 0, 1, -5deg); - } - - to { - -webkit-transform: rotate3d(0, 0, 1, 0deg); - transform: rotate3d(0, 0, 1, 0deg); - } -} - -.swing { - -webkit-transform-origin: top center; - transform-origin: top center; - -webkit-animation-name: swing; - animation-name: swing; -} - -@-webkit-keyframes tada { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 10%, - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - } - - 30%, - 50%, - 70%, - 90% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - } - - 40%, - 60%, - 80% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes tada { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 10%, - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); - } - - 30%, - 50%, - 70%, - 90% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - } - - 40%, - 60%, - 80% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.tada { - -webkit-animation-name: tada; - animation-name: tada; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes wobble { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 15% { - -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - } - - 30% { - -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - } - - 45% { - -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - } - - 60% { - -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - } - - 75% { - -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes wobble { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 15% { - -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - } - - 30% { - -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - } - - 45% { - -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - } - - 60% { - -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - } - - 75% { - -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.wobble { - -webkit-animation-name: wobble; - animation-name: wobble; -} - -@-webkit-keyframes jello { - from, - 11.1%, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 22.2% { - -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); - transform: skewX(-12.5deg) skewY(-12.5deg); - } - - 33.3% { - -webkit-transform: skewX(6.25deg) skewY(6.25deg); - transform: skewX(6.25deg) skewY(6.25deg); - } - - 44.4% { - -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); - transform: skewX(-3.125deg) skewY(-3.125deg); - } - - 55.5% { - -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); - transform: skewX(1.5625deg) skewY(1.5625deg); - } - - 66.6% { - -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); - transform: skewX(-0.78125deg) skewY(-0.78125deg); - } - - 77.7% { - -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); - transform: skewX(0.390625deg) skewY(0.390625deg); - } - - 88.8% { - -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - } -} - -@keyframes jello { - from, - 11.1%, - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 22.2% { - -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); - transform: skewX(-12.5deg) skewY(-12.5deg); - } - - 33.3% { - -webkit-transform: skewX(6.25deg) skewY(6.25deg); - transform: skewX(6.25deg) skewY(6.25deg); - } - - 44.4% { - -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); - transform: skewX(-3.125deg) skewY(-3.125deg); - } - - 55.5% { - -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); - transform: skewX(1.5625deg) skewY(1.5625deg); - } - - 66.6% { - -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); - transform: skewX(-0.78125deg) skewY(-0.78125deg); - } - - 77.7% { - -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); - transform: skewX(0.390625deg) skewY(0.390625deg); - } - - 88.8% { - -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - } -} - -.jello { - -webkit-animation-name: jello; - animation-name: jello; - -webkit-transform-origin: center; - transform-origin: center; -} - -@-webkit-keyframes bounceIn { - from, - 20%, - 40%, - 60%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 20% { - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 40% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03); - } - - 80% { - -webkit-transform: scale3d(0.97, 0.97, 0.97); - transform: scale3d(0.97, 0.97, 0.97); - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes bounceIn { - from, - 20%, - 40%, - 60%, - 80%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 20% { - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 40% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03); - } - - 80% { - -webkit-transform: scale3d(0.97, 0.97, 0.97); - transform: scale3d(0.97, 0.97, 0.97); - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.bounceIn { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-name: bounceIn; - animation-name: bounceIn; -} - -@-webkit-keyframes bounceInDown { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -3000px, 0); - transform: translate3d(0, -3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, 25px, 0); - transform: translate3d(0, 25px, 0); - } - - 75% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, 5px, 0); - transform: translate3d(0, 5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInDown { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -3000px, 0); - transform: translate3d(0, -3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, 25px, 0); - transform: translate3d(0, 25px, 0); - } - - 75% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, 5px, 0); - transform: translate3d(0, 5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInDown { - -webkit-animation-name: bounceInDown; - animation-name: bounceInDown; -} - -@-webkit-keyframes bounceInLeft { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(-3000px, 0, 0); - transform: translate3d(-3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(25px, 0, 0); - transform: translate3d(25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(5px, 0, 0); - transform: translate3d(5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInLeft { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(-3000px, 0, 0); - transform: translate3d(-3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(25px, 0, 0); - transform: translate3d(25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(5px, 0, 0); - transform: translate3d(5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInLeft { - -webkit-animation-name: bounceInLeft; - animation-name: bounceInLeft; -} - -@-webkit-keyframes bounceInRight { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(3000px, 0, 0); - transform: translate3d(3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(-25px, 0, 0); - transform: translate3d(-25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(-5px, 0, 0); - transform: translate3d(-5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInRight { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(3000px, 0, 0); - transform: translate3d(3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(-25px, 0, 0); - transform: translate3d(-25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(-5px, 0, 0); - transform: translate3d(-5px, 0, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInRight { - -webkit-animation-name: bounceInRight; - animation-name: bounceInRight; -} - -@-webkit-keyframes bounceInUp { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(0, 3000px, 0); - transform: translate3d(0, 3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 75% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -5px, 0); - transform: translate3d(0, -5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInUp { - from, - 60%, - 75%, - 90%, - to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - - from { - opacity: 0; - -webkit-transform: translate3d(0, 3000px, 0); - transform: translate3d(0, 3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 75% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -5px, 0); - transform: translate3d(0, -5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInUp { - -webkit-animation-name: bounceInUp; - animation-name: bounceInUp; -} - -@-webkit-keyframes bounceOut { - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 50%, - 55% { - opacity: 1; - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } -} - -@keyframes bounceOut { - 20% { - -webkit-transform: scale3d(0.9, 0.9, 0.9); - transform: scale3d(0.9, 0.9, 0.9); - } - - 50%, - 55% { - opacity: 1; - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } -} - -.bounceOut { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-name: bounceOut; - animation-name: bounceOut; -} - -@-webkit-keyframes bounceOutDown { - 20% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -@keyframes bounceOutDown { - 20% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -.bounceOutDown { - -webkit-animation-name: bounceOutDown; - animation-name: bounceOutDown; -} - -@-webkit-keyframes bounceOutLeft { - 20% { - opacity: 1; - -webkit-transform: translate3d(20px, 0, 0); - transform: translate3d(20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -@keyframes bounceOutLeft { - 20% { - opacity: 1; - -webkit-transform: translate3d(20px, 0, 0); - transform: translate3d(20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -.bounceOutLeft { - -webkit-animation-name: bounceOutLeft; - animation-name: bounceOutLeft; -} - -@-webkit-keyframes bounceOutRight { - 20% { - opacity: 1; - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -@keyframes bounceOutRight { - 20% { - opacity: 1; - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -.bounceOutRight { - -webkit-animation-name: bounceOutRight; - animation-name: bounceOutRight; -} - -@-webkit-keyframes bounceOutUp { - 20% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, 20px, 0); - transform: translate3d(0, 20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -@keyframes bounceOutUp { - 20% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 40%, - 45% { - opacity: 1; - -webkit-transform: translate3d(0, 20px, 0); - transform: translate3d(0, 20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -.bounceOutUp { - -webkit-animation-name: bounceOutUp; - animation-name: bounceOutUp; -} - -@-webkit-keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -@keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -.fadeIn { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} - -@-webkit-keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInDown { - -webkit-animation-name: fadeInDown; - animation-name: fadeInDown; -} - -@-webkit-keyframes fadeInDownBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInDownBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInDownBig { - -webkit-animation-name: fadeInDownBig; - animation-name: fadeInDownBig; -} - -@-webkit-keyframes fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInLeft { - -webkit-animation-name: fadeInLeft; - animation-name: fadeInLeft; -} - -@-webkit-keyframes fadeInLeftBig { - from { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInLeftBig { - from { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInLeftBig { - -webkit-animation-name: fadeInLeftBig; - animation-name: fadeInLeftBig; -} - -@-webkit-keyframes fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInRight { - -webkit-animation-name: fadeInRight; - animation-name: fadeInRight; -} - -@-webkit-keyframes fadeInRightBig { - from { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInRightBig { - from { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInRightBig { - -webkit-animation-name: fadeInRightBig; - animation-name: fadeInRightBig; -} - -@-webkit-keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInUp { - -webkit-animation-name: fadeInUp; - animation-name: fadeInUp; -} - -@-webkit-keyframes fadeInUpBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes fadeInUpBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.fadeInUpBig { - -webkit-animation-name: fadeInUpBig; - animation-name: fadeInUpBig; -} - -@-webkit-keyframes fadeOut { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - -@keyframes fadeOut { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - -.fadeOut { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} - -@-webkit-keyframes fadeOutDown { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes fadeOutDown { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -.fadeOutDown { - -webkit-animation-name: fadeOutDown; - animation-name: fadeOutDown; -} - -@-webkit-keyframes fadeOutDownBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -@keyframes fadeOutDownBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -.fadeOutDownBig { - -webkit-animation-name: fadeOutDownBig; - animation-name: fadeOutDownBig; -} - -@-webkit-keyframes fadeOutLeft { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes fadeOutLeft { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -.fadeOutLeft { - -webkit-animation-name: fadeOutLeft; - animation-name: fadeOutLeft; -} - -@-webkit-keyframes fadeOutLeftBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -@keyframes fadeOutLeftBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -.fadeOutLeftBig { - -webkit-animation-name: fadeOutLeftBig; - animation-name: fadeOutLeftBig; -} - -@-webkit-keyframes fadeOutRight { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -@keyframes fadeOutRight { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -.fadeOutRight { - -webkit-animation-name: fadeOutRight; - animation-name: fadeOutRight; -} - -@-webkit-keyframes fadeOutRightBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -@keyframes fadeOutRightBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -.fadeOutRightBig { - -webkit-animation-name: fadeOutRightBig; - animation-name: fadeOutRightBig; -} - -@-webkit-keyframes fadeOutUp { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes fadeOutUp { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.fadeOutUp { - -webkit-animation-name: fadeOutUp; - animation-name: fadeOutUp; -} - -@-webkit-keyframes fadeOutUpBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -@keyframes fadeOutUpBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -.fadeOutUpBig { - -webkit-animation-name: fadeOutUpBig; - animation-name: fadeOutUpBig; -} - -@-webkit-keyframes flip { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -@keyframes flip { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - transform: perspective(400px) scale3d(0.95, 0.95, 0.95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -.animated.flip { - -webkit-backface-visibility: visible; - backface-visibility: visible; - -webkit-animation-name: flip; - animation-name: flip; -} - -@-webkit-keyframes flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@keyframes flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -.flipInX { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInX; - animation-name: flipInX; -} - -@-webkit-keyframes flipInY { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@keyframes flipInY { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -.flipInY { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInY; - animation-name: flipInY; -} - -@-webkit-keyframes flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -@keyframes flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -.flipOutX { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-name: flipOutX; - animation-name: flipOutX; - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; -} - -@-webkit-keyframes flipOutY { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - opacity: 0; - } -} - -@keyframes flipOutY { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - opacity: 0; - } -} - -.flipOutY { - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipOutY; - animation-name: flipOutY; -} - -@-webkit-keyframes lightSpeedIn { - from { - -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); - transform: translate3d(100%, 0, 0) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: skewX(20deg); - transform: skewX(20deg); - opacity: 1; - } - - 80% { - -webkit-transform: skewX(-5deg); - transform: skewX(-5deg); - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes lightSpeedIn { - from { - -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); - transform: translate3d(100%, 0, 0) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: skewX(20deg); - transform: skewX(20deg); - opacity: 1; - } - - 80% { - -webkit-transform: skewX(-5deg); - transform: skewX(-5deg); - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.lightSpeedIn { - -webkit-animation-name: lightSpeedIn; - animation-name: lightSpeedIn; - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; -} - -@-webkit-keyframes lightSpeedOut { - from { - opacity: 1; - } - - to { - -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); - transform: translate3d(100%, 0, 0) skewX(30deg); - opacity: 0; - } -} - -@keyframes lightSpeedOut { - from { - opacity: 1; - } - - to { - -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); - transform: translate3d(100%, 0, 0) skewX(30deg); - opacity: 0; - } -} - -.lightSpeedOut { - -webkit-animation-name: lightSpeedOut; - animation-name: lightSpeedOut; - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; -} - -@-webkit-keyframes rotateIn { - from { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, -200deg); - transform: rotate3d(0, 0, 1, -200deg); - opacity: 0; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateIn { - from { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, -200deg); - transform: rotate3d(0, 0, 1, -200deg); - opacity: 0; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateIn { - -webkit-animation-name: rotateIn; - animation-name: rotateIn; -} - -@-webkit-keyframes rotateInDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInDownLeft { - -webkit-animation-name: rotateInDownLeft; - animation-name: rotateInDownLeft; -} - -@-webkit-keyframes rotateInDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInDownRight { - -webkit-animation-name: rotateInDownRight; - animation-name: rotateInDownRight; -} - -@-webkit-keyframes rotateInUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInUpLeft { - -webkit-animation-name: rotateInUpLeft; - animation-name: rotateInUpLeft; -} - -@-webkit-keyframes rotateInUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -90deg); - transform: rotate3d(0, 0, 1, -90deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes rotateInUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -90deg); - transform: rotate3d(0, 0, 1, -90deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -.rotateInUpRight { - -webkit-animation-name: rotateInUpRight; - animation-name: rotateInUpRight; -} - -@-webkit-keyframes rotateOut { - from { - -webkit-transform-origin: center; - transform-origin: center; - opacity: 1; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, 200deg); - transform: rotate3d(0, 0, 1, 200deg); - opacity: 0; - } -} - -@keyframes rotateOut { - from { - -webkit-transform-origin: center; - transform-origin: center; - opacity: 1; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, 200deg); - transform: rotate3d(0, 0, 1, 200deg); - opacity: 0; - } -} - -.rotateOut { - -webkit-animation-name: rotateOut; - animation-name: rotateOut; -} - -@-webkit-keyframes rotateOutDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } -} - -@keyframes rotateOutDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } -} - -.rotateOutDownLeft { - -webkit-animation-name: rotateOutDownLeft; - animation-name: rotateOutDownLeft; -} - -@-webkit-keyframes rotateOutDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -@keyframes rotateOutDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -.rotateOutDownRight { - -webkit-animation-name: rotateOutDownRight; - animation-name: rotateOutDownRight; -} - -@-webkit-keyframes rotateOutUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -@keyframes rotateOutUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -.rotateOutUpLeft { - -webkit-animation-name: rotateOutUpLeft; - animation-name: rotateOutUpLeft; -} - -@-webkit-keyframes rotateOutUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 90deg); - transform: rotate3d(0, 0, 1, 90deg); - opacity: 0; - } -} - -@keyframes rotateOutUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 90deg); - transform: rotate3d(0, 0, 1, 90deg); - opacity: 0; - } -} - -.rotateOutUpRight { - -webkit-animation-name: rotateOutUpRight; - animation-name: rotateOutUpRight; -} - -@-webkit-keyframes hinge { - 0% { - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, - 60% { - -webkit-transform: rotate3d(0, 0, 1, 80deg); - transform: rotate3d(0, 0, 1, 80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40%, - 80% { - -webkit-transform: rotate3d(0, 0, 1, 60deg); - transform: rotate3d(0, 0, 1, 60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 700px, 0); - transform: translate3d(0, 700px, 0); - opacity: 0; - } -} - -@keyframes hinge { - 0% { - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, - 60% { - -webkit-transform: rotate3d(0, 0, 1, 80deg); - transform: rotate3d(0, 0, 1, 80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40%, - 80% { - -webkit-transform: rotate3d(0, 0, 1, 60deg); - transform: rotate3d(0, 0, 1, 60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 700px, 0); - transform: translate3d(0, 700px, 0); - opacity: 0; - } -} - -.hinge { - -webkit-animation-duration: 2s; - animation-duration: 2s; - -webkit-animation-name: hinge; - animation-name: hinge; -} - -@-webkit-keyframes jackInTheBox { - from { - opacity: 0; - -webkit-transform: scale(0.1) rotate(30deg); - transform: scale(0.1) rotate(30deg); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - } - - 50% { - -webkit-transform: rotate(-10deg); - transform: rotate(-10deg); - } - - 70% { - -webkit-transform: rotate(3deg); - transform: rotate(3deg); - } - - to { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes jackInTheBox { - from { - opacity: 0; - -webkit-transform: scale(0.1) rotate(30deg); - transform: scale(0.1) rotate(30deg); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - } - - 50% { - -webkit-transform: rotate(-10deg); - transform: rotate(-10deg); - } - - 70% { - -webkit-transform: rotate(3deg); - transform: rotate(3deg); - } - - to { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); - } -} - -.jackInTheBox { - -webkit-animation-name: jackInTheBox; - animation-name: jackInTheBox; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollIn { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes rollIn { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - } - - to { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.rollIn { - -webkit-animation-name: rollIn; - animation-name: rollIn; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollOut { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - } -} - -@keyframes rollOut { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - } -} - -.rollOut { - -webkit-animation-name: rollOut; - animation-name: rollOut; -} - -@-webkit-keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 50% { - opacity: 1; - } -} - -@keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - 50% { - opacity: 1; - } -} - -.zoomIn { - -webkit-animation-name: zoomIn; - animation-name: zoomIn; -} - -@-webkit-keyframes zoomInDown { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInDown { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInDown { - -webkit-animation-name: zoomInDown; - animation-name: zoomInDown; -} - -@-webkit-keyframes zoomInLeft { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInLeft { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInLeft { - -webkit-animation-name: zoomInLeft; - animation-name: zoomInLeft; -} - -@-webkit-keyframes zoomInRight { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInRight { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInRight { - -webkit-animation-name: zoomInRight; - animation-name: zoomInRight; -} - -@-webkit-keyframes zoomInUp { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomInUp { - from { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomInUp { - -webkit-animation-name: zoomInUp; - animation-name: zoomInUp; -} - -@-webkit-keyframes zoomOut { - from { - opacity: 1; - } - - 50% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - to { - opacity: 0; - } -} - -@keyframes zoomOut { - from { - opacity: 1; - } - - 50% { - opacity: 0; - -webkit-transform: scale3d(0.3, 0.3, 0.3); - transform: scale3d(0.3, 0.3, 0.3); - } - - to { - opacity: 0; - } -} - -.zoomOut { - -webkit-animation-name: zoomOut; - animation-name: zoomOut; -} - -@-webkit-keyframes zoomOutDown { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomOutDown { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomOutDown { - -webkit-animation-name: zoomOutDown; - animation-name: zoomOutDown; -} - -@-webkit-keyframes zoomOutLeft { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); - transform: scale(0.1) translate3d(-2000px, 0, 0); - -webkit-transform-origin: left center; - transform-origin: left center; - } -} - -@keyframes zoomOutLeft { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); - transform: scale(0.1) translate3d(-2000px, 0, 0); - -webkit-transform-origin: left center; - transform-origin: left center; - } -} - -.zoomOutLeft { - -webkit-animation-name: zoomOutLeft; - animation-name: zoomOutLeft; -} - -@-webkit-keyframes zoomOutRight { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); - transform: scale(0.1) translate3d(2000px, 0, 0); - -webkit-transform-origin: right center; - transform-origin: right center; - } -} - -@keyframes zoomOutRight { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); - transform: scale(0.1) translate3d(2000px, 0, 0); - -webkit-transform-origin: right center; - transform-origin: right center; - } -} - -.zoomOutRight { - -webkit-animation-name: zoomOutRight; - animation-name: zoomOutRight; -} - -@-webkit-keyframes zoomOutUp { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -@keyframes zoomOutUp { - 40% { - opacity: 1; - -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); - } - - to { - opacity: 0; - -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); - } -} - -.zoomOutUp { - -webkit-animation-name: zoomOutUp; - animation-name: zoomOutUp; -} - -@-webkit-keyframes slideInDown { - from { - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInDown { - from { - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInDown { - -webkit-animation-name: slideInDown; - animation-name: slideInDown; -} - -@-webkit-keyframes slideInLeft { - from { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInLeft { - from { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInLeft { - -webkit-animation-name: slideInLeft; - animation-name: slideInLeft; -} - -@-webkit-keyframes slideInRight { - from { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInRight { - from { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInRight { - -webkit-animation-name: slideInRight; - animation-name: slideInRight; -} - -@-webkit-keyframes slideInUp { - from { - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInUp { - from { - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInUp { - -webkit-animation-name: slideInUp; - animation-name: slideInUp; -} - -@-webkit-keyframes slideOutDown { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes slideOutDown { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -.slideOutDown { - -webkit-animation-name: slideOutDown; - animation-name: slideOutDown; -} - -@-webkit-keyframes slideOutLeft { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes slideOutLeft { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -.slideOutLeft { - -webkit-animation-name: slideOutLeft; - animation-name: slideOutLeft; -} - -@-webkit-keyframes slideOutRight { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -@keyframes slideOutRight { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -.slideOutRight { - -webkit-animation-name: slideOutRight; - animation-name: slideOutRight; -} - -@-webkit-keyframes slideOutUp { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes slideOutUp { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.slideOutUp { - -webkit-animation-name: slideOutUp; - animation-name: slideOutUp; -} - -body { - font-family: 'Open Sans', sans-serif; -} - -.main_display { - text-transform: uppercase; -} - - - -.parallax-window { - min-height: 100vh; - background-color: transparent; - text-align: center; - /* background-image: url('../image/main_picture.jpg'); */ - background-size: cover; - background-repeat: no-repeat; - background-position: center center; -} - -section { - margin-bottom: 15px; -} - -img { - max-width: 100%; -} - -h2 { - margin-bottom: 30px; -} - -header.main_display { - margin-bottom: 10px; -} -header.main_display .nav-menu { - position: fixed; - z-index: 50; - right: 0; - top: 0; - transition: background-color 1s; - width: 100%; -} -header.main_display .nav-menu.show { - height: 100%; - background-color: rgba(0, 0, 0, 0.8); -} -header.main_display .nav-menu button { - background-color: #343a40; - margin-left: auto; - margin-right: 1rem; - margin-top: 1rem; -} -header.main_display .nav-menu button .lines { - width: 30px; - height: 30px; - padding: 3px 0; - justify-content: space-between; - align-items: center; -} -header.main_display .nav-menu button .lines .line { - width: 30px; - height: 2px; - background-color: #9A9DA0; - transition: opacity 0.5s, -webkit-transform 0.5s; - transition: opacity .5s, -webkit-transform .5s; - transition: transform .5s, opacity .5s; - transition: transform .5s, opacity .5s, -webkit-transform .5s; - transition: transform 0.5s, opacity 0.5s, -webkit-transform 0.5s; -} -header.main_display .nav-menu button .lines .line-first.x { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: translateY(11px) rotate(45deg); - transform: translateY(11px) rotate(45deg); -} -header.main_display .nav-menu button .lines .line-second.x { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); -} -header.main_display .nav-menu button .lines .line-third.x { - -webkit-transform: translateY(-11px); - transform: translateY(-11px); - opacity: 0; -} -header.main_display .nav-menu .navbar ul { - position: relative; -} -header.main_display .nav-menu .navbar ul li { - transition: all .3s; -} -header.main_display .nav-menu .navbar ul li a { - color: white; - display: block; - text-transform: uppercase; - font-size: 1rem; - letter-spacing: 5px; - position: relative; - height: 60px; - outline: none; - transition: color .5s; -} -header.main_display .nav-menu .navbar ul li:hover { - background-color: rgba(0, 0, 0, 0.3); -} -header.main_display .nav-menu .navbar ul li:hover a { - color: #f13a19; - /* @redIconsColor; */ -} -header.main_display .nav-menu .navbar ul li.background { - width: 200px; - margin: auto; -} -header.main_display p { - letter-spacing: 5px; - font-weight: bold; - font-size: 15px; -} -header.main_display p.logo-line { - -webkit-transform: translateX(-2rem); - transform: translateX(-2rem); -} -header.main_display p img { - display: inline-block; - height: 5.5rem; - width: auto; -} -header.main_display .middle { - max-width: 80%; - margin: 0 auto; - background-color: rgba(255, 255, 255, 0.6); -} -header.main_display .middle h1 { - font-size: 1.8rem; - font-weight: 600; - color: #072704; -} -header.main_display .middle .skills { - font-size: 1rem; -} -header.main_display .empty { - height: 10rem; -} -main { - padding: 15px; -} -main .about_me { - margin-bottom: 100px; -} -main .about_me h4 { - color: #072704; - margin-bottom: 25px; -} -main .about_me .header { - text-align: center; -} -main .about_me .header div { - letter-spacing: 4px; - font-size: 1.2em; -} -main .about_me .header .underline { - line-height: 3rem; - border-bottom: 2px solid #000000; - width: 60%; - margin: auto; - padding: 12px; -} -main .about_me div { - color: #222; -} -main .about_me div.description .article .skills { - margin-bottom: -23px; -} -main .about_me div.description .article .skills span { - margin: 0 3px 0 2px ; - font-size: 6px; -} -main .about_me div.description .article .skills span i { - -webkit-transform: translateY(-4px); - transform: translateY(-4px); -} -main .about_me div .photo .wrapper_photo { - border-radius: 50%; - border: 1px solid black; - overflow: hidden; - max-height: 300px; - max-width: 300px; -} -main .about_me div .personal span { - margin-right: 0.6em; -} -main .about_me div .personal div { - margin-bottom: 10px; -} -main .about_me div .personal div.name { - margin-bottom: 15px; - color: #555; - letter-spacing: 2px; - font-size: 1.2em; -} -main .about_me div .personal div.skype span { - color: #00AFF0; - font-size: 1.3em; -} -main .about_me div .personal div.skype span i { - -webkit-transform: translateY(2px); - transform: translateY(2px); -} -main .about_me div .personal div.e-mail span { - color: #00AFF0; - font-size: 1.3em; -} -main .about_me div .personal div.e-mail span i { - -webkit-transform: translateY(2px); - transform: translateY(2px); -} -main .about_me div .personal div.my_site a { - color: inherit; - text-decoration: underline; -} -main .about_me div .personal div.my_site span.html { - color: #FF6347; - font-size: 1.3em; -} -main .about_me div .personal div.my_site span.html i { - -webkit-transform: translateY(2px); - transform: translateY(2px); -} -main .about_me div .personal div.my_site span.hand { - color: #00AFF0; - font-size: 1.3em; -} -main .about_me div .personal div.my_site span.hand i { - -webkit-transform: translate(-104px, 21px); - transform: translate(-104px, 21px); -} -main .resume { - margin-bottom: 150px; -} -main .resume .header { - text-align: center; -} -main .resume .header div { - letter-spacing: 4px; - font-size: 1.2em; -} -main .resume .header div.education { - text-align: justify; -} -main .resume .header .underline { - line-height: 3rem; - border-bottom: 2px solid #000000; - width: 60%; - margin: auto; - padding: 12px; -} -main .resume h2 { - text-align: center; -} -main .resume .subheader { - text-align: center; - font-size: 14px; - display: inline-block; - background-color: #FF6347; - color: white; - font-weight: 600; - font-style: italic; - padding: 0 15px; - margin: 3rem 0; -} -main .resume .ico { - text-align: center; - margin: 25px 0; -} -main .resume .ico i { - color: #00AFF0; -} -main .portfolio { - background-color: #222; - padding-top: 50px; -} -main .portfolio .last-card { - margin-bottom: 8rem; -} -main .portfolio .card { - position: relative; - overflow: hidden; - color: white; - background-color: rgba(0, 0, 0, 0.8); - text-align: center; - box-shadow: 0 0 0 rgba(0, 0, 0, 0); - transition: box-shadow 0.3s; -} -main .portfolio .card .card-body { - position: absolute; - background-color: rgba(0, 0, 0, 0.6); - width: 100%; - height: 100%; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - opacity: 1; - transition: opacity .3s; -} -main .portfolio .card .card-body .card-title { - text-transform: uppercase; - font-size: 1rem; - margin-bottom: 1rem; - color: #FF6347; -} -main .portfolio .card .card-body .wrapper { - transition: -webkit-transform 0.3s; - transition: -webkit-transform .3s; - transition: transform .3s; - transition: transform .3s, -webkit-transform .3s; - transition: transform 0.3s, -webkit-transform 0.3s; -} -main .portfolio .card .card-body-2 { - position: absolute; - justify-content: center; - align-items: center; - top: 0; - bottom: 0; - left: 0; - right: 0; -} -main .portfolio .card .card-body-2 .card-look { - display: inline-block; - opacity: 0; - color: white; - -webkit-transform: translateY(-100px); - transform: translateY(-100px); - transition: opacity 0.3s, color 0.3s, -webkit-transform 0.3s; - transition: opacity .3s, color .3s, -webkit-transform .3s; - transition: opacity .3s, color .3s, transform .3s; - transition: opacity .3s, color .3s, transform .3s, -webkit-transform .3s; - transition: opacity 0.3s, color 0.3s, transform 0.3s, -webkit-transform 0.3s; - border: 3px solid #FF6347; - padding: 5px 20px; -} -main .portfolio .card .card-img-top { - opacity: .7; - -webkit-transform: scale(1.2, 1.2); - transform: scale(1.2, 1.2); - transition: -webkit-transform 0.3s; - transition: -webkit-transform .3s; - transition: transform .3s; - transition: transform .3s, -webkit-transform .3s; - transition: transform 0.3s, -webkit-transform 0.3s; -} -main .portfolio .card:hover { - cursor: pointer; - box-shadow: 0 0 30px rgba(0, 0, 0, 0.9); -} -main .portfolio .card:hover .card-body { - opacity: 0; -} -main .portfolio .card:hover .card-body .wrapper { - -webkit-transform: translateY(100px); - transform: translateY(100px); -} -main .portfolio .card:hover .card-img-top { - -webkit-transform: scale(1, 1); - transform: scale(1, 1); -} -main .portfolio .card:hover .card-look { - opacity: 1; - color: white; - -webkit-transform: translateY(0); - transform: translateY(0); -} -main .portfolio img { - width: 100%; - height: auto; -} -main .portfolio .header { - text-align: center; - color: white; -} -main .portfolio .header h2 { - padding: 5px 25px; - margin-left: auto; - margin-right: auto; -} -main .portfolio .header div { - max-width: 85%; - margin: auto; - letter-spacing: 4px; - font-size: 1.2em; -} -footer .contacts .header { - text-align: center; -} -footer .contacts .header div { - letter-spacing: 4px; - font-size: 1.2em; -} -footer .contacts .header .underline { - line-height: 3rem; - border-bottom: 2px solid #000000; - width: 60%; - margin: auto; - padding: 12px; -} -footer .contacts .item { - text-align: center; - margin-bottom: 2rem; -} -footer .contacts .item .ico { - margin-bottom: 1rem; -} -footer .contacts .item .ico span i { - color: #00AFF0; -} -footer .copyright { - background-color: #222; - color: white; - margin-bottom: 0; -} -footer .copyright i { - color: #FF6347; - cursor: pointer; -} -@media only screen and (max-width: 992px) { - .description, - .photo, - .personal { - margin-bottom: 40px; - } -} -@media only screen and (max-width: 576px) { - h2 { - box-shadow: 0 11px 0 white, 0 20px 20px black; - } - .portfolio h2 { - box-shadow: 0 11px 0 #222, 0 20px 20px white; - } -} -@media only screen and (max-width: 480px) { - h2 { - margin-bottom: 100px; - } - .personal { - margin-bottom: 15px; - } -} -/* #1ee30b; */ -h3 { - text-align: center; -} - -.middle.animated { - -webkit-animation-duration: 1.5s; - animation-duration: 1.5s; -} -.animated.fadeInRight, -.animated.fadeInLeft { - -webkit-animation-duration: 1s; - animation-duration: 1s; -} -.navbar-nav .nav-item.item-4 { - -webkit-animation-duration: 1.6s; - animation-duration: 1.6s; -} -.navbar-nav .nav-item.item-3 { - -webkit-animation-duration: 1.2s; - animation-duration: 1.2s; -} -.navbar-nav .nav-item.item-2 { - -webkit-animation-duration: 0.8s; - animation-duration: 0.8s; -} -.navbar-nav .nav-item.item-1 { - -webkit-animation-duration: 0.4s; - animation-duration: 0.4s; -} - - -/* Large Devices, Wide Screens */ -@media only screen and (max-width : 1200px) { - main .about_me div .personal div.my_site span.hand i { - transform: translate(183px, -11px); - } - - header.main_display h1 { - font-size: 1.5rem; - } - - - header.main_display, - section.about_me{ - margin-bottom: 35px; - } - - header p.web_html, - header p.skills { - font-size: 14px ! important; - } - - header p.web_html { - margin-bottom: 9px; - } -} - - -@media only screen and (max-width : 954px) { - header.main_display .middle .skills{ - display: none; - } -} - - - -/* Medium Devices, Desktops */ -@media only screen and (max-width : 992px) { - - main .about_me div .personal div.my_site span.hand i { - transform: translate(-104px, 19px); - } - - footer .contacts .header h1 { - margin-bottom: 70px; - } - - main .portfolio .card .card-body .card-title { - font-size: 0.8rem; - } -} - -/* Small Devices, Tablets */ -@media only screen and (max-width : 768px) { - main .portfolio .card .card-body .card-title { - font-size: 0.7rem; - } - - main .portfolio { - padding-top: 50px; - } - - main .portfolio .header div { - font-size: 1rem; - } - - main .portfolio .header h1 { - margin-bottom: 47px; - } - -} - - -/* Small Devices, Tablets */ -@media only screen and (max-width : 576px) { - #portfolio__ .row.mb-sm-5 { - padding-left: 60px; - padding-right: 60px; - } - - main .portfolio .last-card { - margin-bottom: 4rem; - } - -} - -@media only screen and (max-width : 544px) { - main .portfolio .header div { - font-size: 0.8rem; - } -} - - -/* Extra Small Devices, Phones */ -@media only screen and (max-width : 480px) { - header.main_display p img { - transform: translateX(-106px) !important; - } - - h1{ - font-size: 1.7rem !important; - } -} - - -/*# sourceMappingURL=style.3abd22fd5b86b00e73a3.css.map*/ \ No newline at end of file diff --git a/dist/style.3abd22fd5b86b00e73a3.css.map b/dist/style.3abd22fd5b86b00e73a3.css.map deleted file mode 100644 index 6c576bb..0000000 --- a/dist/style.3abd22fd5b86b00e73a3.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./css/animate.css","webpack:///./css/style.css (1)","webpack:///./less/style.less","webpack:///./less/animate.less","webpack:///./css/media.css"],"names":[],"mappings":";AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;ACr6GA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,C;;AC9BA;EACE,oBAAoB;CACrB;AACD;EACE,gBAAgB;EAChB,YAAY;EACZ,SAAS;EACT,OAAO;EACP,gCAAgC;EAChC,YAAY;CACb;AACD;EACE,aAAa;EACb,qCAAqC;CACtC;AACD;EACE,0BAA0B;EAC1B,kBAAkB;EAClB,mBAAmB;EACnB,iBAAiB;CAClB;AACD;EACE,YAAY;EACZ,aAAa;EACb,eAAe;EACf,+BAA+B;EAC/B,oBAAoB;CACrB;AACD;EACE,YAAY;EACZ,YAAY;EACZ,0BAA0B;EAC1B,iDAAiD;EACjD,+CAA+C;EAC/C,uCAAuC;EACvC,8DAA8D;EAC9D,iEAAiE;CAClE;AACD;EACE,wCAAwC;EACxC,gCAAgC;EAChC,kDAAkD;EAClD,0CAA0C;CAC3C;AACD;EACE,wCAAwC;EACxC,gCAAgC;EAChC,kCAAkC;EAClC,0BAA0B;CAC3B;AACD;EACE,qCAAqC;EACrC,6BAA6B;EAC7B,WAAW;CACZ;AACD;EACE,mBAAmB;CACpB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,aAAa;EACb,eAAe;EACf,0BAA0B;EAC1B,gBAAgB;EAChB,oBAAoB;EACpB,mBAAmB;EACnB,aAAa;EACb,cAAc;EACd,sBAAsB;CACvB;AACD;EACE,qCAAqC;CACtC;AACD;EACE,eAAe;EACf,qBAAqB;CACtB;AACD;EACE,aAAa;EACb,aAAa;CACd;AACD;EACE,oBAAoB;EACpB,kBAAkB;EAClB,gBAAgB;CACjB;AACD;EACE,qCAAqC;EACrC,6BAA6B;CAC9B;AACD;EACE,sBAAsB;EACtB,eAAe;EACf,YAAY;CACb;AACD;EACE,eAAe;EACf,eAAe;EACf,2CAA2C;CAC5C;AACD;EACE,kBAAkB;EAClB,iBAAiB;EACjB,eAAe;CAChB;AACD;EACE,gBAAgB;CACjB;AACD;EACE,cAAc;CACf;AACD;EACE,cAAc;CACf;AACD;EACE,qBAAqB;CACtB;AACD;EACE,eAAe;EACf,oBAAoB;CACrB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,kBAAkB;EAClB,iCAAiC;EACjC,WAAW;EACX,aAAa;EACb,cAAc;CACf;AACD;EACE,YAAY;CACb;AACD;EACE,qBAAqB;CACtB;AACD;EACE,qBAAqB;EACrB,eAAe;CAChB;AACD;EACE,oCAAoC;EACpC,4BAA4B;CAC7B;AACD;EACE,mBAAmB;EACnB,wBAAwB;EACxB,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;CAClB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,oBAAoB;EACpB,YAAY;EACZ,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,mCAAmC;EACnC,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,mCAAmC;EACnC,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,mCAAmC;EACnC,2BAA2B;CAC5B;AACD;EACE,eAAe;EACf,iBAAiB;CAClB;AACD;EACE,2CAA2C;EAC3C,mCAAmC;CACpC;AACD;EACE,qBAAqB;CACtB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,kBAAkB;EAClB,iCAAiC;EACjC,WAAW;EACX,aAAa;EACb,cAAc;CACf;AACD;EACE,mBAAmB;CACpB;AACD;EACE,mBAAmB;EACnB,gBAAgB;EAChB,sBAAsB;EACtB,0BAA0B;EAC1B,aAAa;EACb,iBAAiB;EACjB,mBAAmB;EACnB,gBAAgB;EAChB,eAAe;CAChB;AACD;EACE,mBAAmB;EACnB,eAAe;CAChB;AACD;EACE,eAAe;CAChB;AACD;EACE,uBAAuB;EACvB,kBAAkB;CACnB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,mBAAmB;EACnB,iBAAiB;EACjB,aAAa;EACb,qCAAqC;EACrC,mBAAmB;EACnB,mCAAmC;EACnC,4BAA4B;CAC7B;AACD;EACE,mBAAmB;EACnB,qCAAqC;EACrC,YAAY;EACZ,aAAa;EACb,cAAc;EACd,uBAAuB;EACvB,wBAAwB;EACxB,oBAAoB;EACpB,WAAW;EACX,wBAAwB;CACzB;AACD;EACE,0BAA0B;EAC1B,gBAAgB;EAChB,oBAAoB;EACpB,eAAe;CAChB;AACD;EACE,mCAAmC;EACnC,kCAAkC;EAClC,0BAA0B;EAC1B,iDAAiD;EACjD,mDAAmD;CACpD;AACD;EACE,mBAAmB;EACnB,wBAAwB;EACxB,oBAAoB;EACpB,OAAO;EACP,UAAU;EACV,QAAQ;EACR,SAAS;CACV;AACD;EACE,sBAAsB;EACtB,WAAW;EACX,aAAa;EACb,sCAAsC;EACtC,8BAA8B;EAC9B,6DAA6D;EAC7D,0DAA0D;EAC1D,kDAAkD;EAClD,yEAAyE;EACzE,6EAA6E;EAC7E,0BAA0B;EAC1B,kBAAkB;CACnB;AACD;EACE,YAAY;EACZ,mCAAmC;EACnC,2BAA2B;EAC3B,mCAAmC;EACnC,kCAAkC;EAClC,0BAA0B;EAC1B,iDAAiD;EACjD,mDAAmD;CACpD;AACD;EACE,gBAAgB;EAChB,wCAAwC;CACzC;AACD;EACE,WAAW;CACZ;AACD;EACE,qCAAqC;EACrC,6BAA6B;CAC9B;AACD;EACE,+BAA+B;EAC/B,uBAAuB;CACxB;AACD;EACE,WAAW;EACX,aAAa;EACb,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,YAAY;EACZ,aAAa;CACd;AACD;EACE,mBAAmB;EACnB,aAAa;CACd;AACD;EACE,kBAAkB;EAClB,kBAAkB;EAClB,mBAAmB;CACpB;AACD;EACE,eAAe;EACf,aAAa;EACb,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,oBAAoB;EACpB,iBAAiB;CAClB;AACD;EACE,kBAAkB;EAClB,iCAAiC;EACjC,WAAW;EACX,aAAa;EACb,cAAc;CACf;AACD;EACE,mBAAmB;EACnB,oBAAoB;CACrB;AACD;EACE,oBAAoB;CACrB;AACD;EACE,eAAe;CAChB;AACD;EACE,uBAAuB;EACvB,aAAa;EACb,iBAAiB;CAClB;AACD;EACE,eAAe;EACf,gBAAgB;CACjB;AACD;EACE;;;IAGE,oBAAoB;GACrB;CACF;AACD;EACE;IACE,8CAA8C;GAC/C;EACD;IACE,6CAA6C;GAC9C;CACF;AACD;EACE;IACE,qBAAqB;GACtB;EACD;IACE,oBAAoB;GACrB;CACF;AACD,cAAc;AACd;EACE,mBAAmB;CACpB;;ACpaD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;;EAEE,+BAA+B;EAC/B,uBAAuB;CACxB;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;AACD;EACE,iCAAiC;EACjC,yBAAyB;CAC1B;;;ACvBD;AACA;AACA;AACA,2C;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,4B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,K;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA","file":"style.3abd22fd5b86b00e73a3.css","sourcesContent":["@charset \"UTF-8\";\r\n\r\n/*!\r\n * animate.css -http://daneden.me/animate\r\n * Version - 3.6.0\r\n * Licensed under the MIT license - http://opensource.org/licenses/MIT\r\n *\r\n * Copyright (c) 2018 Daniel Eden\r\n */\r\n\r\n.animated {\r\n -webkit-animation-duration: 1s;\r\n animation-duration: 1s;\r\n -webkit-animation-fill-mode: both;\r\n animation-fill-mode: both;\r\n}\r\n\r\n.animated.infinite {\r\n -webkit-animation-iteration-count: infinite;\r\n animation-iteration-count: infinite;\r\n}\r\n\r\n@-webkit-keyframes bounce {\r\n from,\r\n 20%,\r\n 53%,\r\n 80%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 40%,\r\n 43% {\r\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n -webkit-transform: translate3d(0, -30px, 0);\r\n transform: translate3d(0, -30px, 0);\r\n }\r\n\r\n 70% {\r\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n -webkit-transform: translate3d(0, -15px, 0);\r\n transform: translate3d(0, -15px, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(0, -4px, 0);\r\n transform: translate3d(0, -4px, 0);\r\n }\r\n}\r\n\r\n@keyframes bounce {\r\n from,\r\n 20%,\r\n 53%,\r\n 80%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 40%,\r\n 43% {\r\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n -webkit-transform: translate3d(0, -30px, 0);\r\n transform: translate3d(0, -30px, 0);\r\n }\r\n\r\n 70% {\r\n -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\r\n -webkit-transform: translate3d(0, -15px, 0);\r\n transform: translate3d(0, -15px, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(0, -4px, 0);\r\n transform: translate3d(0, -4px, 0);\r\n }\r\n}\r\n\r\n.bounce {\r\n -webkit-animation-name: bounce;\r\n animation-name: bounce;\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n}\r\n\r\n@-webkit-keyframes flash {\r\n from,\r\n 50%,\r\n to {\r\n opacity: 1;\r\n }\r\n\r\n 25%,\r\n 75% {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes flash {\r\n from,\r\n 50%,\r\n to {\r\n opacity: 1;\r\n }\r\n\r\n 25%,\r\n 75% {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.flash {\r\n -webkit-animation-name: flash;\r\n animation-name: flash;\r\n}\r\n\r\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\r\n\r\n@-webkit-keyframes pulse {\r\n from {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n\r\n 50% {\r\n -webkit-transform: scale3d(1.05, 1.05, 1.05);\r\n transform: scale3d(1.05, 1.05, 1.05);\r\n }\r\n\r\n to {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n@keyframes pulse {\r\n from {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n\r\n 50% {\r\n -webkit-transform: scale3d(1.05, 1.05, 1.05);\r\n transform: scale3d(1.05, 1.05, 1.05);\r\n }\r\n\r\n to {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n.pulse {\r\n -webkit-animation-name: pulse;\r\n animation-name: pulse;\r\n}\r\n\r\n@-webkit-keyframes rubberBand {\r\n from {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: scale3d(1.25, 0.75, 1);\r\n transform: scale3d(1.25, 0.75, 1);\r\n }\r\n\r\n 40% {\r\n -webkit-transform: scale3d(0.75, 1.25, 1);\r\n transform: scale3d(0.75, 1.25, 1);\r\n }\r\n\r\n 50% {\r\n -webkit-transform: scale3d(1.15, 0.85, 1);\r\n transform: scale3d(1.15, 0.85, 1);\r\n }\r\n\r\n 65% {\r\n -webkit-transform: scale3d(0.95, 1.05, 1);\r\n transform: scale3d(0.95, 1.05, 1);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: scale3d(1.05, 0.95, 1);\r\n transform: scale3d(1.05, 0.95, 1);\r\n }\r\n\r\n to {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n@keyframes rubberBand {\r\n from {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: scale3d(1.25, 0.75, 1);\r\n transform: scale3d(1.25, 0.75, 1);\r\n }\r\n\r\n 40% {\r\n -webkit-transform: scale3d(0.75, 1.25, 1);\r\n transform: scale3d(0.75, 1.25, 1);\r\n }\r\n\r\n 50% {\r\n -webkit-transform: scale3d(1.15, 0.85, 1);\r\n transform: scale3d(1.15, 0.85, 1);\r\n }\r\n\r\n 65% {\r\n -webkit-transform: scale3d(0.95, 1.05, 1);\r\n transform: scale3d(0.95, 1.05, 1);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: scale3d(1.05, 0.95, 1);\r\n transform: scale3d(1.05, 0.95, 1);\r\n }\r\n\r\n to {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n.rubberBand {\r\n -webkit-animation-name: rubberBand;\r\n animation-name: rubberBand;\r\n}\r\n\r\n@-webkit-keyframes shake {\r\n from,\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 10%,\r\n 30%,\r\n 50%,\r\n 70%,\r\n 90% {\r\n -webkit-transform: translate3d(-10px, 0, 0);\r\n transform: translate3d(-10px, 0, 0);\r\n }\r\n\r\n 20%,\r\n 40%,\r\n 60%,\r\n 80% {\r\n -webkit-transform: translate3d(10px, 0, 0);\r\n transform: translate3d(10px, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes shake {\r\n from,\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 10%,\r\n 30%,\r\n 50%,\r\n 70%,\r\n 90% {\r\n -webkit-transform: translate3d(-10px, 0, 0);\r\n transform: translate3d(-10px, 0, 0);\r\n }\r\n\r\n 20%,\r\n 40%,\r\n 60%,\r\n 80% {\r\n -webkit-transform: translate3d(10px, 0, 0);\r\n transform: translate3d(10px, 0, 0);\r\n }\r\n}\r\n\r\n.shake {\r\n -webkit-animation-name: shake;\r\n animation-name: shake;\r\n}\r\n\r\n@-webkit-keyframes headShake {\r\n 0% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n }\r\n\r\n 6.5% {\r\n -webkit-transform: translateX(-6px) rotateY(-9deg);\r\n transform: translateX(-6px) rotateY(-9deg);\r\n }\r\n\r\n 18.5% {\r\n -webkit-transform: translateX(5px) rotateY(7deg);\r\n transform: translateX(5px) rotateY(7deg);\r\n }\r\n\r\n 31.5% {\r\n -webkit-transform: translateX(-3px) rotateY(-5deg);\r\n transform: translateX(-3px) rotateY(-5deg);\r\n }\r\n\r\n 43.5% {\r\n -webkit-transform: translateX(2px) rotateY(3deg);\r\n transform: translateX(2px) rotateY(3deg);\r\n }\r\n\r\n 50% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n }\r\n}\r\n\r\n@keyframes headShake {\r\n 0% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n }\r\n\r\n 6.5% {\r\n -webkit-transform: translateX(-6px) rotateY(-9deg);\r\n transform: translateX(-6px) rotateY(-9deg);\r\n }\r\n\r\n 18.5% {\r\n -webkit-transform: translateX(5px) rotateY(7deg);\r\n transform: translateX(5px) rotateY(7deg);\r\n }\r\n\r\n 31.5% {\r\n -webkit-transform: translateX(-3px) rotateY(-5deg);\r\n transform: translateX(-3px) rotateY(-5deg);\r\n }\r\n\r\n 43.5% {\r\n -webkit-transform: translateX(2px) rotateY(3deg);\r\n transform: translateX(2px) rotateY(3deg);\r\n }\r\n\r\n 50% {\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\r\n }\r\n}\r\n\r\n.headShake {\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n -webkit-animation-name: headShake;\r\n animation-name: headShake;\r\n}\r\n\r\n@-webkit-keyframes swing {\r\n 20% {\r\n -webkit-transform: rotate3d(0, 0, 1, 15deg);\r\n transform: rotate3d(0, 0, 1, 15deg);\r\n }\r\n\r\n 40% {\r\n -webkit-transform: rotate3d(0, 0, 1, -10deg);\r\n transform: rotate3d(0, 0, 1, -10deg);\r\n }\r\n\r\n 60% {\r\n -webkit-transform: rotate3d(0, 0, 1, 5deg);\r\n transform: rotate3d(0, 0, 1, 5deg);\r\n }\r\n\r\n 80% {\r\n -webkit-transform: rotate3d(0, 0, 1, -5deg);\r\n transform: rotate3d(0, 0, 1, -5deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: rotate3d(0, 0, 1, 0deg);\r\n transform: rotate3d(0, 0, 1, 0deg);\r\n }\r\n}\r\n\r\n@keyframes swing {\r\n 20% {\r\n -webkit-transform: rotate3d(0, 0, 1, 15deg);\r\n transform: rotate3d(0, 0, 1, 15deg);\r\n }\r\n\r\n 40% {\r\n -webkit-transform: rotate3d(0, 0, 1, -10deg);\r\n transform: rotate3d(0, 0, 1, -10deg);\r\n }\r\n\r\n 60% {\r\n -webkit-transform: rotate3d(0, 0, 1, 5deg);\r\n transform: rotate3d(0, 0, 1, 5deg);\r\n }\r\n\r\n 80% {\r\n -webkit-transform: rotate3d(0, 0, 1, -5deg);\r\n transform: rotate3d(0, 0, 1, -5deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: rotate3d(0, 0, 1, 0deg);\r\n transform: rotate3d(0, 0, 1, 0deg);\r\n }\r\n}\r\n\r\n.swing {\r\n -webkit-transform-origin: top center;\r\n transform-origin: top center;\r\n -webkit-animation-name: swing;\r\n animation-name: swing;\r\n}\r\n\r\n@-webkit-keyframes tada {\r\n from {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n\r\n 10%,\r\n 20% {\r\n -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\r\n transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\r\n }\r\n\r\n 30%,\r\n 50%,\r\n 70%,\r\n 90% {\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\r\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\r\n }\r\n\r\n 40%,\r\n 60%,\r\n 80% {\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\r\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n@keyframes tada {\r\n from {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n\r\n 10%,\r\n 20% {\r\n -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\r\n transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\r\n }\r\n\r\n 30%,\r\n 50%,\r\n 70%,\r\n 90% {\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\r\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\r\n }\r\n\r\n 40%,\r\n 60%,\r\n 80% {\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\r\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n.tada {\r\n -webkit-animation-name: tada;\r\n animation-name: tada;\r\n}\r\n\r\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\r\n\r\n@-webkit-keyframes wobble {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 15% {\r\n -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\r\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\r\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\r\n }\r\n\r\n 45% {\r\n -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\r\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\r\n }\r\n\r\n 60% {\r\n -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\r\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\r\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes wobble {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 15% {\r\n -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\r\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\r\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\r\n }\r\n\r\n 45% {\r\n -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\r\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\r\n }\r\n\r\n 60% {\r\n -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\r\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\r\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.wobble {\r\n -webkit-animation-name: wobble;\r\n animation-name: wobble;\r\n}\r\n\r\n@-webkit-keyframes jello {\r\n from,\r\n 11.1%,\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 22.2% {\r\n -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\r\n transform: skewX(-12.5deg) skewY(-12.5deg);\r\n }\r\n\r\n 33.3% {\r\n -webkit-transform: skewX(6.25deg) skewY(6.25deg);\r\n transform: skewX(6.25deg) skewY(6.25deg);\r\n }\r\n\r\n 44.4% {\r\n -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\r\n transform: skewX(-3.125deg) skewY(-3.125deg);\r\n }\r\n\r\n 55.5% {\r\n -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\r\n transform: skewX(1.5625deg) skewY(1.5625deg);\r\n }\r\n\r\n 66.6% {\r\n -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\r\n transform: skewX(-0.78125deg) skewY(-0.78125deg);\r\n }\r\n\r\n 77.7% {\r\n -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\r\n transform: skewX(0.390625deg) skewY(0.390625deg);\r\n }\r\n\r\n 88.8% {\r\n -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\r\n transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\r\n }\r\n}\r\n\r\n@keyframes jello {\r\n from,\r\n 11.1%,\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n 22.2% {\r\n -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\r\n transform: skewX(-12.5deg) skewY(-12.5deg);\r\n }\r\n\r\n 33.3% {\r\n -webkit-transform: skewX(6.25deg) skewY(6.25deg);\r\n transform: skewX(6.25deg) skewY(6.25deg);\r\n }\r\n\r\n 44.4% {\r\n -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\r\n transform: skewX(-3.125deg) skewY(-3.125deg);\r\n }\r\n\r\n 55.5% {\r\n -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\r\n transform: skewX(1.5625deg) skewY(1.5625deg);\r\n }\r\n\r\n 66.6% {\r\n -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\r\n transform: skewX(-0.78125deg) skewY(-0.78125deg);\r\n }\r\n\r\n 77.7% {\r\n -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\r\n transform: skewX(0.390625deg) skewY(0.390625deg);\r\n }\r\n\r\n 88.8% {\r\n -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\r\n transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\r\n }\r\n}\r\n\r\n.jello {\r\n -webkit-animation-name: jello;\r\n animation-name: jello;\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n}\r\n\r\n@-webkit-keyframes bounceIn {\r\n from,\r\n 20%,\r\n 40%,\r\n 60%,\r\n 80%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n 0% {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n\r\n 20% {\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\r\n transform: scale3d(1.1, 1.1, 1.1);\r\n }\r\n\r\n 40% {\r\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\r\n transform: scale3d(0.9, 0.9, 0.9);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\r\n transform: scale3d(1.03, 1.03, 1.03);\r\n }\r\n\r\n 80% {\r\n -webkit-transform: scale3d(0.97, 0.97, 0.97);\r\n transform: scale3d(0.97, 0.97, 0.97);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n@keyframes bounceIn {\r\n from,\r\n 20%,\r\n 40%,\r\n 60%,\r\n 80%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n 0% {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n\r\n 20% {\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\r\n transform: scale3d(1.1, 1.1, 1.1);\r\n }\r\n\r\n 40% {\r\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\r\n transform: scale3d(0.9, 0.9, 0.9);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\r\n transform: scale3d(1.03, 1.03, 1.03);\r\n }\r\n\r\n 80% {\r\n -webkit-transform: scale3d(0.97, 0.97, 0.97);\r\n transform: scale3d(0.97, 0.97, 0.97);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: scale3d(1, 1, 1);\r\n transform: scale3d(1, 1, 1);\r\n }\r\n}\r\n\r\n.bounceIn {\r\n -webkit-animation-duration: 0.75s;\r\n animation-duration: 0.75s;\r\n -webkit-animation-name: bounceIn;\r\n animation-name: bounceIn;\r\n}\r\n\r\n@-webkit-keyframes bounceInDown {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n 0% {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -3000px, 0);\r\n transform: translate3d(0, -3000px, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 25px, 0);\r\n transform: translate3d(0, 25px, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(0, -10px, 0);\r\n transform: translate3d(0, -10px, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(0, 5px, 0);\r\n transform: translate3d(0, 5px, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceInDown {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n 0% {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -3000px, 0);\r\n transform: translate3d(0, -3000px, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 25px, 0);\r\n transform: translate3d(0, 25px, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(0, -10px, 0);\r\n transform: translate3d(0, -10px, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(0, 5px, 0);\r\n transform: translate3d(0, 5px, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.bounceInDown {\r\n -webkit-animation-name: bounceInDown;\r\n animation-name: bounceInDown;\r\n}\r\n\r\n@-webkit-keyframes bounceInLeft {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n 0% {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-3000px, 0, 0);\r\n transform: translate3d(-3000px, 0, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(25px, 0, 0);\r\n transform: translate3d(25px, 0, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(-10px, 0, 0);\r\n transform: translate3d(-10px, 0, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(5px, 0, 0);\r\n transform: translate3d(5px, 0, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceInLeft {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n 0% {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-3000px, 0, 0);\r\n transform: translate3d(-3000px, 0, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(25px, 0, 0);\r\n transform: translate3d(25px, 0, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(-10px, 0, 0);\r\n transform: translate3d(-10px, 0, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(5px, 0, 0);\r\n transform: translate3d(5px, 0, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.bounceInLeft {\r\n -webkit-animation-name: bounceInLeft;\r\n animation-name: bounceInLeft;\r\n}\r\n\r\n@-webkit-keyframes bounceInRight {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(3000px, 0, 0);\r\n transform: translate3d(3000px, 0, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(-25px, 0, 0);\r\n transform: translate3d(-25px, 0, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(10px, 0, 0);\r\n transform: translate3d(10px, 0, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(-5px, 0, 0);\r\n transform: translate3d(-5px, 0, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceInRight {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(3000px, 0, 0);\r\n transform: translate3d(3000px, 0, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(-25px, 0, 0);\r\n transform: translate3d(-25px, 0, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(10px, 0, 0);\r\n transform: translate3d(10px, 0, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(-5px, 0, 0);\r\n transform: translate3d(-5px, 0, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.bounceInRight {\r\n -webkit-animation-name: bounceInRight;\r\n animation-name: bounceInRight;\r\n}\r\n\r\n@-webkit-keyframes bounceInUp {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 3000px, 0);\r\n transform: translate3d(0, 3000px, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, -20px, 0);\r\n transform: translate3d(0, -20px, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(0, 10px, 0);\r\n transform: translate3d(0, 10px, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(0, -5px, 0);\r\n transform: translate3d(0, -5px, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceInUp {\r\n from,\r\n 60%,\r\n 75%,\r\n 90%,\r\n to {\r\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\r\n }\r\n\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 3000px, 0);\r\n transform: translate3d(0, 3000px, 0);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, -20px, 0);\r\n transform: translate3d(0, -20px, 0);\r\n }\r\n\r\n 75% {\r\n -webkit-transform: translate3d(0, 10px, 0);\r\n transform: translate3d(0, 10px, 0);\r\n }\r\n\r\n 90% {\r\n -webkit-transform: translate3d(0, -5px, 0);\r\n transform: translate3d(0, -5px, 0);\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.bounceInUp {\r\n -webkit-animation-name: bounceInUp;\r\n animation-name: bounceInUp;\r\n}\r\n\r\n@-webkit-keyframes bounceOut {\r\n 20% {\r\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\r\n transform: scale3d(0.9, 0.9, 0.9);\r\n }\r\n\r\n 50%,\r\n 55% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\r\n transform: scale3d(1.1, 1.1, 1.1);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n}\r\n\r\n@keyframes bounceOut {\r\n 20% {\r\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\r\n transform: scale3d(0.9, 0.9, 0.9);\r\n }\r\n\r\n 50%,\r\n 55% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(1.1, 1.1, 1.1);\r\n transform: scale3d(1.1, 1.1, 1.1);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n}\r\n\r\n.bounceOut {\r\n -webkit-animation-duration: 0.75s;\r\n animation-duration: 0.75s;\r\n -webkit-animation-name: bounceOut;\r\n animation-name: bounceOut;\r\n}\r\n\r\n@-webkit-keyframes bounceOutDown {\r\n 20% {\r\n -webkit-transform: translate3d(0, 10px, 0);\r\n transform: translate3d(0, 10px, 0);\r\n }\r\n\r\n 40%,\r\n 45% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, -20px, 0);\r\n transform: translate3d(0, -20px, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 2000px, 0);\r\n transform: translate3d(0, 2000px, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceOutDown {\r\n 20% {\r\n -webkit-transform: translate3d(0, 10px, 0);\r\n transform: translate3d(0, 10px, 0);\r\n }\r\n\r\n 40%,\r\n 45% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, -20px, 0);\r\n transform: translate3d(0, -20px, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 2000px, 0);\r\n transform: translate3d(0, 2000px, 0);\r\n }\r\n}\r\n\r\n.bounceOutDown {\r\n -webkit-animation-name: bounceOutDown;\r\n animation-name: bounceOutDown;\r\n}\r\n\r\n@-webkit-keyframes bounceOutLeft {\r\n 20% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(20px, 0, 0);\r\n transform: translate3d(20px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-2000px, 0, 0);\r\n transform: translate3d(-2000px, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceOutLeft {\r\n 20% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(20px, 0, 0);\r\n transform: translate3d(20px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-2000px, 0, 0);\r\n transform: translate3d(-2000px, 0, 0);\r\n }\r\n}\r\n\r\n.bounceOutLeft {\r\n -webkit-animation-name: bounceOutLeft;\r\n animation-name: bounceOutLeft;\r\n}\r\n\r\n@-webkit-keyframes bounceOutRight {\r\n 20% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(-20px, 0, 0);\r\n transform: translate3d(-20px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(2000px, 0, 0);\r\n transform: translate3d(2000px, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceOutRight {\r\n 20% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(-20px, 0, 0);\r\n transform: translate3d(-20px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(2000px, 0, 0);\r\n transform: translate3d(2000px, 0, 0);\r\n }\r\n}\r\n\r\n.bounceOutRight {\r\n -webkit-animation-name: bounceOutRight;\r\n animation-name: bounceOutRight;\r\n}\r\n\r\n@-webkit-keyframes bounceOutUp {\r\n 20% {\r\n -webkit-transform: translate3d(0, -10px, 0);\r\n transform: translate3d(0, -10px, 0);\r\n }\r\n\r\n 40%,\r\n 45% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 20px, 0);\r\n transform: translate3d(0, 20px, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -2000px, 0);\r\n transform: translate3d(0, -2000px, 0);\r\n }\r\n}\r\n\r\n@keyframes bounceOutUp {\r\n 20% {\r\n -webkit-transform: translate3d(0, -10px, 0);\r\n transform: translate3d(0, -10px, 0);\r\n }\r\n\r\n 40%,\r\n 45% {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 20px, 0);\r\n transform: translate3d(0, 20px, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -2000px, 0);\r\n transform: translate3d(0, -2000px, 0);\r\n }\r\n}\r\n\r\n.bounceOutUp {\r\n -webkit-animation-name: bounceOutUp;\r\n animation-name: bounceOutUp;\r\n}\r\n\r\n@-webkit-keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.fadeIn {\r\n -webkit-animation-name: fadeIn;\r\n animation-name: fadeIn;\r\n}\r\n\r\n@-webkit-keyframes fadeInDown {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInDown {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInDown {\r\n -webkit-animation-name: fadeInDown;\r\n animation-name: fadeInDown;\r\n}\r\n\r\n@-webkit-keyframes fadeInDownBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -2000px, 0);\r\n transform: translate3d(0, -2000px, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInDownBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -2000px, 0);\r\n transform: translate3d(0, -2000px, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInDownBig {\r\n -webkit-animation-name: fadeInDownBig;\r\n animation-name: fadeInDownBig;\r\n}\r\n\r\n@-webkit-keyframes fadeInLeft {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInLeft {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInLeft {\r\n -webkit-animation-name: fadeInLeft;\r\n animation-name: fadeInLeft;\r\n}\r\n\r\n@-webkit-keyframes fadeInLeftBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-2000px, 0, 0);\r\n transform: translate3d(-2000px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInLeftBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-2000px, 0, 0);\r\n transform: translate3d(-2000px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInLeftBig {\r\n -webkit-animation-name: fadeInLeftBig;\r\n animation-name: fadeInLeftBig;\r\n}\r\n\r\n@-webkit-keyframes fadeInRight {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInRight {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInRight {\r\n -webkit-animation-name: fadeInRight;\r\n animation-name: fadeInRight;\r\n}\r\n\r\n@-webkit-keyframes fadeInRightBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(2000px, 0, 0);\r\n transform: translate3d(2000px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInRightBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(2000px, 0, 0);\r\n transform: translate3d(2000px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInRightBig {\r\n -webkit-animation-name: fadeInRightBig;\r\n animation-name: fadeInRightBig;\r\n}\r\n\r\n@-webkit-keyframes fadeInUp {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInUp {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInUp {\r\n -webkit-animation-name: fadeInUp;\r\n animation-name: fadeInUp;\r\n}\r\n\r\n@-webkit-keyframes fadeInUpBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 2000px, 0);\r\n transform: translate3d(0, 2000px, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeInUpBig {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 2000px, 0);\r\n transform: translate3d(0, 2000px, 0);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.fadeInUpBig {\r\n -webkit-animation-name: fadeInUpBig;\r\n animation-name: fadeInUpBig;\r\n}\r\n\r\n@-webkit-keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.fadeOut {\r\n -webkit-animation-name: fadeOut;\r\n animation-name: fadeOut;\r\n}\r\n\r\n@-webkit-keyframes fadeOutDown {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutDown {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n }\r\n}\r\n\r\n.fadeOutDown {\r\n -webkit-animation-name: fadeOutDown;\r\n animation-name: fadeOutDown;\r\n}\r\n\r\n@-webkit-keyframes fadeOutDownBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 2000px, 0);\r\n transform: translate3d(0, 2000px, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutDownBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, 2000px, 0);\r\n transform: translate3d(0, 2000px, 0);\r\n }\r\n}\r\n\r\n.fadeOutDownBig {\r\n -webkit-animation-name: fadeOutDownBig;\r\n animation-name: fadeOutDownBig;\r\n}\r\n\r\n@-webkit-keyframes fadeOutLeft {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutLeft {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n }\r\n}\r\n\r\n.fadeOutLeft {\r\n -webkit-animation-name: fadeOutLeft;\r\n animation-name: fadeOutLeft;\r\n}\r\n\r\n@-webkit-keyframes fadeOutLeftBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-2000px, 0, 0);\r\n transform: translate3d(-2000px, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutLeftBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-2000px, 0, 0);\r\n transform: translate3d(-2000px, 0, 0);\r\n }\r\n}\r\n\r\n.fadeOutLeftBig {\r\n -webkit-animation-name: fadeOutLeftBig;\r\n animation-name: fadeOutLeftBig;\r\n}\r\n\r\n@-webkit-keyframes fadeOutRight {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutRight {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n }\r\n}\r\n\r\n.fadeOutRight {\r\n -webkit-animation-name: fadeOutRight;\r\n animation-name: fadeOutRight;\r\n}\r\n\r\n@-webkit-keyframes fadeOutRightBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(2000px, 0, 0);\r\n transform: translate3d(2000px, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutRightBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(2000px, 0, 0);\r\n transform: translate3d(2000px, 0, 0);\r\n }\r\n}\r\n\r\n.fadeOutRightBig {\r\n -webkit-animation-name: fadeOutRightBig;\r\n animation-name: fadeOutRightBig;\r\n}\r\n\r\n@-webkit-keyframes fadeOutUp {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutUp {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n }\r\n}\r\n\r\n.fadeOutUp {\r\n -webkit-animation-name: fadeOutUp;\r\n animation-name: fadeOutUp;\r\n}\r\n\r\n@-webkit-keyframes fadeOutUpBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -2000px, 0);\r\n transform: translate3d(0, -2000px, 0);\r\n }\r\n}\r\n\r\n@keyframes fadeOutUpBig {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(0, -2000px, 0);\r\n transform: translate3d(0, -2000px, 0);\r\n }\r\n}\r\n\r\n.fadeOutUpBig {\r\n -webkit-animation-name: fadeOutUpBig;\r\n animation-name: fadeOutUpBig;\r\n}\r\n\r\n@-webkit-keyframes flip {\r\n from {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\r\n -webkit-animation-timing-function: ease-out;\r\n animation-timing-function: ease-out;\r\n }\r\n\r\n 40% {\r\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\r\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\r\n -webkit-animation-timing-function: ease-out;\r\n animation-timing-function: ease-out;\r\n }\r\n\r\n 50% {\r\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\r\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\r\n transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n}\r\n\r\n@keyframes flip {\r\n from {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\r\n -webkit-animation-timing-function: ease-out;\r\n animation-timing-function: ease-out;\r\n }\r\n\r\n 40% {\r\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\r\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\r\n -webkit-animation-timing-function: ease-out;\r\n animation-timing-function: ease-out;\r\n }\r\n\r\n 50% {\r\n -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\r\n transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\r\n transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n}\r\n\r\n.animated.flip {\r\n -webkit-backface-visibility: visible;\r\n backface-visibility: visible;\r\n -webkit-animation-name: flip;\r\n animation-name: flip;\r\n}\r\n\r\n@-webkit-keyframes flipInX {\r\n from {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n opacity: 0;\r\n }\r\n\r\n 40% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n 60% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\r\n opacity: 1;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n}\r\n\r\n@keyframes flipInX {\r\n from {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n opacity: 0;\r\n }\r\n\r\n 40% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n 60% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\r\n opacity: 1;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n}\r\n\r\n.flipInX {\r\n -webkit-backface-visibility: visible !important;\r\n backface-visibility: visible !important;\r\n -webkit-animation-name: flipInX;\r\n animation-name: flipInX;\r\n}\r\n\r\n@-webkit-keyframes flipInY {\r\n from {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n opacity: 0;\r\n }\r\n\r\n 40% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n 60% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\r\n opacity: 1;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n}\r\n\r\n@keyframes flipInY {\r\n from {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n opacity: 0;\r\n }\r\n\r\n 40% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n }\r\n\r\n 60% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\r\n opacity: 1;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n}\r\n\r\n.flipInY {\r\n -webkit-backface-visibility: visible !important;\r\n backface-visibility: visible !important;\r\n -webkit-animation-name: flipInY;\r\n animation-name: flipInY;\r\n}\r\n\r\n@-webkit-keyframes flipOutX {\r\n from {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes flipOutX {\r\n from {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.flipOutX {\r\n -webkit-animation-duration: 0.75s;\r\n animation-duration: 0.75s;\r\n -webkit-animation-name: flipOutX;\r\n animation-name: flipOutX;\r\n -webkit-backface-visibility: visible !important;\r\n backface-visibility: visible !important;\r\n}\r\n\r\n@-webkit-keyframes flipOutY {\r\n from {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes flipOutY {\r\n from {\r\n -webkit-transform: perspective(400px);\r\n transform: perspective(400px);\r\n }\r\n\r\n 30% {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.flipOutY {\r\n -webkit-animation-duration: 0.75s;\r\n animation-duration: 0.75s;\r\n -webkit-backface-visibility: visible !important;\r\n backface-visibility: visible !important;\r\n -webkit-animation-name: flipOutY;\r\n animation-name: flipOutY;\r\n}\r\n\r\n@-webkit-keyframes lightSpeedIn {\r\n from {\r\n -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\r\n transform: translate3d(100%, 0, 0) skewX(-30deg);\r\n opacity: 0;\r\n }\r\n\r\n 60% {\r\n -webkit-transform: skewX(20deg);\r\n transform: skewX(20deg);\r\n opacity: 1;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: skewX(-5deg);\r\n transform: skewX(-5deg);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes lightSpeedIn {\r\n from {\r\n -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\r\n transform: translate3d(100%, 0, 0) skewX(-30deg);\r\n opacity: 0;\r\n }\r\n\r\n 60% {\r\n -webkit-transform: skewX(20deg);\r\n transform: skewX(20deg);\r\n opacity: 1;\r\n }\r\n\r\n 80% {\r\n -webkit-transform: skewX(-5deg);\r\n transform: skewX(-5deg);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.lightSpeedIn {\r\n -webkit-animation-name: lightSpeedIn;\r\n animation-name: lightSpeedIn;\r\n -webkit-animation-timing-function: ease-out;\r\n animation-timing-function: ease-out;\r\n}\r\n\r\n@-webkit-keyframes lightSpeedOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\r\n transform: translate3d(100%, 0, 0) skewX(30deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes lightSpeedOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\r\n transform: translate3d(100%, 0, 0) skewX(30deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.lightSpeedOut {\r\n -webkit-animation-name: lightSpeedOut;\r\n animation-name: lightSpeedOut;\r\n -webkit-animation-timing-function: ease-in;\r\n animation-timing-function: ease-in;\r\n}\r\n\r\n@-webkit-keyframes rotateIn {\r\n from {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n -webkit-transform: rotate3d(0, 0, 1, -200deg);\r\n transform: rotate3d(0, 0, 1, -200deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes rotateIn {\r\n from {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n -webkit-transform: rotate3d(0, 0, 1, -200deg);\r\n transform: rotate3d(0, 0, 1, -200deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.rotateIn {\r\n -webkit-animation-name: rotateIn;\r\n animation-name: rotateIn;\r\n}\r\n\r\n@-webkit-keyframes rotateInDownLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\r\n transform: rotate3d(0, 0, 1, -45deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes rotateInDownLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\r\n transform: rotate3d(0, 0, 1, -45deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.rotateInDownLeft {\r\n -webkit-animation-name: rotateInDownLeft;\r\n animation-name: rotateInDownLeft;\r\n}\r\n\r\n@-webkit-keyframes rotateInDownRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\r\n transform: rotate3d(0, 0, 1, 45deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes rotateInDownRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\r\n transform: rotate3d(0, 0, 1, 45deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.rotateInDownRight {\r\n -webkit-animation-name: rotateInDownRight;\r\n animation-name: rotateInDownRight;\r\n}\r\n\r\n@-webkit-keyframes rotateInUpLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\r\n transform: rotate3d(0, 0, 1, 45deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes rotateInUpLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\r\n transform: rotate3d(0, 0, 1, 45deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.rotateInUpLeft {\r\n -webkit-animation-name: rotateInUpLeft;\r\n animation-name: rotateInUpLeft;\r\n}\r\n\r\n@-webkit-keyframes rotateInUpRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -90deg);\r\n transform: rotate3d(0, 0, 1, -90deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes rotateInUpRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -90deg);\r\n transform: rotate3d(0, 0, 1, -90deg);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.rotateInUpRight {\r\n -webkit-animation-name: rotateInUpRight;\r\n animation-name: rotateInUpRight;\r\n}\r\n\r\n@-webkit-keyframes rotateOut {\r\n from {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n -webkit-transform: rotate3d(0, 0, 1, 200deg);\r\n transform: rotate3d(0, 0, 1, 200deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes rotateOut {\r\n from {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: center;\r\n transform-origin: center;\r\n -webkit-transform: rotate3d(0, 0, 1, 200deg);\r\n transform: rotate3d(0, 0, 1, 200deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.rotateOut {\r\n -webkit-animation-name: rotateOut;\r\n animation-name: rotateOut;\r\n}\r\n\r\n@-webkit-keyframes rotateOutDownLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\r\n transform: rotate3d(0, 0, 1, 45deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes rotateOutDownLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 45deg);\r\n transform: rotate3d(0, 0, 1, 45deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.rotateOutDownLeft {\r\n -webkit-animation-name: rotateOutDownLeft;\r\n animation-name: rotateOutDownLeft;\r\n}\r\n\r\n@-webkit-keyframes rotateOutDownRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\r\n transform: rotate3d(0, 0, 1, -45deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes rotateOutDownRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\r\n transform: rotate3d(0, 0, 1, -45deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.rotateOutDownRight {\r\n -webkit-animation-name: rotateOutDownRight;\r\n animation-name: rotateOutDownRight;\r\n}\r\n\r\n@-webkit-keyframes rotateOutUpLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\r\n transform: rotate3d(0, 0, 1, -45deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes rotateOutUpLeft {\r\n from {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: left bottom;\r\n transform-origin: left bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, -45deg);\r\n transform: rotate3d(0, 0, 1, -45deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.rotateOutUpLeft {\r\n -webkit-animation-name: rotateOutUpLeft;\r\n animation-name: rotateOutUpLeft;\r\n}\r\n\r\n@-webkit-keyframes rotateOutUpRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 90deg);\r\n transform: rotate3d(0, 0, 1, 90deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes rotateOutUpRight {\r\n from {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform-origin: right bottom;\r\n transform-origin: right bottom;\r\n -webkit-transform: rotate3d(0, 0, 1, 90deg);\r\n transform: rotate3d(0, 0, 1, 90deg);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.rotateOutUpRight {\r\n -webkit-animation-name: rotateOutUpRight;\r\n animation-name: rotateOutUpRight;\r\n}\r\n\r\n@-webkit-keyframes hinge {\r\n 0% {\r\n -webkit-transform-origin: top left;\r\n transform-origin: top left;\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n }\r\n\r\n 20%,\r\n 60% {\r\n -webkit-transform: rotate3d(0, 0, 1, 80deg);\r\n transform: rotate3d(0, 0, 1, 80deg);\r\n -webkit-transform-origin: top left;\r\n transform-origin: top left;\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n }\r\n\r\n 40%,\r\n 80% {\r\n -webkit-transform: rotate3d(0, 0, 1, 60deg);\r\n transform: rotate3d(0, 0, 1, 60deg);\r\n -webkit-transform-origin: top left;\r\n transform-origin: top left;\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 700px, 0);\r\n transform: translate3d(0, 700px, 0);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes hinge {\r\n 0% {\r\n -webkit-transform-origin: top left;\r\n transform-origin: top left;\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n }\r\n\r\n 20%,\r\n 60% {\r\n -webkit-transform: rotate3d(0, 0, 1, 80deg);\r\n transform: rotate3d(0, 0, 1, 80deg);\r\n -webkit-transform-origin: top left;\r\n transform-origin: top left;\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n }\r\n\r\n 40%,\r\n 80% {\r\n -webkit-transform: rotate3d(0, 0, 1, 60deg);\r\n transform: rotate3d(0, 0, 1, 60deg);\r\n -webkit-transform-origin: top left;\r\n transform-origin: top left;\r\n -webkit-animation-timing-function: ease-in-out;\r\n animation-timing-function: ease-in-out;\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 700px, 0);\r\n transform: translate3d(0, 700px, 0);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.hinge {\r\n -webkit-animation-duration: 2s;\r\n animation-duration: 2s;\r\n -webkit-animation-name: hinge;\r\n animation-name: hinge;\r\n}\r\n\r\n@-webkit-keyframes jackInTheBox {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale(0.1) rotate(30deg);\r\n transform: scale(0.1) rotate(30deg);\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n }\r\n\r\n 50% {\r\n -webkit-transform: rotate(-10deg);\r\n transform: rotate(-10deg);\r\n }\r\n\r\n 70% {\r\n -webkit-transform: rotate(3deg);\r\n transform: rotate(3deg);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: scale(1);\r\n transform: scale(1);\r\n }\r\n}\r\n\r\n@keyframes jackInTheBox {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale(0.1) rotate(30deg);\r\n transform: scale(0.1) rotate(30deg);\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n }\r\n\r\n 50% {\r\n -webkit-transform: rotate(-10deg);\r\n transform: rotate(-10deg);\r\n }\r\n\r\n 70% {\r\n -webkit-transform: rotate(3deg);\r\n transform: rotate(3deg);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: scale(1);\r\n transform: scale(1);\r\n }\r\n}\r\n\r\n.jackInTheBox {\r\n -webkit-animation-name: jackInTheBox;\r\n animation-name: jackInTheBox;\r\n}\r\n\r\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\r\n\r\n@-webkit-keyframes rollIn {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\r\n transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes rollIn {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\r\n transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.rollIn {\r\n -webkit-animation-name: rollIn;\r\n animation-name: rollIn;\r\n}\r\n\r\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\r\n\r\n@-webkit-keyframes rollOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\r\n transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\r\n }\r\n}\r\n\r\n@keyframes rollOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\r\n transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\r\n }\r\n}\r\n\r\n.rollOut {\r\n -webkit-animation-name: rollOut;\r\n animation-name: rollOut;\r\n}\r\n\r\n@-webkit-keyframes zoomIn {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n\r\n 50% {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes zoomIn {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n\r\n 50% {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.zoomIn {\r\n -webkit-animation-name: zoomIn;\r\n animation-name: zoomIn;\r\n}\r\n\r\n@-webkit-keyframes zoomInDown {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n@keyframes zoomInDown {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n.zoomInDown {\r\n -webkit-animation-name: zoomInDown;\r\n animation-name: zoomInDown;\r\n}\r\n\r\n@-webkit-keyframes zoomInLeft {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n@keyframes zoomInLeft {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n.zoomInLeft {\r\n -webkit-animation-name: zoomInLeft;\r\n animation-name: zoomInLeft;\r\n}\r\n\r\n@-webkit-keyframes zoomInRight {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n@keyframes zoomInRight {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n.zoomInRight {\r\n -webkit-animation-name: zoomInRight;\r\n animation-name: zoomInRight;\r\n}\r\n\r\n@-webkit-keyframes zoomInUp {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n@keyframes zoomInUp {\r\n from {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n 60% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n.zoomInUp {\r\n -webkit-animation-name: zoomInUp;\r\n animation-name: zoomInUp;\r\n}\r\n\r\n@-webkit-keyframes zoomOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n 50% {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes zoomOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n 50% {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.3, 0.3, 0.3);\r\n transform: scale3d(0.3, 0.3, 0.3);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.zoomOut {\r\n -webkit-animation-name: zoomOut;\r\n animation-name: zoomOut;\r\n}\r\n\r\n@-webkit-keyframes zoomOutDown {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n@keyframes zoomOutDown {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n.zoomOutDown {\r\n -webkit-animation-name: zoomOutDown;\r\n animation-name: zoomOutDown;\r\n}\r\n\r\n@-webkit-keyframes zoomOutLeft {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\r\n transform: scale(0.1) translate3d(-2000px, 0, 0);\r\n -webkit-transform-origin: left center;\r\n transform-origin: left center;\r\n }\r\n}\r\n\r\n@keyframes zoomOutLeft {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\r\n transform: scale(0.1) translate3d(-2000px, 0, 0);\r\n -webkit-transform-origin: left center;\r\n transform-origin: left center;\r\n }\r\n}\r\n\r\n.zoomOutLeft {\r\n -webkit-animation-name: zoomOutLeft;\r\n animation-name: zoomOutLeft;\r\n}\r\n\r\n@-webkit-keyframes zoomOutRight {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\r\n transform: scale(0.1) translate3d(2000px, 0, 0);\r\n -webkit-transform-origin: right center;\r\n transform-origin: right center;\r\n }\r\n}\r\n\r\n@keyframes zoomOutRight {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\r\n transform: scale(0.1) translate3d(2000px, 0, 0);\r\n -webkit-transform-origin: right center;\r\n transform-origin: right center;\r\n }\r\n}\r\n\r\n.zoomOutRight {\r\n -webkit-animation-name: zoomOutRight;\r\n animation-name: zoomOutRight;\r\n}\r\n\r\n@-webkit-keyframes zoomOutUp {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n@keyframes zoomOutUp {\r\n 40% {\r\n opacity: 1;\r\n -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\r\n -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\r\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\r\n -webkit-transform-origin: center bottom;\r\n transform-origin: center bottom;\r\n -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\r\n }\r\n}\r\n\r\n.zoomOutUp {\r\n -webkit-animation-name: zoomOutUp;\r\n animation-name: zoomOutUp;\r\n}\r\n\r\n@-webkit-keyframes slideInDown {\r\n from {\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes slideInDown {\r\n from {\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.slideInDown {\r\n -webkit-animation-name: slideInDown;\r\n animation-name: slideInDown;\r\n}\r\n\r\n@-webkit-keyframes slideInLeft {\r\n from {\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes slideInLeft {\r\n from {\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.slideInLeft {\r\n -webkit-animation-name: slideInLeft;\r\n animation-name: slideInLeft;\r\n}\r\n\r\n@-webkit-keyframes slideInRight {\r\n from {\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes slideInRight {\r\n from {\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.slideInRight {\r\n -webkit-animation-name: slideInRight;\r\n animation-name: slideInRight;\r\n}\r\n\r\n@-webkit-keyframes slideInUp {\r\n from {\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes slideInUp {\r\n from {\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n visibility: visible;\r\n }\r\n\r\n to {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n}\r\n\r\n.slideInUp {\r\n -webkit-animation-name: slideInUp;\r\n animation-name: slideInUp;\r\n}\r\n\r\n@-webkit-keyframes slideOutDown {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n }\r\n}\r\n\r\n@keyframes slideOutDown {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(0, 100%, 0);\r\n transform: translate3d(0, 100%, 0);\r\n }\r\n}\r\n\r\n.slideOutDown {\r\n -webkit-animation-name: slideOutDown;\r\n animation-name: slideOutDown;\r\n}\r\n\r\n@-webkit-keyframes slideOutLeft {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes slideOutLeft {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(-100%, 0, 0);\r\n transform: translate3d(-100%, 0, 0);\r\n }\r\n}\r\n\r\n.slideOutLeft {\r\n -webkit-animation-name: slideOutLeft;\r\n animation-name: slideOutLeft;\r\n}\r\n\r\n@-webkit-keyframes slideOutRight {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n }\r\n}\r\n\r\n@keyframes slideOutRight {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(100%, 0, 0);\r\n transform: translate3d(100%, 0, 0);\r\n }\r\n}\r\n\r\n.slideOutRight {\r\n -webkit-animation-name: slideOutRight;\r\n animation-name: slideOutRight;\r\n}\r\n\r\n@-webkit-keyframes slideOutUp {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n }\r\n}\r\n\r\n@keyframes slideOutUp {\r\n from {\r\n -webkit-transform: translate3d(0, 0, 0);\r\n transform: translate3d(0, 0, 0);\r\n }\r\n\r\n to {\r\n visibility: hidden;\r\n -webkit-transform: translate3d(0, -100%, 0);\r\n transform: translate3d(0, -100%, 0);\r\n }\r\n}\r\n\r\n.slideOutUp {\r\n -webkit-animation-name: slideOutUp;\r\n animation-name: slideOutUp;\r\n}\r\n","body {\r\n font-family: 'Open Sans', sans-serif;\r\n}\r\n\r\n.main_display {\r\n text-transform: uppercase;\r\n}\r\n\r\n\r\n\r\n.parallax-window {\r\n min-height: 100vh;\r\n background-color: transparent;\r\n text-align: center;\r\n /* background-image: url('../image/main_picture.jpg'); */\r\n background-size: cover;\r\n background-repeat: no-repeat;\r\n background-position: center center;\r\n}\r\n\r\nsection {\r\n margin-bottom: 15px;\r\n}\r\n\r\nimg {\r\n max-width: 100%;\r\n}\r\n\r\nh2 {\r\n margin-bottom: 30px;\r\n} \r\n","header.main_display {\n margin-bottom: 10px;\n}\nheader.main_display .nav-menu {\n position: fixed;\n z-index: 50;\n right: 0;\n top: 0;\n transition: background-color 1s;\n width: 100%;\n}\nheader.main_display .nav-menu.show {\n height: 100%;\n background-color: rgba(0, 0, 0, 0.8);\n}\nheader.main_display .nav-menu button {\n background-color: #343a40;\n margin-left: auto;\n margin-right: 1rem;\n margin-top: 1rem;\n}\nheader.main_display .nav-menu button .lines {\n width: 30px;\n height: 30px;\n padding: 3px 0;\n justify-content: space-between;\n align-items: center;\n}\nheader.main_display .nav-menu button .lines .line {\n width: 30px;\n height: 2px;\n background-color: #9A9DA0;\n transition: opacity 0.5s, -webkit-transform 0.5s;\n transition: opacity .5s, -webkit-transform .5s;\n transition: transform .5s, opacity .5s;\n transition: transform .5s, opacity .5s, -webkit-transform .5s;\n transition: transform 0.5s, opacity 0.5s, -webkit-transform 0.5s;\n}\nheader.main_display .nav-menu button .lines .line-first.x {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n -webkit-transform: translateY(11px) rotate(45deg);\n transform: translateY(11px) rotate(45deg);\n}\nheader.main_display .nav-menu button .lines .line-second.x {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n}\nheader.main_display .nav-menu button .lines .line-third.x {\n -webkit-transform: translateY(-11px);\n transform: translateY(-11px);\n opacity: 0;\n}\nheader.main_display .nav-menu .navbar ul {\n position: relative;\n}\nheader.main_display .nav-menu .navbar ul li {\n transition: all .3s;\n}\nheader.main_display .nav-menu .navbar ul li a {\n color: white;\n display: block;\n text-transform: uppercase;\n font-size: 1rem;\n letter-spacing: 5px;\n position: relative;\n height: 60px;\n outline: none;\n transition: color .5s;\n}\nheader.main_display .nav-menu .navbar ul li:hover {\n background-color: rgba(0, 0, 0, 0.3);\n}\nheader.main_display .nav-menu .navbar ul li:hover a {\n color: #f13a19;\n /* @redIconsColor; */\n}\nheader.main_display .nav-menu .navbar ul li.background {\n width: 200px;\n margin: auto;\n}\nheader.main_display p {\n letter-spacing: 5px;\n font-weight: bold;\n font-size: 15px;\n}\nheader.main_display p.logo-line {\n -webkit-transform: translateX(-2rem);\n transform: translateX(-2rem);\n}\nheader.main_display p img {\n display: inline-block;\n height: 5.5rem;\n width: auto;\n}\nheader.main_display .middle {\n max-width: 80%;\n margin: 0 auto;\n background-color: rgba(255, 255, 255, 0.6);\n}\nheader.main_display .middle h1 {\n font-size: 1.8rem;\n font-weight: 600;\n color: #072704;\n}\nheader.main_display .middle .skills {\n font-size: 1rem;\n}\nheader.main_display .empty {\n height: 10rem;\n}\nmain {\n padding: 15px;\n}\nmain .about_me {\n margin-bottom: 100px;\n}\nmain .about_me h4 {\n color: #072704;\n margin-bottom: 25px;\n}\nmain .about_me .header {\n text-align: center;\n}\nmain .about_me .header div {\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nmain .about_me .header .underline {\n line-height: 3rem;\n border-bottom: 2px solid #000000;\n width: 60%;\n margin: auto;\n padding: 12px;\n}\nmain .about_me div {\n color: #222;\n}\nmain .about_me div.description .article .skills {\n margin-bottom: -23px;\n}\nmain .about_me div.description .article .skills span {\n margin: 0 3px 0 2px ;\n font-size: 6px;\n}\nmain .about_me div.description .article .skills span i {\n -webkit-transform: translateY(-4px);\n transform: translateY(-4px);\n}\nmain .about_me div .photo .wrapper_photo {\n border-radius: 50%;\n border: 1px solid black;\n overflow: hidden;\n max-height: 300px;\n max-width: 300px;\n}\nmain .about_me div .personal span {\n margin-right: 0.6em;\n}\nmain .about_me div .personal div {\n margin-bottom: 10px;\n}\nmain .about_me div .personal div.name {\n margin-bottom: 15px;\n color: #555;\n letter-spacing: 2px;\n font-size: 1.2em;\n}\nmain .about_me div .personal div.skype span {\n color: #00AFF0;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.skype span i {\n -webkit-transform: translateY(2px);\n transform: translateY(2px);\n}\nmain .about_me div .personal div.e-mail span {\n color: #00AFF0;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.e-mail span i {\n -webkit-transform: translateY(2px);\n transform: translateY(2px);\n}\nmain .about_me div .personal div.my_site a {\n color: inherit;\n text-decoration: underline;\n}\nmain .about_me div .personal div.my_site span.html {\n color: #FF6347;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.my_site span.html i {\n -webkit-transform: translateY(2px);\n transform: translateY(2px);\n}\nmain .about_me div .personal div.my_site span.hand {\n color: #00AFF0;\n font-size: 1.3em;\n}\nmain .about_me div .personal div.my_site span.hand i {\n -webkit-transform: translate(-104px, 21px);\n transform: translate(-104px, 21px);\n}\nmain .resume {\n margin-bottom: 150px;\n}\nmain .resume .header {\n text-align: center;\n}\nmain .resume .header div {\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nmain .resume .header div.education {\n text-align: justify;\n}\nmain .resume .header .underline {\n line-height: 3rem;\n border-bottom: 2px solid #000000;\n width: 60%;\n margin: auto;\n padding: 12px;\n}\nmain .resume h2 {\n text-align: center;\n}\nmain .resume .subheader {\n text-align: center;\n font-size: 14px;\n display: inline-block;\n background-color: #FF6347;\n color: white;\n font-weight: 600;\n font-style: italic;\n padding: 0 15px;\n margin: 3rem 0;\n}\nmain .resume .ico {\n text-align: center;\n margin: 25px 0;\n}\nmain .resume .ico i {\n color: #00AFF0;\n}\nmain .portfolio {\n background-color: #222;\n padding-top: 50px;\n}\nmain .portfolio .last-card {\n margin-bottom: 8rem;\n}\nmain .portfolio .card {\n position: relative;\n overflow: hidden;\n color: white;\n background-color: rgba(0, 0, 0, 0.8);\n text-align: center;\n box-shadow: 0 0 0 rgba(0, 0, 0, 0);\n transition: box-shadow 0.3s;\n}\nmain .portfolio .card .card-body {\n position: absolute;\n background-color: rgba(0, 0, 0, 0.6);\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n opacity: 1;\n transition: opacity .3s;\n}\nmain .portfolio .card .card-body .card-title {\n text-transform: uppercase;\n font-size: 1rem;\n margin-bottom: 1rem;\n color: #FF6347;\n}\nmain .portfolio .card .card-body .wrapper {\n transition: -webkit-transform 0.3s;\n transition: -webkit-transform .3s;\n transition: transform .3s;\n transition: transform .3s, -webkit-transform .3s;\n transition: transform 0.3s, -webkit-transform 0.3s;\n}\nmain .portfolio .card .card-body-2 {\n position: absolute;\n justify-content: center;\n align-items: center;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n}\nmain .portfolio .card .card-body-2 .card-look {\n display: inline-block;\n opacity: 0;\n color: white;\n -webkit-transform: translateY(-100px);\n transform: translateY(-100px);\n transition: opacity 0.3s, color 0.3s, -webkit-transform 0.3s;\n transition: opacity .3s, color .3s, -webkit-transform .3s;\n transition: opacity .3s, color .3s, transform .3s;\n transition: opacity .3s, color .3s, transform .3s, -webkit-transform .3s;\n transition: opacity 0.3s, color 0.3s, transform 0.3s, -webkit-transform 0.3s;\n border: 3px solid #FF6347;\n padding: 5px 20px;\n}\nmain .portfolio .card .card-img-top {\n opacity: .7;\n -webkit-transform: scale(1.2, 1.2);\n transform: scale(1.2, 1.2);\n transition: -webkit-transform 0.3s;\n transition: -webkit-transform .3s;\n transition: transform .3s;\n transition: transform .3s, -webkit-transform .3s;\n transition: transform 0.3s, -webkit-transform 0.3s;\n}\nmain .portfolio .card:hover {\n cursor: pointer;\n box-shadow: 0 0 30px rgba(0, 0, 0, 0.9);\n}\nmain .portfolio .card:hover .card-body {\n opacity: 0;\n}\nmain .portfolio .card:hover .card-body .wrapper {\n -webkit-transform: translateY(100px);\n transform: translateY(100px);\n}\nmain .portfolio .card:hover .card-img-top {\n -webkit-transform: scale(1, 1);\n transform: scale(1, 1);\n}\nmain .portfolio .card:hover .card-look {\n opacity: 1;\n color: white;\n -webkit-transform: translateY(0);\n transform: translateY(0);\n}\nmain .portfolio img {\n width: 100%;\n height: auto;\n}\nmain .portfolio .header {\n text-align: center;\n color: white;\n}\nmain .portfolio .header h2 {\n padding: 5px 25px;\n margin-left: auto;\n margin-right: auto;\n}\nmain .portfolio .header div {\n max-width: 85%;\n margin: auto;\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nfooter .contacts .header {\n text-align: center;\n}\nfooter .contacts .header div {\n letter-spacing: 4px;\n font-size: 1.2em;\n}\nfooter .contacts .header .underline {\n line-height: 3rem;\n border-bottom: 2px solid #000000;\n width: 60%;\n margin: auto;\n padding: 12px;\n}\nfooter .contacts .item {\n text-align: center;\n margin-bottom: 2rem;\n}\nfooter .contacts .item .ico {\n margin-bottom: 1rem;\n}\nfooter .contacts .item .ico span i {\n color: #00AFF0;\n}\nfooter .copyright {\n background-color: #222;\n color: white;\n margin-bottom: 0;\n}\nfooter .copyright i {\n color: #FF6347;\n cursor: pointer;\n}\n@media only screen and (max-width: 992px) {\n .description,\n .photo,\n .personal {\n margin-bottom: 40px;\n }\n}\n@media only screen and (max-width: 576px) {\n h2 {\n box-shadow: 0 11px 0 white, 0 20px 20px black;\n }\n .portfolio h2 {\n box-shadow: 0 11px 0 #222, 0 20px 20px white;\n }\n}\n@media only screen and (max-width: 480px) {\n h2 {\n margin-bottom: 100px;\n }\n .personal {\n margin-bottom: 15px;\n }\n}\n/* #1ee30b; */\nh3 {\n text-align: center;\n}\n",".middle.animated {\n -webkit-animation-duration: 1.5s;\n animation-duration: 1.5s;\n}\n.animated.fadeInRight,\n.animated.fadeInLeft {\n -webkit-animation-duration: 1s;\n animation-duration: 1s;\n}\n.navbar-nav .nav-item.item-4 {\n -webkit-animation-duration: 1.6s;\n animation-duration: 1.6s;\n}\n.navbar-nav .nav-item.item-3 {\n -webkit-animation-duration: 1.2s;\n animation-duration: 1.2s;\n}\n.navbar-nav .nav-item.item-2 {\n -webkit-animation-duration: 0.8s;\n animation-duration: 0.8s;\n}\n.navbar-nav .nav-item.item-1 {\n -webkit-animation-duration: 0.4s;\n animation-duration: 0.4s;\n}\n","\r\n/* Large Devices, Wide Screens */\r\n@media only screen and (max-width : 1200px) {\r\n main .about_me div .personal div.my_site span.hand i {\r\n transform: translate(183px, -11px); \r\n }\r\n\r\n header.main_display h1 {\r\n font-size: 1.5rem;\r\n }\r\n\r\n\r\n header.main_display,\r\n section.about_me{\r\n margin-bottom: 35px; \r\n }\r\n\r\n header p.web_html, \r\n header p.skills {\r\n font-size: 14px ! important;\r\n }\r\n \r\n header p.web_html {\r\n margin-bottom: 9px;\r\n }\r\n}\r\n\r\n\r\n@media only screen and (max-width : 954px) {\r\n header.main_display .middle .skills{\r\n display: none;\r\n }\r\n}\r\n\r\n\r\n\r\n/* Medium Devices, Desktops */\r\n@media only screen and (max-width : 992px) {\r\n \r\n main .about_me div .personal div.my_site span.hand i {\r\n transform: translate(-104px, 19px);\r\n }\r\n\r\n footer .contacts .header h1 {\r\n margin-bottom: 70px;\r\n }\r\n \r\n main .portfolio .card .card-body .card-title {\r\n font-size: 0.8rem;\r\n }\r\n}\r\n\r\n/* Small Devices, Tablets */\r\n@media only screen and (max-width : 768px) {\r\n main .portfolio .card .card-body .card-title {\r\n font-size: 0.7rem;\r\n }\r\n\r\n main .portfolio {\r\n padding-top: 50px;\r\n }\r\n\r\n main .portfolio .header div {\r\n font-size: 1rem;\r\n }\r\n\r\n main .portfolio .header h1 {\r\n margin-bottom: 47px;\r\n }\r\n\r\n}\r\n\r\n\r\n/* Small Devices, Tablets */\r\n@media only screen and (max-width : 576px) {\r\n #portfolio__ .row.mb-sm-5 {\r\n padding-left: 60px;\r\n padding-right: 60px;\r\n }\r\n\r\n main .portfolio .last-card {\r\n margin-bottom: 4rem;\r\n }\r\n \r\n}\r\n\r\n@media only screen and (max-width : 544px) {\r\n main .portfolio .header div {\r\n font-size: 0.8rem;\r\n } \r\n}\r\n\r\n\r\n/* Extra Small Devices, Phones */\r\n@media only screen and (max-width : 480px) {\r\n header.main_display p img {\r\n transform: translateX(-106px) !important;\r\n }\r\n\r\n h1{\r\n font-size: 1.7rem !important;\r\n }\r\n}\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/style.6b4bf5c471d8889e3f3e.css b/dist/style.6b4bf5c471d8889e3f3e.css new file mode 100644 index 0000000..bdbb249 --- /dev/null +++ b/dist/style.6b4bf5c471d8889e3f3e.css @@ -0,0 +1,9 @@ +@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,400i,600,700&subset=cyrillic); + +/*! + * animate.css -http://daneden.me/animate + * Version - 3.6.0 + * Licensed under the MIT license - http://opensource.org/licenses/MIT + * + * Copyright (c) 2018 Daniel Eden + */.animated{animation-duration:1s;animation-fill-mode:both}.animated.infinite{animation-iteration-count:infinite}@keyframes a{0%,20%,53%,80%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1);transform:translateZ(0)}40%,43%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-30px,0)}70%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}.bounce{animation-name:a;transform-origin:center bottom}@keyframes b{0%,50%,to{opacity:1}25%,75%{opacity:0}}.flash{animation-name:b}@keyframes c{0%{transform:scaleX(1)}50%{transform:scale3d(1.05,1.05,1.05)}to{transform:scaleX(1)}}.pulse{animation-name:c}@keyframes d{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}.rubberBand{animation-name:d}@keyframes e{0%,to{transform:translateZ(0)}10%,30%,50%,70%,90%{transform:translate3d(-10px,0,0)}20%,40%,60%,80%{transform:translate3d(10px,0,0)}}.shake{animation-name:e}@keyframes f{0%{transform:translateX(0)}6.5%{transform:translateX(-6px) rotateY(-9deg)}18.5%{transform:translateX(5px) rotateY(7deg)}31.5%{transform:translateX(-3px) rotateY(-5deg)}43.5%{transform:translateX(2px) rotateY(3deg)}50%{transform:translateX(0)}}.headShake{animation-timing-function:ease-in-out;animation-name:f}@keyframes g{20%{transform:rotate(15deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-5deg)}to{transform:rotate(0deg)}}.swing{transform-origin:top center;animation-name:g}@keyframes h{0%{transform:scaleX(1)}10%,20%{transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{transform:scaleX(1)}}.tada{animation-name:h}@keyframes i{0%{transform:translateZ(0)}15%{transform:translate3d(-25%,0,0) rotate(-5deg)}30%{transform:translate3d(20%,0,0) rotate(3deg)}45%{transform:translate3d(-15%,0,0) rotate(-3deg)}60%{transform:translate3d(10%,0,0) rotate(2deg)}75%{transform:translate3d(-5%,0,0) rotate(-1deg)}to{transform:translateZ(0)}}.wobble{animation-name:i}@keyframes j{0%,11.1%,to{transform:translateZ(0)}22.2%{transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{transform:skewX(6.25deg) skewY(6.25deg)}44.4%{transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{transform:skewX(.390625deg) skewY(.390625deg)}88.8%{transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{animation-name:j;transform-origin:center}@keyframes k{0%,20%,40%,60%,80%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}.bounceIn{animation-duration:.75s;animation-name:k}@keyframes l{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:translateZ(0)}}.bounceInDown{animation-name:l}@keyframes m{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:translateZ(0)}}.bounceInLeft{animation-name:m}@keyframes n{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:translateZ(0)}}.bounceInRight{animation-name:n}@keyframes o{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}.bounceInUp{animation-name:o}@keyframes p{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}.bounceOut{animation-duration:.75s;animation-name:p}@keyframes q{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.bounceOutDown{animation-name:q}@keyframes r{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}.bounceOutLeft{animation-name:r}@keyframes s{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.bounceOutRight{animation-name:s}@keyframes t{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}.bounceOutUp{animation-name:t}@keyframes u{0%{opacity:0}to{opacity:1}}.fadeIn{animation-name:u}@keyframes v{0%{opacity:0;transform:translate3d(0,-100%,0)}to{opacity:1;transform:translateZ(0)}}.fadeInDown{animation-name:v}@keyframes w{0%{opacity:0;transform:translate3d(0,-2000px,0)}to{opacity:1;transform:translateZ(0)}}.fadeInDownBig{animation-name:w}@keyframes x{0%{opacity:0;transform:translate3d(-100%,0,0)}to{opacity:1;transform:translateZ(0)}}.fadeInLeft{animation-name:x}@keyframes y{0%{opacity:0;transform:translate3d(-2000px,0,0)}to{opacity:1;transform:translateZ(0)}}.fadeInLeftBig{animation-name:y}@keyframes z{0%{opacity:0;transform:translate3d(100%,0,0)}to{opacity:1;transform:translateZ(0)}}.fadeInRight{animation-name:z}@keyframes A{0%{opacity:0;transform:translate3d(2000px,0,0)}to{opacity:1;transform:translateZ(0)}}.fadeInRightBig{animation-name:A}@keyframes B{0%{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:translateZ(0)}}.fadeInUp{animation-name:B}@keyframes C{0%{opacity:0;transform:translate3d(0,2000px,0)}to{opacity:1;transform:translateZ(0)}}.fadeInUpBig{animation-name:C}@keyframes D{0%{opacity:1}to{opacity:0}}.fadeOut{animation-name:D}@keyframes E{0%{opacity:1}to{opacity:0;transform:translate3d(0,100%,0)}}.fadeOutDown{animation-name:E}@keyframes F{0%{opacity:1}to{opacity:0;transform:translate3d(0,2000px,0)}}.fadeOutDownBig{animation-name:F}@keyframes G{0%{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0)}}.fadeOutLeft{animation-name:G}@keyframes H{0%{opacity:1}to{opacity:0;transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{animation-name:H}@keyframes I{0%{opacity:1}to{opacity:0;transform:translate3d(100%,0,0)}}.fadeOutRight{animation-name:I}@keyframes J{0%{opacity:1}to{opacity:0;transform:translate3d(2000px,0,0)}}.fadeOutRightBig{animation-name:J}@keyframes K{0%{opacity:1}to{opacity:0;transform:translate3d(0,-100%,0)}}.fadeOutUp{animation-name:K}@keyframes L{0%{opacity:1}to{opacity:0;transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{animation-name:L}@keyframes M{0%{transform:perspective(400px) rotateY(-1turn);animation-timing-function:ease-out}40%{transform:perspective(400px) translateZ(150px) rotateY(-190deg);animation-timing-function:ease-out}50%{transform:perspective(400px) translateZ(150px) rotateY(-170deg);animation-timing-function:ease-in}80%{transform:perspective(400px) scale3d(.95,.95,.95);animation-timing-function:ease-in}to{transform:perspective(400px);animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;animation-name:M}@keyframes N{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:N}@keyframes O{0%{transform:perspective(400px) rotateY(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateY(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateY(10deg);opacity:1}80%{transform:perspective(400px) rotateY(-5deg)}to{transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:O}@keyframes P{0%{transform:perspective(400px)}30%{transform:perspective(400px) rotateX(-20deg);opacity:1}to{transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{animation-duration:.75s;animation-name:P;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@keyframes Q{0%{transform:perspective(400px)}30%{transform:perspective(400px) rotateY(-15deg);opacity:1}to{transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{animation-duration:.75s;-webkit-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:Q}@keyframes R{0%{transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{transform:skewX(20deg);opacity:1}80%{transform:skewX(-5deg);opacity:1}to{transform:translateZ(0);opacity:1}}.lightSpeedIn{animation-name:R;animation-timing-function:ease-out}@keyframes S{0%{opacity:1}to{transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{animation-name:S;animation-timing-function:ease-in}@keyframes T{0%{transform-origin:center;transform:rotate(-200deg);opacity:0}to{transform-origin:center;transform:translateZ(0);opacity:1}}.rotateIn{animation-name:T}@keyframes U{0%{transform-origin:left bottom;transform:rotate(-45deg);opacity:0}to{transform-origin:left bottom;transform:translateZ(0);opacity:1}}.rotateInDownLeft{animation-name:U}@keyframes V{0%{transform-origin:right bottom;transform:rotate(45deg);opacity:0}to{transform-origin:right bottom;transform:translateZ(0);opacity:1}}.rotateInDownRight{animation-name:V}@keyframes W{0%{transform-origin:left bottom;transform:rotate(45deg);opacity:0}to{transform-origin:left bottom;transform:translateZ(0);opacity:1}}.rotateInUpLeft{animation-name:W}@keyframes X{0%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}to{transform-origin:right bottom;transform:translateZ(0);opacity:1}}.rotateInUpRight{animation-name:X}@keyframes Y{0%{transform-origin:center;opacity:1}to{transform-origin:center;transform:rotate(200deg);opacity:0}}.rotateOut{animation-name:Y}@keyframes Z{0%{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate(45deg);opacity:0}}.rotateOutDownLeft{animation-name:Z}@keyframes ab{0%{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate(-45deg);opacity:0}}.rotateOutDownRight{animation-name:ab}@keyframes bb{0%{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate(-45deg);opacity:0}}.rotateOutUpLeft{animation-name:bb}@keyframes cb{0%{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate(90deg);opacity:0}}.rotateOutUpRight{animation-name:cb}@keyframes db{0%{transform-origin:top left;animation-timing-function:ease-in-out}20%,60%{transform:rotate(80deg);transform-origin:top left;animation-timing-function:ease-in-out}40%,80%{transform:rotate(60deg);transform-origin:top left;animation-timing-function:ease-in-out;opacity:1}to{transform:translate3d(0,700px,0);opacity:0}}.hinge{animation-duration:2s;animation-name:db}@keyframes eb{0%{opacity:0;transform:scale(.1) rotate(30deg);transform-origin:center bottom}50%{transform:rotate(-10deg)}70%{transform:rotate(3deg)}to{opacity:1;transform:scale(1)}}.jackInTheBox{animation-name:eb}@keyframes fb{0%{opacity:0;transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;transform:translateZ(0)}}.rollIn{animation-name:fb}@keyframes gb{0%{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) rotate(120deg)}}.rollOut{animation-name:gb}@keyframes hb{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{animation-name:hb}@keyframes ib{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{animation-name:ib}@keyframes jb{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(10px,0,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{animation-name:jb}@keyframes kb{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{animation-name:kb}@keyframes lb{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{animation-name:lb}@keyframes mb{0%{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{animation-name:mb}@keyframes nb{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{animation-name:nb}@keyframes ob{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(-2000px,0,0);transform-origin:left center}}.zoomOutLeft{animation-name:ob}@keyframes pb{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(2000px,0,0);transform-origin:right center}}.zoomOutRight{animation-name:pb}@keyframes qb{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{animation-name:qb}@keyframes rb{0%{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translateZ(0)}}.slideInDown{animation-name:rb}@keyframes sb{0%{transform:translate3d(-100%,0,0);visibility:visible}to{transform:translateZ(0)}}.slideInLeft{animation-name:sb}@keyframes tb{0%{transform:translate3d(100%,0,0);visibility:visible}to{transform:translateZ(0)}}.slideInRight{animation-name:tb}@keyframes ub{0%{transform:translate3d(0,100%,0);visibility:visible}to{transform:translateZ(0)}}.slideInUp{animation-name:ub}@keyframes vb{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(0,100%,0)}}.slideOutDown{animation-name:vb}@keyframes wb{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(-100%,0,0)}}.slideOutLeft{animation-name:wb}@keyframes xb{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(100%,0,0)}}.slideOutRight{animation-name:xb}@keyframes yb{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(0,-100%,0)}}.slideOutUp{animation-name:yb}body{font-family:Open Sans,sans-serif}.main_display{text-transform:uppercase}.parallax-window{min-height:100vh;background-color:transparent;text-align:center;background-size:cover;background-repeat:no-repeat;background-position:50%}section{margin-bottom:15px}img{max-width:100%}h2{margin-bottom:30px}header.main_display{margin-bottom:10px}header.main_display .nav-menu{position:fixed;z-index:1;right:0;top:0;transition:background-color 1s;width:100%}header.main_display .nav-menu.show{height:100%;background-color:rgba(0,0,0,.8)}header.main_display .nav-menu button{background-color:#343a40;margin-left:auto;margin-right:1rem;margin-top:1rem}header.main_display .nav-menu button .lines{width:30px;height:30px;padding:3px 0;justify-content:space-between;align-items:center}header.main_display .nav-menu button .lines .line{width:30px;height:2px;background-color:#9a9da0;transition:transform .5s,opacity .5s}header.main_display .nav-menu button .lines .line-first.x{transform-origin:center center;transform:translateY(11px) rotate(45deg)}header.main_display .nav-menu button .lines .line-second.x{transform-origin:center center;transform:rotate(-45deg)}header.main_display .nav-menu button .lines .line-third.x{transform:translateY(-11px);opacity:0}header.main_display .nav-menu .navbar ul{position:relative}header.main_display .nav-menu .navbar ul li{transition:all .3s}header.main_display .nav-menu .navbar ul li a{color:#fff;display:block;text-transform:uppercase;font-size:1rem;letter-spacing:5px;position:relative;height:60px;outline:none;transition:color .5s}header.main_display .nav-menu .navbar ul li:hover{background-color:rgba(0,0,0,.3)}header.main_display .nav-menu .navbar ul li:hover a{color:#f13a19}header.main_display .nav-menu .navbar ul li.background{width:200px;margin:auto}header.main_display p{letter-spacing:5px;font-weight:700;font-size:15px}header.main_display p.logo-line{transform:translateX(-2rem)}header.main_display p img{display:inline-block;height:5.5rem;width:auto}header.main_display .middle{max-width:80%;margin:0 auto;background-color:hsla(0,0%,100%,.6)}header.main_display .middle h1{font-size:1.8rem;font-weight:600;color:#072704}header.main_display .middle .skills{font-size:1rem}header.main_display .empty{height:10rem}main{padding:15px}main .about_me{margin-bottom:100px}main .about_me h4{color:#072704;margin-bottom:25px}main .about_me .header{text-align:center}main .about_me .header div{letter-spacing:4px;font-size:1.2em}main .about_me .header .underline{line-height:3rem;border-bottom:2px solid #000;width:60%;margin:auto;padding:12px}main .about_me div{color:#222}main .about_me div.description .article .skills{margin-bottom:-23px}main .about_me div.description .article .skills span{margin:0 3px 0 2px;font-size:6px}main .about_me div.description .article .skills span i{transform:translateY(-4px)}main .about_me div .photo .wrapper_photo{border-radius:50%;border:1px solid #000;overflow:hidden;max-height:300px;max-width:300px}main .about_me div .personal span{margin-right:.6em}main .about_me div .personal div{margin-bottom:10px}main .about_me div .personal div.name{margin-bottom:15px;color:#555;letter-spacing:2px;font-size:1.2em}main .about_me div .personal div.skype span{color:#00aff0;font-size:1.3em}main .about_me div .personal div.skype span i{transform:translateY(2px)}main .about_me div .personal div.e-mail span{color:#00aff0;font-size:1.3em}main .about_me div .personal div.e-mail span i{transform:translateY(2px)}main .about_me div .personal div.my_site a{color:inherit;text-decoration:underline}main .about_me div .personal div.my_site span.html{color:tomato;font-size:1.3em}main .about_me div .personal div.my_site span.html i{transform:translateY(2px)}main .about_me div .personal div.my_site span.hand{color:#00aff0;font-size:1.3em}main .about_me div .personal div.my_site span.hand i{transform:translate(-104px,21px)}main .resume{margin-bottom:150px}main .resume .header{text-align:center}main .resume .header div{letter-spacing:4px;font-size:1.2em}main .resume .header div.education{text-align:justify}main .resume .header .underline{line-height:3rem;border-bottom:2px solid #000;width:60%;margin:auto;padding:12px}main .resume h2{text-align:center}main .resume .subheader{text-align:center;font-size:14px;display:inline-block;background-color:tomato;color:#fff;font-weight:600;font-style:italic;padding:0 15px;margin:3rem 0}main .resume .ico{text-align:center;margin:25px 0}main .resume .ico i{color:#00aff0}main .portfolio{background-color:#222;padding-top:50px}main .portfolio .last-card{margin-bottom:8rem}main .portfolio .card{position:relative;overflow:hidden;color:#fff;background-color:rgba(0,0,0,.8);text-align:center;box-shadow:0 0 0 transparent;transition:box-shadow .3s}main .portfolio .card .card-body{position:absolute;background-color:rgba(0,0,0,.6);width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;opacity:1;transition:opacity .3s}main .portfolio .card .card-body .card-title{text-transform:uppercase;font-size:1rem;margin-bottom:1rem;color:tomato}main .portfolio .card .card-body .wrapper{transition:transform .3s}main .portfolio .card .card-body-2{position:absolute;justify-content:center;align-items:center;top:0;bottom:0;left:0;right:0}main .portfolio .card .card-body-2 .card-look{display:inline-block;opacity:0;color:#fff;transform:translateY(-100px);transition:opacity .3s,color .3s,transform .3s;border:3px solid tomato;padding:5px 20px}main .portfolio .card .card-img-top{opacity:.7;transform:scale(1.2);transition:transform .3s}main .portfolio .card:hover{cursor:pointer;box-shadow:0 0 30px rgba(0,0,0,.9)}main .portfolio .card:hover .card-body{opacity:0}main .portfolio .card:hover .card-body .wrapper{transform:translateY(100px)}main .portfolio .card:hover .card-img-top{transform:scale(1)}main .portfolio .card:hover .card-look{opacity:1;color:#fff;transform:translateY(0)}main .portfolio img{width:100%;height:auto}main .portfolio .header{text-align:center;color:#fff}main .portfolio .header h2{padding:5px 25px;margin-left:auto;margin-right:auto}main .portfolio .header div{max-width:85%;margin:auto;letter-spacing:4px;font-size:1.2em}footer .contacts .header{text-align:center}footer .contacts .header div{letter-spacing:4px;font-size:1.2em}footer .contacts .header .underline{line-height:3rem;border-bottom:2px solid #000;width:60%;margin:auto;padding:12px}footer .contacts .item{text-align:center;margin-bottom:2rem}footer .contacts .item .ico{margin-bottom:1rem}footer .contacts .item .ico span i{color:#00aff0}footer .copyright{background-color:#222;color:#fff;margin-bottom:0}footer .copyright i{color:tomato;cursor:pointer}@media only screen and (max-width:992px){.description,.personal,.photo{margin-bottom:40px}}@media only screen and (max-width:576px){h2{box-shadow:0 11px 0 #fff,0 20px 20px #000}.portfolio h2{box-shadow:0 11px 0 #222,0 20px 20px #fff}}@media only screen and (max-width:480px){h2{margin-bottom:100px}.personal{margin-bottom:15px}}h3{text-align:center}.middle.animated{animation-duration:1.5s}.animated.fadeInLeft,.animated.fadeInRight{animation-duration:1s}.navbar-nav .nav-item.item-4{animation-duration:1.6s}.navbar-nav .nav-item.item-3{animation-duration:1.2s}.navbar-nav .nav-item.item-2{animation-duration:.8s}.navbar-nav .nav-item.item-1{animation-duration:.4s}@media only screen and (max-width:1200px){main .about_me div .personal div.my_site span.hand i{transform:translate(183px,-11px)}header.main_display h1{font-size:1.5rem}header.main_display,section.about_me{margin-bottom:35px}header p.skills,header p.web_html{font-size:14px!important}header p.web_html{margin-bottom:9px}}@media only screen and (max-width:954px){header.main_display .middle .skills{display:none}}@media only screen and (max-width:992px){main .about_me div .personal div.my_site span.hand i{transform:translate(-104px,19px)}footer .contacts .header h1{margin-bottom:70px}main .portfolio .card .card-body .card-title{font-size:.8rem}}@media only screen and (max-width:768px){main .portfolio .card .card-body .card-title{font-size:.7rem}main .portfolio{padding-top:50px}main .portfolio .header div{font-size:1rem}main .portfolio .header h1{margin-bottom:47px}}@media only screen and (max-width:576px){#portfolio__ .row.mb-sm-5{padding-left:60px;padding-right:60px}main .portfolio .last-card{margin-bottom:4rem}}@media only screen and (max-width:544px){main .portfolio .header div{font-size:.8rem}}@media only screen and (max-width:480px){header.main_display p img{transform:translateX(-106px)!important}h1{font-size:1.7rem!important}} \ No newline at end of file diff --git a/src/template.html b/src/template.html index e763be5..a6d2bee 100644 --- a/src/template.html +++ b/src/template.html @@ -7,7 +7,7 @@ - + type="image/x-icon"> diff --git a/webpack.config.js b/webpack.config.js index be7c059..6958b35 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -32,7 +32,7 @@ module.exports = { entry: { // Тут писать в порядке подключения в index.html // vendor: ['jquery'], bundle: './js/index.js', - metrica: './js/yandex_metrica.js' + // metrica: './js/yandex_metrica.js' }, output: { filename: '[name].[hash].js', // Можно filename: '[name].[chunkhash].js' но будут длинные имена файлов @@ -96,7 +96,7 @@ module.exports = { new HtmlWebpackPlugin({ template: './template.html', - chunks: [/* 'vendor', */ 'bundle', 'metrica'], //скрипты. которые нужно подключить к html + chunks: [/* 'vendor', */ 'bundle'/* , 'metrica' */], //скрипты. которые нужно подключить к html name: 'index.html', hash: true, inject: true @@ -105,7 +105,7 @@ module.exports = { new MiniCssExtractPlugin({ filename: 'style.[contenthash].css', }), - // new OptimizeCSSAssetsPlugin({}), // Минимизирует код css для отображения sourcemap нужно закомментировать данный плагин + new OptimizeCSSAssetsPlugin({}), // Минимизирует код css для отображения sourcemap нужно закомментировать данный плагин new CleanWebpackPlugin(['dist']), // Плагин очищает папку dist перед пересозданием файлов (не работает при webpack -w, работает при webpack) new webpack.HotModuleReplacementPlugin({}) ], From cb856d1ec6a0aa46077ea5998840e4a8a31142d0 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 3 Aug 2018 16:47:10 +0300 Subject: [PATCH 05/17] =?UTF-8?q?=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0?= =?UTF-8?q?=D0=BD=D1=8B=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B8=20=D0=B2=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=82=D0=B0=D0=BA=D1=82=D0=B0=D1=85,=20?= =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BD=D0=B0=20=D0=B0=D0=BD=D0=B8=D0=BC?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BD=D0=B0=20=D0=BC=D0=B0=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8C=D0=BA=D0=B8=D1=85=20=D1=8D=D0=BA=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=B0=D1=85=20=D0=B2=20=D0=BF=D0=BE=D1=80=D1=82=D1=84?= =?UTF-8?q?=D0=BE=D0=BB=D0=B8=D0=BE=20=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D1=81=D0=B0=D0=B9=D1=82!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/bundle.57c44ebb2341cfcfe95d.js | 12479 ---------------- dist/bundle.57c44ebb2341cfcfe95d.js.map | 1 - dist/bundle.7e428f07b6026431c40d.js | 1086 ++ ...ndrey.c3e88a55c06e6e07fe7cf5656da3f949.jpg | Bin 0 -> 113239 bytes dist/index.html | 44 +- ...f3e.css => style.b5174b9c1f97ca488059.css} | 2 +- src/image/zouk-pro_andrey.jpg | Bin 0 -> 113239 bytes src/js/contacts.js | 12 +- src/js/nav-menu.js | 3 +- src/js/portfolio.js | 4 + src/less/footer.less | 5 + src/less/header.less | 2 +- src/less/main.less | 16 +- src/less/media.less | 11 + src/template.html | 40 +- webpack.config.js | 2 +- 16 files changed, 1177 insertions(+), 12530 deletions(-) delete mode 100644 dist/bundle.57c44ebb2341cfcfe95d.js delete mode 100644 dist/bundle.57c44ebb2341cfcfe95d.js.map create mode 100644 dist/bundle.7e428f07b6026431c40d.js create mode 100644 dist/image/zouk-pro_andrey.c3e88a55c06e6e07fe7cf5656da3f949.jpg rename dist/{style.6b4bf5c471d8889e3f3e.css => style.b5174b9c1f97ca488059.css} (77%) create mode 100644 src/image/zouk-pro_andrey.jpg diff --git a/dist/bundle.57c44ebb2341cfcfe95d.js b/dist/bundle.57c44ebb2341cfcfe95d.js deleted file mode 100644 index 557e065..0000000 --- a/dist/bundle.57c44ebb2341cfcfe95d.js +++ /dev/null @@ -1,12479 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ function hotDisposeChunk(chunkId) { -/******/ delete installedChunks[chunkId]; -/******/ } -/******/ var parentHotUpdateCallback = window["webpackHotUpdate"]; -/******/ window["webpackHotUpdate"] = // eslint-disable-next-line no-unused-vars -/******/ function webpackHotUpdateCallback(chunkId, moreModules) { -/******/ hotAddUpdateChunk(chunkId, moreModules); -/******/ if (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules); -/******/ } ; -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotDownloadUpdateChunk(chunkId) { -/******/ var head = document.getElementsByTagName("head")[0]; -/******/ var script = document.createElement("script"); -/******/ script.charset = "utf-8"; -/******/ script.src = __webpack_require__.p + "" + chunkId + "." + hotCurrentHash + ".hot-update.js"; -/******/ ; -/******/ head.appendChild(script); -/******/ } -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotDownloadManifest(requestTimeout) { -/******/ requestTimeout = requestTimeout || 10000; -/******/ return new Promise(function(resolve, reject) { -/******/ if (typeof XMLHttpRequest === "undefined") -/******/ return reject(new Error("No browser support")); -/******/ try { -/******/ var request = new XMLHttpRequest(); -/******/ var requestPath = __webpack_require__.p + "" + hotCurrentHash + ".hot-update.json"; -/******/ request.open("GET", requestPath, true); -/******/ request.timeout = requestTimeout; -/******/ request.send(null); -/******/ } catch (err) { -/******/ return reject(err); -/******/ } -/******/ request.onreadystatechange = function() { -/******/ if (request.readyState !== 4) return; -/******/ if (request.status === 0) { -/******/ // timeout -/******/ reject( -/******/ new Error("Manifest request to " + requestPath + " timed out.") -/******/ ); -/******/ } else if (request.status === 404) { -/******/ // no update available -/******/ resolve(); -/******/ } else if (request.status !== 200 && request.status !== 304) { -/******/ // other failure -/******/ reject(new Error("Manifest request to " + requestPath + " failed.")); -/******/ } else { -/******/ // success -/******/ try { -/******/ var update = JSON.parse(request.responseText); -/******/ } catch (e) { -/******/ reject(e); -/******/ return; -/******/ } -/******/ resolve(update); -/******/ } -/******/ }; -/******/ }); -/******/ } -/******/ -/******/ var hotApplyOnUpdate = true; -/******/ var hotCurrentHash = "57c44ebb2341cfcfe95d"; // eslint-disable-line no-unused-vars -/******/ var hotRequestTimeout = 10000; -/******/ var hotCurrentModuleData = {}; -/******/ var hotCurrentChildModule; // eslint-disable-line no-unused-vars -/******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars -/******/ var hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotCreateRequire(moduleId) { -/******/ var me = installedModules[moduleId]; -/******/ if (!me) return __webpack_require__; -/******/ var fn = function(request) { -/******/ if (me.hot.active) { -/******/ if (installedModules[request]) { -/******/ if (installedModules[request].parents.indexOf(moduleId) === -1) -/******/ installedModules[request].parents.push(moduleId); -/******/ } else { -/******/ hotCurrentParents = [moduleId]; -/******/ hotCurrentChildModule = request; -/******/ } -/******/ if (me.children.indexOf(request) === -1) me.children.push(request); -/******/ } else { -/******/ console.warn( -/******/ "[HMR] unexpected require(" + -/******/ request + -/******/ ") from disposed module " + -/******/ moduleId -/******/ ); -/******/ hotCurrentParents = []; -/******/ } -/******/ return __webpack_require__(request); -/******/ }; -/******/ var ObjectFactory = function ObjectFactory(name) { -/******/ return { -/******/ configurable: true, -/******/ enumerable: true, -/******/ get: function() { -/******/ return __webpack_require__[name]; -/******/ }, -/******/ set: function(value) { -/******/ __webpack_require__[name] = value; -/******/ } -/******/ }; -/******/ }; -/******/ for (var name in __webpack_require__) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call(__webpack_require__, name) && -/******/ name !== "e" -/******/ ) { -/******/ Object.defineProperty(fn, name, ObjectFactory(name)); -/******/ } -/******/ } -/******/ fn.e = function(chunkId) { -/******/ if (hotStatus === "ready") hotSetStatus("prepare"); -/******/ hotChunksLoading++; -/******/ return __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) { -/******/ finishChunkLoading(); -/******/ throw err; -/******/ }); -/******/ -/******/ function finishChunkLoading() { -/******/ hotChunksLoading--; -/******/ if (hotStatus === "prepare") { -/******/ if (!hotWaitingFilesMap[chunkId]) { -/******/ hotEnsureUpdateChunk(chunkId); -/******/ } -/******/ if (hotChunksLoading === 0 && hotWaitingFiles === 0) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ } -/******/ } -/******/ }; -/******/ return fn; -/******/ } -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotCreateModule(moduleId) { -/******/ var hot = { -/******/ // private stuff -/******/ _acceptedDependencies: {}, -/******/ _declinedDependencies: {}, -/******/ _selfAccepted: false, -/******/ _selfDeclined: false, -/******/ _disposeHandlers: [], -/******/ _main: hotCurrentChildModule !== moduleId, -/******/ -/******/ // Module API -/******/ active: true, -/******/ accept: function(dep, callback) { -/******/ if (typeof dep === "undefined") hot._selfAccepted = true; -/******/ else if (typeof dep === "function") hot._selfAccepted = dep; -/******/ else if (typeof dep === "object") -/******/ for (var i = 0; i < dep.length; i++) -/******/ hot._acceptedDependencies[dep[i]] = callback || function() {}; -/******/ else hot._acceptedDependencies[dep] = callback || function() {}; -/******/ }, -/******/ decline: function(dep) { -/******/ if (typeof dep === "undefined") hot._selfDeclined = true; -/******/ else if (typeof dep === "object") -/******/ for (var i = 0; i < dep.length; i++) -/******/ hot._declinedDependencies[dep[i]] = true; -/******/ else hot._declinedDependencies[dep] = true; -/******/ }, -/******/ dispose: function(callback) { -/******/ hot._disposeHandlers.push(callback); -/******/ }, -/******/ addDisposeHandler: function(callback) { -/******/ hot._disposeHandlers.push(callback); -/******/ }, -/******/ removeDisposeHandler: function(callback) { -/******/ var idx = hot._disposeHandlers.indexOf(callback); -/******/ if (idx >= 0) hot._disposeHandlers.splice(idx, 1); -/******/ }, -/******/ -/******/ // Management API -/******/ check: hotCheck, -/******/ apply: hotApply, -/******/ status: function(l) { -/******/ if (!l) return hotStatus; -/******/ hotStatusHandlers.push(l); -/******/ }, -/******/ addStatusHandler: function(l) { -/******/ hotStatusHandlers.push(l); -/******/ }, -/******/ removeStatusHandler: function(l) { -/******/ var idx = hotStatusHandlers.indexOf(l); -/******/ if (idx >= 0) hotStatusHandlers.splice(idx, 1); -/******/ }, -/******/ -/******/ //inherit from previous dispose call -/******/ data: hotCurrentModuleData[moduleId] -/******/ }; -/******/ hotCurrentChildModule = undefined; -/******/ return hot; -/******/ } -/******/ -/******/ var hotStatusHandlers = []; -/******/ var hotStatus = "idle"; -/******/ -/******/ function hotSetStatus(newStatus) { -/******/ hotStatus = newStatus; -/******/ for (var i = 0; i < hotStatusHandlers.length; i++) -/******/ hotStatusHandlers[i].call(null, newStatus); -/******/ } -/******/ -/******/ // while downloading -/******/ var hotWaitingFiles = 0; -/******/ var hotChunksLoading = 0; -/******/ var hotWaitingFilesMap = {}; -/******/ var hotRequestedFilesMap = {}; -/******/ var hotAvailableFilesMap = {}; -/******/ var hotDeferred; -/******/ -/******/ // The update info -/******/ var hotUpdate, hotUpdateNewHash; -/******/ -/******/ function toModuleId(id) { -/******/ var isNumber = +id + "" === id; -/******/ return isNumber ? +id : id; -/******/ } -/******/ -/******/ function hotCheck(apply) { -/******/ if (hotStatus !== "idle") -/******/ throw new Error("check() is only allowed in idle status"); -/******/ hotApplyOnUpdate = apply; -/******/ hotSetStatus("check"); -/******/ return hotDownloadManifest(hotRequestTimeout).then(function(update) { -/******/ if (!update) { -/******/ hotSetStatus("idle"); -/******/ return null; -/******/ } -/******/ hotRequestedFilesMap = {}; -/******/ hotWaitingFilesMap = {}; -/******/ hotAvailableFilesMap = update.c; -/******/ hotUpdateNewHash = update.h; -/******/ -/******/ hotSetStatus("prepare"); -/******/ var promise = new Promise(function(resolve, reject) { -/******/ hotDeferred = { -/******/ resolve: resolve, -/******/ reject: reject -/******/ }; -/******/ }); -/******/ hotUpdate = {}; -/******/ var chunkId = "bundle"; -/******/ { -/******/ // eslint-disable-line no-lone-blocks -/******/ /*globals chunkId */ -/******/ hotEnsureUpdateChunk(chunkId); -/******/ } -/******/ if ( -/******/ hotStatus === "prepare" && -/******/ hotChunksLoading === 0 && -/******/ hotWaitingFiles === 0 -/******/ ) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ return promise; -/******/ }); -/******/ } -/******/ -/******/ // eslint-disable-next-line no-unused-vars -/******/ function hotAddUpdateChunk(chunkId, moreModules) { -/******/ if (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId]) -/******/ return; -/******/ hotRequestedFilesMap[chunkId] = false; -/******/ for (var moduleId in moreModules) { -/******/ if (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { -/******/ hotUpdate[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if (--hotWaitingFiles === 0 && hotChunksLoading === 0) { -/******/ hotUpdateDownloaded(); -/******/ } -/******/ } -/******/ -/******/ function hotEnsureUpdateChunk(chunkId) { -/******/ if (!hotAvailableFilesMap[chunkId]) { -/******/ hotWaitingFilesMap[chunkId] = true; -/******/ } else { -/******/ hotRequestedFilesMap[chunkId] = true; -/******/ hotWaitingFiles++; -/******/ hotDownloadUpdateChunk(chunkId); -/******/ } -/******/ } -/******/ -/******/ function hotUpdateDownloaded() { -/******/ hotSetStatus("ready"); -/******/ var deferred = hotDeferred; -/******/ hotDeferred = null; -/******/ if (!deferred) return; -/******/ if (hotApplyOnUpdate) { -/******/ // Wrap deferred object in Promise to mark it as a well-handled Promise to -/******/ // avoid triggering uncaught exception warning in Chrome. -/******/ // See https://bugs.chromium.org/p/chromium/issues/detail?id=465666 -/******/ Promise.resolve() -/******/ .then(function() { -/******/ return hotApply(hotApplyOnUpdate); -/******/ }) -/******/ .then( -/******/ function(result) { -/******/ deferred.resolve(result); -/******/ }, -/******/ function(err) { -/******/ deferred.reject(err); -/******/ } -/******/ ); -/******/ } else { -/******/ var outdatedModules = []; -/******/ for (var id in hotUpdate) { -/******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) { -/******/ outdatedModules.push(toModuleId(id)); -/******/ } -/******/ } -/******/ deferred.resolve(outdatedModules); -/******/ } -/******/ } -/******/ -/******/ function hotApply(options) { -/******/ if (hotStatus !== "ready") -/******/ throw new Error("apply() is only allowed in ready status"); -/******/ options = options || {}; -/******/ -/******/ var cb; -/******/ var i; -/******/ var j; -/******/ var module; -/******/ var moduleId; -/******/ -/******/ function getAffectedStuff(updateModuleId) { -/******/ var outdatedModules = [updateModuleId]; -/******/ var outdatedDependencies = {}; -/******/ -/******/ var queue = outdatedModules.slice().map(function(id) { -/******/ return { -/******/ chain: [id], -/******/ id: id -/******/ }; -/******/ }); -/******/ while (queue.length > 0) { -/******/ var queueItem = queue.pop(); -/******/ var moduleId = queueItem.id; -/******/ var chain = queueItem.chain; -/******/ module = installedModules[moduleId]; -/******/ if (!module || module.hot._selfAccepted) continue; -/******/ if (module.hot._selfDeclined) { -/******/ return { -/******/ type: "self-declined", -/******/ chain: chain, -/******/ moduleId: moduleId -/******/ }; -/******/ } -/******/ if (module.hot._main) { -/******/ return { -/******/ type: "unaccepted", -/******/ chain: chain, -/******/ moduleId: moduleId -/******/ }; -/******/ } -/******/ for (var i = 0; i < module.parents.length; i++) { -/******/ var parentId = module.parents[i]; -/******/ var parent = installedModules[parentId]; -/******/ if (!parent) continue; -/******/ if (parent.hot._declinedDependencies[moduleId]) { -/******/ return { -/******/ type: "declined", -/******/ chain: chain.concat([parentId]), -/******/ moduleId: moduleId, -/******/ parentId: parentId -/******/ }; -/******/ } -/******/ if (outdatedModules.indexOf(parentId) !== -1) continue; -/******/ if (parent.hot._acceptedDependencies[moduleId]) { -/******/ if (!outdatedDependencies[parentId]) -/******/ outdatedDependencies[parentId] = []; -/******/ addAllToSet(outdatedDependencies[parentId], [moduleId]); -/******/ continue; -/******/ } -/******/ delete outdatedDependencies[parentId]; -/******/ outdatedModules.push(parentId); -/******/ queue.push({ -/******/ chain: chain.concat([parentId]), -/******/ id: parentId -/******/ }); -/******/ } -/******/ } -/******/ -/******/ return { -/******/ type: "accepted", -/******/ moduleId: updateModuleId, -/******/ outdatedModules: outdatedModules, -/******/ outdatedDependencies: outdatedDependencies -/******/ }; -/******/ } -/******/ -/******/ function addAllToSet(a, b) { -/******/ for (var i = 0; i < b.length; i++) { -/******/ var item = b[i]; -/******/ if (a.indexOf(item) === -1) a.push(item); -/******/ } -/******/ } -/******/ -/******/ // at begin all updates modules are outdated -/******/ // the "outdated" status can propagate to parents if they don't accept the children -/******/ var outdatedDependencies = {}; -/******/ var outdatedModules = []; -/******/ var appliedUpdate = {}; -/******/ -/******/ var warnUnexpectedRequire = function warnUnexpectedRequire() { -/******/ console.warn( -/******/ "[HMR] unexpected require(" + result.moduleId + ") to disposed module" -/******/ ); -/******/ }; -/******/ -/******/ for (var id in hotUpdate) { -/******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) { -/******/ moduleId = toModuleId(id); -/******/ /** @type {TODO} */ -/******/ var result; -/******/ if (hotUpdate[id]) { -/******/ result = getAffectedStuff(moduleId); -/******/ } else { -/******/ result = { -/******/ type: "disposed", -/******/ moduleId: id -/******/ }; -/******/ } -/******/ /** @type {Error|false} */ -/******/ var abortError = false; -/******/ var doApply = false; -/******/ var doDispose = false; -/******/ var chainInfo = ""; -/******/ if (result.chain) { -/******/ chainInfo = "\nUpdate propagation: " + result.chain.join(" -> "); -/******/ } -/******/ switch (result.type) { -/******/ case "self-declined": -/******/ if (options.onDeclined) options.onDeclined(result); -/******/ if (!options.ignoreDeclined) -/******/ abortError = new Error( -/******/ "Aborted because of self decline: " + -/******/ result.moduleId + -/******/ chainInfo -/******/ ); -/******/ break; -/******/ case "declined": -/******/ if (options.onDeclined) options.onDeclined(result); -/******/ if (!options.ignoreDeclined) -/******/ abortError = new Error( -/******/ "Aborted because of declined dependency: " + -/******/ result.moduleId + -/******/ " in " + -/******/ result.parentId + -/******/ chainInfo -/******/ ); -/******/ break; -/******/ case "unaccepted": -/******/ if (options.onUnaccepted) options.onUnaccepted(result); -/******/ if (!options.ignoreUnaccepted) -/******/ abortError = new Error( -/******/ "Aborted because " + moduleId + " is not accepted" + chainInfo -/******/ ); -/******/ break; -/******/ case "accepted": -/******/ if (options.onAccepted) options.onAccepted(result); -/******/ doApply = true; -/******/ break; -/******/ case "disposed": -/******/ if (options.onDisposed) options.onDisposed(result); -/******/ doDispose = true; -/******/ break; -/******/ default: -/******/ throw new Error("Unexception type " + result.type); -/******/ } -/******/ if (abortError) { -/******/ hotSetStatus("abort"); -/******/ return Promise.reject(abortError); -/******/ } -/******/ if (doApply) { -/******/ appliedUpdate[moduleId] = hotUpdate[moduleId]; -/******/ addAllToSet(outdatedModules, result.outdatedModules); -/******/ for (moduleId in result.outdatedDependencies) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call( -/******/ result.outdatedDependencies, -/******/ moduleId -/******/ ) -/******/ ) { -/******/ if (!outdatedDependencies[moduleId]) -/******/ outdatedDependencies[moduleId] = []; -/******/ addAllToSet( -/******/ outdatedDependencies[moduleId], -/******/ result.outdatedDependencies[moduleId] -/******/ ); -/******/ } -/******/ } -/******/ } -/******/ if (doDispose) { -/******/ addAllToSet(outdatedModules, [result.moduleId]); -/******/ appliedUpdate[moduleId] = warnUnexpectedRequire; -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Store self accepted outdated modules to require them later by the module system -/******/ var outdatedSelfAcceptedModules = []; -/******/ for (i = 0; i < outdatedModules.length; i++) { -/******/ moduleId = outdatedModules[i]; -/******/ if ( -/******/ installedModules[moduleId] && -/******/ installedModules[moduleId].hot._selfAccepted -/******/ ) -/******/ outdatedSelfAcceptedModules.push({ -/******/ module: moduleId, -/******/ errorHandler: installedModules[moduleId].hot._selfAccepted -/******/ }); -/******/ } -/******/ -/******/ // Now in "dispose" phase -/******/ hotSetStatus("dispose"); -/******/ Object.keys(hotAvailableFilesMap).forEach(function(chunkId) { -/******/ if (hotAvailableFilesMap[chunkId] === false) { -/******/ hotDisposeChunk(chunkId); -/******/ } -/******/ }); -/******/ -/******/ var idx; -/******/ var queue = outdatedModules.slice(); -/******/ while (queue.length > 0) { -/******/ moduleId = queue.pop(); -/******/ module = installedModules[moduleId]; -/******/ if (!module) continue; -/******/ -/******/ var data = {}; -/******/ -/******/ // Call dispose handlers -/******/ var disposeHandlers = module.hot._disposeHandlers; -/******/ for (j = 0; j < disposeHandlers.length; j++) { -/******/ cb = disposeHandlers[j]; -/******/ cb(data); -/******/ } -/******/ hotCurrentModuleData[moduleId] = data; -/******/ -/******/ // disable module (this disables requires from this module) -/******/ module.hot.active = false; -/******/ -/******/ // remove module from cache -/******/ delete installedModules[moduleId]; -/******/ -/******/ // when disposing there is no need to call dispose handler -/******/ delete outdatedDependencies[moduleId]; -/******/ -/******/ // remove "parents" references from all children -/******/ for (j = 0; j < module.children.length; j++) { -/******/ var child = installedModules[module.children[j]]; -/******/ if (!child) continue; -/******/ idx = child.parents.indexOf(moduleId); -/******/ if (idx >= 0) { -/******/ child.parents.splice(idx, 1); -/******/ } -/******/ } -/******/ } -/******/ -/******/ // remove outdated dependency from module children -/******/ var dependency; -/******/ var moduleOutdatedDependencies; -/******/ for (moduleId in outdatedDependencies) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId) -/******/ ) { -/******/ module = installedModules[moduleId]; -/******/ if (module) { -/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; -/******/ for (j = 0; j < moduleOutdatedDependencies.length; j++) { -/******/ dependency = moduleOutdatedDependencies[j]; -/******/ idx = module.children.indexOf(dependency); -/******/ if (idx >= 0) module.children.splice(idx, 1); -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Not in "apply" phase -/******/ hotSetStatus("apply"); -/******/ -/******/ hotCurrentHash = hotUpdateNewHash; -/******/ -/******/ // insert new code -/******/ for (moduleId in appliedUpdate) { -/******/ if (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) { -/******/ modules[moduleId] = appliedUpdate[moduleId]; -/******/ } -/******/ } -/******/ -/******/ // call accept handlers -/******/ var error = null; -/******/ for (moduleId in outdatedDependencies) { -/******/ if ( -/******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId) -/******/ ) { -/******/ module = installedModules[moduleId]; -/******/ if (module) { -/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; -/******/ var callbacks = []; -/******/ for (i = 0; i < moduleOutdatedDependencies.length; i++) { -/******/ dependency = moduleOutdatedDependencies[i]; -/******/ cb = module.hot._acceptedDependencies[dependency]; -/******/ if (cb) { -/******/ if (callbacks.indexOf(cb) !== -1) continue; -/******/ callbacks.push(cb); -/******/ } -/******/ } -/******/ for (i = 0; i < callbacks.length; i++) { -/******/ cb = callbacks[i]; -/******/ try { -/******/ cb(moduleOutdatedDependencies); -/******/ } catch (err) { -/******/ if (options.onErrored) { -/******/ options.onErrored({ -/******/ type: "accept-errored", -/******/ moduleId: moduleId, -/******/ dependencyId: moduleOutdatedDependencies[i], -/******/ error: err -/******/ }); -/******/ } -/******/ if (!options.ignoreErrored) { -/******/ if (!error) error = err; -/******/ } -/******/ } -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // Load self accepted modules -/******/ for (i = 0; i < outdatedSelfAcceptedModules.length; i++) { -/******/ var item = outdatedSelfAcceptedModules[i]; -/******/ moduleId = item.module; -/******/ hotCurrentParents = [moduleId]; -/******/ try { -/******/ __webpack_require__(moduleId); -/******/ } catch (err) { -/******/ if (typeof item.errorHandler === "function") { -/******/ try { -/******/ item.errorHandler(err); -/******/ } catch (err2) { -/******/ if (options.onErrored) { -/******/ options.onErrored({ -/******/ type: "self-accept-error-handler-errored", -/******/ moduleId: moduleId, -/******/ error: err2, -/******/ originalError: err -/******/ }); -/******/ } -/******/ if (!options.ignoreErrored) { -/******/ if (!error) error = err2; -/******/ } -/******/ if (!error) error = err; -/******/ } -/******/ } else { -/******/ if (options.onErrored) { -/******/ options.onErrored({ -/******/ type: "self-accept-errored", -/******/ moduleId: moduleId, -/******/ error: err -/******/ }); -/******/ } -/******/ if (!options.ignoreErrored) { -/******/ if (!error) error = err; -/******/ } -/******/ } -/******/ } -/******/ } -/******/ -/******/ // handle errors in accept handlers and self accepted module load -/******/ if (error) { -/******/ hotSetStatus("fail"); -/******/ return Promise.reject(error); -/******/ } -/******/ -/******/ hotSetStatus("idle"); -/******/ return new Promise(function(resolve) { -/******/ resolve(outdatedModules); -/******/ }); -/******/ } -/******/ -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {}, -/******/ hot: hotCreateModule(moduleId), -/******/ parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp), -/******/ children: [] -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId)); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // __webpack_hash__ -/******/ __webpack_require__.h = function() { return hotCurrentHash; }; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return hotCreateRequire("./js/index.js")(__webpack_require__.s = "./js/index.js"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "../node_modules/jquery/dist/jquery.js": -/*!*********************************************!*\ - !*** ../node_modules/jquery/dist/jquery.js ***! - \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - * jQuery JavaScript Library v3.3.1 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2018-01-20T17:24Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var document = window.document; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - - - - var preservedScriptAttributes = { - type: true, - src: true, - noModule: true - }; - - function DOMEval( code, doc, node ) { - doc = doc || document; - - var i, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - if ( node[ i ] ) { - script[ i ] = node[ i ]; - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.3.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android <=4.0 only - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && Array.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - - /* eslint-disable no-unused-vars */ - // See https://github.com/eslint/eslint/issues/6125 - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - DOMEval( code ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android <=4.0 only - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.3 - * https://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-08-08 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - disabledAncestor = addCombinator( - function( elem ) { - return elem.disabled === true && ("form" in elem || "label" in elem); - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[i] = "#" + nid + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement("fieldset"); - - try { - return !!fn( el ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - disabledAncestor( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( preferredDoc !== document && - (subWindow = document.defaultView) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( el ) { - el.className = "i"; - return !el.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( el ) { - el.appendChild( document.createComment("") ); - return !el.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID filter and find - if ( support.getById ) { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( (elem = elems[i++]) ) { - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( el ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( el ) { - el.innerHTML = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll(":enabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll(":disabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( el ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return (sel + "").replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( (oldCache = uniqueCache[ key ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( el ) { - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( el ) { - el.innerHTML = ""; - return el.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( el ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( el ) { - return el.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -}; -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( nodeName( elem, "iframe" ) ) { - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the master Deferred - master = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return master.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); - } - - return master.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - jQuery.contains( elem.ownerDocument, elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - -var swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // Support: IE <=9 only - option: [ 1, "" ], - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
    " ], - col: [ 2, "", "
    " ], - tr: [ 2, "", "
    " ], - td: [ 3, "", "
    " ], - - _default: [ 0, "", "" ] -}; - -// Support: IE <=9 only -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); -var documentElement = document.documentElement; - - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 only -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - // Make a writable jQuery.Event from the native event object - var event = jQuery.event.fix( nativeEvent ); - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - /* eslint-disable max-len */ - - // See https://github.com/eslint/eslint/issues/3229 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - - /* eslint-enable */ - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - div.style.position = "absolute"; - scrollboxSizeVal = div.offsetWidth === 36 || "absolute"; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style; - -// Return a css property mapped to a potentially vendor prefixed property -function vendorPropName( name ) { - - // Shortcut for names that are not vendor prefixed - if ( name in emptyStyle ) { - return name; - } - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a property mapped along what jQuery.cssProps suggests or to -// a vendor prefixed property. -function finalPropName( name ) { - var ret = jQuery.cssProps[ name ]; - if ( !ret ) { - ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; - } - return ret; -} - -function setPositiveNumber( elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - ) ); - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - val = curCSS( elem, dimension, styles ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox; - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - // Check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = valueIsBorderBox && - ( support.boxSizingReliable() || val === elem.style[ dimension ] ); - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - if ( val === "auto" || - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) { - - val = elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ]; - - // offsetWidth/offsetHeight provide border-box values - valueIsBorderBox = true; - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - if ( type === "number" ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra && boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ); - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && support.scrollboxSize() === styles.position ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && - ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || - jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = Date.now(); - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - - -jQuery._evalUrl = function( url ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - "throws": true - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - + \ No newline at end of file diff --git a/dist/style.6b4bf5c471d8889e3f3e.css b/dist/style.b5174b9c1f97ca488059.css similarity index 77% rename from dist/style.6b4bf5c471d8889e3f3e.css rename to dist/style.b5174b9c1f97ca488059.css index bdbb249..962b265 100644 --- a/dist/style.6b4bf5c471d8889e3f3e.css +++ b/dist/style.b5174b9c1f97ca488059.css @@ -6,4 +6,4 @@ * Licensed under the MIT license - http://opensource.org/licenses/MIT * * Copyright (c) 2018 Daniel Eden - */.animated{animation-duration:1s;animation-fill-mode:both}.animated.infinite{animation-iteration-count:infinite}@keyframes a{0%,20%,53%,80%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1);transform:translateZ(0)}40%,43%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-30px,0)}70%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}.bounce{animation-name:a;transform-origin:center bottom}@keyframes b{0%,50%,to{opacity:1}25%,75%{opacity:0}}.flash{animation-name:b}@keyframes c{0%{transform:scaleX(1)}50%{transform:scale3d(1.05,1.05,1.05)}to{transform:scaleX(1)}}.pulse{animation-name:c}@keyframes d{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}.rubberBand{animation-name:d}@keyframes e{0%,to{transform:translateZ(0)}10%,30%,50%,70%,90%{transform:translate3d(-10px,0,0)}20%,40%,60%,80%{transform:translate3d(10px,0,0)}}.shake{animation-name:e}@keyframes f{0%{transform:translateX(0)}6.5%{transform:translateX(-6px) rotateY(-9deg)}18.5%{transform:translateX(5px) rotateY(7deg)}31.5%{transform:translateX(-3px) rotateY(-5deg)}43.5%{transform:translateX(2px) rotateY(3deg)}50%{transform:translateX(0)}}.headShake{animation-timing-function:ease-in-out;animation-name:f}@keyframes g{20%{transform:rotate(15deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-5deg)}to{transform:rotate(0deg)}}.swing{transform-origin:top center;animation-name:g}@keyframes h{0%{transform:scaleX(1)}10%,20%{transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{transform:scaleX(1)}}.tada{animation-name:h}@keyframes i{0%{transform:translateZ(0)}15%{transform:translate3d(-25%,0,0) rotate(-5deg)}30%{transform:translate3d(20%,0,0) rotate(3deg)}45%{transform:translate3d(-15%,0,0) rotate(-3deg)}60%{transform:translate3d(10%,0,0) rotate(2deg)}75%{transform:translate3d(-5%,0,0) rotate(-1deg)}to{transform:translateZ(0)}}.wobble{animation-name:i}@keyframes j{0%,11.1%,to{transform:translateZ(0)}22.2%{transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{transform:skewX(6.25deg) skewY(6.25deg)}44.4%{transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{transform:skewX(.390625deg) skewY(.390625deg)}88.8%{transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{animation-name:j;transform-origin:center}@keyframes k{0%,20%,40%,60%,80%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}.bounceIn{animation-duration:.75s;animation-name:k}@keyframes l{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:translateZ(0)}}.bounceInDown{animation-name:l}@keyframes m{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:translateZ(0)}}.bounceInLeft{animation-name:m}@keyframes n{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:translateZ(0)}}.bounceInRight{animation-name:n}@keyframes o{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}.bounceInUp{animation-name:o}@keyframes p{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}.bounceOut{animation-duration:.75s;animation-name:p}@keyframes q{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.bounceOutDown{animation-name:q}@keyframes r{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}.bounceOutLeft{animation-name:r}@keyframes s{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.bounceOutRight{animation-name:s}@keyframes t{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}.bounceOutUp{animation-name:t}@keyframes u{0%{opacity:0}to{opacity:1}}.fadeIn{animation-name:u}@keyframes v{0%{opacity:0;transform:translate3d(0,-100%,0)}to{opacity:1;transform:translateZ(0)}}.fadeInDown{animation-name:v}@keyframes w{0%{opacity:0;transform:translate3d(0,-2000px,0)}to{opacity:1;transform:translateZ(0)}}.fadeInDownBig{animation-name:w}@keyframes x{0%{opacity:0;transform:translate3d(-100%,0,0)}to{opacity:1;transform:translateZ(0)}}.fadeInLeft{animation-name:x}@keyframes y{0%{opacity:0;transform:translate3d(-2000px,0,0)}to{opacity:1;transform:translateZ(0)}}.fadeInLeftBig{animation-name:y}@keyframes z{0%{opacity:0;transform:translate3d(100%,0,0)}to{opacity:1;transform:translateZ(0)}}.fadeInRight{animation-name:z}@keyframes A{0%{opacity:0;transform:translate3d(2000px,0,0)}to{opacity:1;transform:translateZ(0)}}.fadeInRightBig{animation-name:A}@keyframes B{0%{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:translateZ(0)}}.fadeInUp{animation-name:B}@keyframes C{0%{opacity:0;transform:translate3d(0,2000px,0)}to{opacity:1;transform:translateZ(0)}}.fadeInUpBig{animation-name:C}@keyframes D{0%{opacity:1}to{opacity:0}}.fadeOut{animation-name:D}@keyframes E{0%{opacity:1}to{opacity:0;transform:translate3d(0,100%,0)}}.fadeOutDown{animation-name:E}@keyframes F{0%{opacity:1}to{opacity:0;transform:translate3d(0,2000px,0)}}.fadeOutDownBig{animation-name:F}@keyframes G{0%{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0)}}.fadeOutLeft{animation-name:G}@keyframes H{0%{opacity:1}to{opacity:0;transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{animation-name:H}@keyframes I{0%{opacity:1}to{opacity:0;transform:translate3d(100%,0,0)}}.fadeOutRight{animation-name:I}@keyframes J{0%{opacity:1}to{opacity:0;transform:translate3d(2000px,0,0)}}.fadeOutRightBig{animation-name:J}@keyframes K{0%{opacity:1}to{opacity:0;transform:translate3d(0,-100%,0)}}.fadeOutUp{animation-name:K}@keyframes L{0%{opacity:1}to{opacity:0;transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{animation-name:L}@keyframes M{0%{transform:perspective(400px) rotateY(-1turn);animation-timing-function:ease-out}40%{transform:perspective(400px) translateZ(150px) rotateY(-190deg);animation-timing-function:ease-out}50%{transform:perspective(400px) translateZ(150px) rotateY(-170deg);animation-timing-function:ease-in}80%{transform:perspective(400px) scale3d(.95,.95,.95);animation-timing-function:ease-in}to{transform:perspective(400px);animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;animation-name:M}@keyframes N{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:N}@keyframes O{0%{transform:perspective(400px) rotateY(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateY(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateY(10deg);opacity:1}80%{transform:perspective(400px) rotateY(-5deg)}to{transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:O}@keyframes P{0%{transform:perspective(400px)}30%{transform:perspective(400px) rotateX(-20deg);opacity:1}to{transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{animation-duration:.75s;animation-name:P;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@keyframes Q{0%{transform:perspective(400px)}30%{transform:perspective(400px) rotateY(-15deg);opacity:1}to{transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{animation-duration:.75s;-webkit-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:Q}@keyframes R{0%{transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{transform:skewX(20deg);opacity:1}80%{transform:skewX(-5deg);opacity:1}to{transform:translateZ(0);opacity:1}}.lightSpeedIn{animation-name:R;animation-timing-function:ease-out}@keyframes S{0%{opacity:1}to{transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{animation-name:S;animation-timing-function:ease-in}@keyframes T{0%{transform-origin:center;transform:rotate(-200deg);opacity:0}to{transform-origin:center;transform:translateZ(0);opacity:1}}.rotateIn{animation-name:T}@keyframes U{0%{transform-origin:left bottom;transform:rotate(-45deg);opacity:0}to{transform-origin:left bottom;transform:translateZ(0);opacity:1}}.rotateInDownLeft{animation-name:U}@keyframes V{0%{transform-origin:right bottom;transform:rotate(45deg);opacity:0}to{transform-origin:right bottom;transform:translateZ(0);opacity:1}}.rotateInDownRight{animation-name:V}@keyframes W{0%{transform-origin:left bottom;transform:rotate(45deg);opacity:0}to{transform-origin:left bottom;transform:translateZ(0);opacity:1}}.rotateInUpLeft{animation-name:W}@keyframes X{0%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}to{transform-origin:right bottom;transform:translateZ(0);opacity:1}}.rotateInUpRight{animation-name:X}@keyframes Y{0%{transform-origin:center;opacity:1}to{transform-origin:center;transform:rotate(200deg);opacity:0}}.rotateOut{animation-name:Y}@keyframes Z{0%{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate(45deg);opacity:0}}.rotateOutDownLeft{animation-name:Z}@keyframes ab{0%{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate(-45deg);opacity:0}}.rotateOutDownRight{animation-name:ab}@keyframes bb{0%{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate(-45deg);opacity:0}}.rotateOutUpLeft{animation-name:bb}@keyframes cb{0%{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate(90deg);opacity:0}}.rotateOutUpRight{animation-name:cb}@keyframes db{0%{transform-origin:top left;animation-timing-function:ease-in-out}20%,60%{transform:rotate(80deg);transform-origin:top left;animation-timing-function:ease-in-out}40%,80%{transform:rotate(60deg);transform-origin:top left;animation-timing-function:ease-in-out;opacity:1}to{transform:translate3d(0,700px,0);opacity:0}}.hinge{animation-duration:2s;animation-name:db}@keyframes eb{0%{opacity:0;transform:scale(.1) rotate(30deg);transform-origin:center bottom}50%{transform:rotate(-10deg)}70%{transform:rotate(3deg)}to{opacity:1;transform:scale(1)}}.jackInTheBox{animation-name:eb}@keyframes fb{0%{opacity:0;transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;transform:translateZ(0)}}.rollIn{animation-name:fb}@keyframes gb{0%{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) rotate(120deg)}}.rollOut{animation-name:gb}@keyframes hb{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{animation-name:hb}@keyframes ib{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{animation-name:ib}@keyframes jb{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(10px,0,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{animation-name:jb}@keyframes kb{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{animation-name:kb}@keyframes lb{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{animation-name:lb}@keyframes mb{0%{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{animation-name:mb}@keyframes nb{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{animation-name:nb}@keyframes ob{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(-2000px,0,0);transform-origin:left center}}.zoomOutLeft{animation-name:ob}@keyframes pb{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(2000px,0,0);transform-origin:right center}}.zoomOutRight{animation-name:pb}@keyframes qb{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{animation-name:qb}@keyframes rb{0%{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translateZ(0)}}.slideInDown{animation-name:rb}@keyframes sb{0%{transform:translate3d(-100%,0,0);visibility:visible}to{transform:translateZ(0)}}.slideInLeft{animation-name:sb}@keyframes tb{0%{transform:translate3d(100%,0,0);visibility:visible}to{transform:translateZ(0)}}.slideInRight{animation-name:tb}@keyframes ub{0%{transform:translate3d(0,100%,0);visibility:visible}to{transform:translateZ(0)}}.slideInUp{animation-name:ub}@keyframes vb{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(0,100%,0)}}.slideOutDown{animation-name:vb}@keyframes wb{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(-100%,0,0)}}.slideOutLeft{animation-name:wb}@keyframes xb{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(100%,0,0)}}.slideOutRight{animation-name:xb}@keyframes yb{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(0,-100%,0)}}.slideOutUp{animation-name:yb}body{font-family:Open Sans,sans-serif}.main_display{text-transform:uppercase}.parallax-window{min-height:100vh;background-color:transparent;text-align:center;background-size:cover;background-repeat:no-repeat;background-position:50%}section{margin-bottom:15px}img{max-width:100%}h2{margin-bottom:30px}header.main_display{margin-bottom:10px}header.main_display .nav-menu{position:fixed;z-index:1;right:0;top:0;transition:background-color 1s;width:100%}header.main_display .nav-menu.show{height:100%;background-color:rgba(0,0,0,.8)}header.main_display .nav-menu button{background-color:#343a40;margin-left:auto;margin-right:1rem;margin-top:1rem}header.main_display .nav-menu button .lines{width:30px;height:30px;padding:3px 0;justify-content:space-between;align-items:center}header.main_display .nav-menu button .lines .line{width:30px;height:2px;background-color:#9a9da0;transition:transform .5s,opacity .5s}header.main_display .nav-menu button .lines .line-first.x{transform-origin:center center;transform:translateY(11px) rotate(45deg)}header.main_display .nav-menu button .lines .line-second.x{transform-origin:center center;transform:rotate(-45deg)}header.main_display .nav-menu button .lines .line-third.x{transform:translateY(-11px);opacity:0}header.main_display .nav-menu .navbar ul{position:relative}header.main_display .nav-menu .navbar ul li{transition:all .3s}header.main_display .nav-menu .navbar ul li a{color:#fff;display:block;text-transform:uppercase;font-size:1rem;letter-spacing:5px;position:relative;height:60px;outline:none;transition:color .5s}header.main_display .nav-menu .navbar ul li:hover{background-color:rgba(0,0,0,.3)}header.main_display .nav-menu .navbar ul li:hover a{color:#f13a19}header.main_display .nav-menu .navbar ul li.background{width:200px;margin:auto}header.main_display p{letter-spacing:5px;font-weight:700;font-size:15px}header.main_display p.logo-line{transform:translateX(-2rem)}header.main_display p img{display:inline-block;height:5.5rem;width:auto}header.main_display .middle{max-width:80%;margin:0 auto;background-color:hsla(0,0%,100%,.6)}header.main_display .middle h1{font-size:1.8rem;font-weight:600;color:#072704}header.main_display .middle .skills{font-size:1rem}header.main_display .empty{height:10rem}main{padding:15px}main .about_me{margin-bottom:100px}main .about_me h4{color:#072704;margin-bottom:25px}main .about_me .header{text-align:center}main .about_me .header div{letter-spacing:4px;font-size:1.2em}main .about_me .header .underline{line-height:3rem;border-bottom:2px solid #000;width:60%;margin:auto;padding:12px}main .about_me div{color:#222}main .about_me div.description .article .skills{margin-bottom:-23px}main .about_me div.description .article .skills span{margin:0 3px 0 2px;font-size:6px}main .about_me div.description .article .skills span i{transform:translateY(-4px)}main .about_me div .photo .wrapper_photo{border-radius:50%;border:1px solid #000;overflow:hidden;max-height:300px;max-width:300px}main .about_me div .personal span{margin-right:.6em}main .about_me div .personal div{margin-bottom:10px}main .about_me div .personal div.name{margin-bottom:15px;color:#555;letter-spacing:2px;font-size:1.2em}main .about_me div .personal div.skype span{color:#00aff0;font-size:1.3em}main .about_me div .personal div.skype span i{transform:translateY(2px)}main .about_me div .personal div.e-mail span{color:#00aff0;font-size:1.3em}main .about_me div .personal div.e-mail span i{transform:translateY(2px)}main .about_me div .personal div.my_site a{color:inherit;text-decoration:underline}main .about_me div .personal div.my_site span.html{color:tomato;font-size:1.3em}main .about_me div .personal div.my_site span.html i{transform:translateY(2px)}main .about_me div .personal div.my_site span.hand{color:#00aff0;font-size:1.3em}main .about_me div .personal div.my_site span.hand i{transform:translate(-104px,21px)}main .resume{margin-bottom:150px}main .resume .header{text-align:center}main .resume .header div{letter-spacing:4px;font-size:1.2em}main .resume .header div.education{text-align:justify}main .resume .header .underline{line-height:3rem;border-bottom:2px solid #000;width:60%;margin:auto;padding:12px}main .resume h2{text-align:center}main .resume .subheader{text-align:center;font-size:14px;display:inline-block;background-color:tomato;color:#fff;font-weight:600;font-style:italic;padding:0 15px;margin:3rem 0}main .resume .ico{text-align:center;margin:25px 0}main .resume .ico i{color:#00aff0}main .portfolio{background-color:#222;padding-top:50px}main .portfolio .last-card{margin-bottom:8rem}main .portfolio .card{position:relative;overflow:hidden;color:#fff;background-color:rgba(0,0,0,.8);text-align:center;box-shadow:0 0 0 transparent;transition:box-shadow .3s}main .portfolio .card .card-body{position:absolute;background-color:rgba(0,0,0,.6);width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;opacity:1;transition:opacity .3s}main .portfolio .card .card-body .card-title{text-transform:uppercase;font-size:1rem;margin-bottom:1rem;color:tomato}main .portfolio .card .card-body .wrapper{transition:transform .3s}main .portfolio .card .card-body-2{position:absolute;justify-content:center;align-items:center;top:0;bottom:0;left:0;right:0}main .portfolio .card .card-body-2 .card-look{display:inline-block;opacity:0;color:#fff;transform:translateY(-100px);transition:opacity .3s,color .3s,transform .3s;border:3px solid tomato;padding:5px 20px}main .portfolio .card .card-img-top{opacity:.7;transform:scale(1.2);transition:transform .3s}main .portfolio .card:hover{cursor:pointer;box-shadow:0 0 30px rgba(0,0,0,.9)}main .portfolio .card:hover .card-body{opacity:0}main .portfolio .card:hover .card-body .wrapper{transform:translateY(100px)}main .portfolio .card:hover .card-img-top{transform:scale(1)}main .portfolio .card:hover .card-look{opacity:1;color:#fff;transform:translateY(0)}main .portfolio img{width:100%;height:auto}main .portfolio .header{text-align:center;color:#fff}main .portfolio .header h2{padding:5px 25px;margin-left:auto;margin-right:auto}main .portfolio .header div{max-width:85%;margin:auto;letter-spacing:4px;font-size:1.2em}footer .contacts .header{text-align:center}footer .contacts .header div{letter-spacing:4px;font-size:1.2em}footer .contacts .header .underline{line-height:3rem;border-bottom:2px solid #000;width:60%;margin:auto;padding:12px}footer .contacts .item{text-align:center;margin-bottom:2rem}footer .contacts .item .ico{margin-bottom:1rem}footer .contacts .item .ico span i{color:#00aff0}footer .copyright{background-color:#222;color:#fff;margin-bottom:0}footer .copyright i{color:tomato;cursor:pointer}@media only screen and (max-width:992px){.description,.personal,.photo{margin-bottom:40px}}@media only screen and (max-width:576px){h2{box-shadow:0 11px 0 #fff,0 20px 20px #000}.portfolio h2{box-shadow:0 11px 0 #222,0 20px 20px #fff}}@media only screen and (max-width:480px){h2{margin-bottom:100px}.personal{margin-bottom:15px}}h3{text-align:center}.middle.animated{animation-duration:1.5s}.animated.fadeInLeft,.animated.fadeInRight{animation-duration:1s}.navbar-nav .nav-item.item-4{animation-duration:1.6s}.navbar-nav .nav-item.item-3{animation-duration:1.2s}.navbar-nav .nav-item.item-2{animation-duration:.8s}.navbar-nav .nav-item.item-1{animation-duration:.4s}@media only screen and (max-width:1200px){main .about_me div .personal div.my_site span.hand i{transform:translate(183px,-11px)}header.main_display h1{font-size:1.5rem}header.main_display,section.about_me{margin-bottom:35px}header p.skills,header p.web_html{font-size:14px!important}header p.web_html{margin-bottom:9px}}@media only screen and (max-width:954px){header.main_display .middle .skills{display:none}}@media only screen and (max-width:992px){main .about_me div .personal div.my_site span.hand i{transform:translate(-104px,19px)}footer .contacts .header h1{margin-bottom:70px}main .portfolio .card .card-body .card-title{font-size:.8rem}}@media only screen and (max-width:768px){main .portfolio .card .card-body .card-title{font-size:.7rem}main .portfolio{padding-top:50px}main .portfolio .header div{font-size:1rem}main .portfolio .header h1{margin-bottom:47px}}@media only screen and (max-width:576px){#portfolio__ .row.mb-sm-5{padding-left:60px;padding-right:60px}main .portfolio .last-card{margin-bottom:4rem}}@media only screen and (max-width:544px){main .portfolio .header div{font-size:.8rem}}@media only screen and (max-width:480px){header.main_display p img{transform:translateX(-106px)!important}h1{font-size:1.7rem!important}} \ No newline at end of file + */.animated{animation-duration:1s;animation-fill-mode:both}.animated.infinite{animation-iteration-count:infinite}@keyframes a{0%,20%,53%,80%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1);transform:translateZ(0)}40%,43%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-30px,0)}70%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}.bounce{animation-name:a;transform-origin:center bottom}@keyframes b{0%,50%,to{opacity:1}25%,75%{opacity:0}}.flash{animation-name:b}@keyframes c{0%{transform:scaleX(1)}50%{transform:scale3d(1.05,1.05,1.05)}to{transform:scaleX(1)}}.pulse{animation-name:c}@keyframes d{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}.rubberBand{animation-name:d}@keyframes e{0%,to{transform:translateZ(0)}10%,30%,50%,70%,90%{transform:translate3d(-10px,0,0)}20%,40%,60%,80%{transform:translate3d(10px,0,0)}}.shake{animation-name:e}@keyframes f{0%{transform:translateX(0)}6.5%{transform:translateX(-6px) rotateY(-9deg)}18.5%{transform:translateX(5px) rotateY(7deg)}31.5%{transform:translateX(-3px) rotateY(-5deg)}43.5%{transform:translateX(2px) rotateY(3deg)}50%{transform:translateX(0)}}.headShake{animation-timing-function:ease-in-out;animation-name:f}@keyframes g{20%{transform:rotate(15deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-5deg)}to{transform:rotate(0deg)}}.swing{transform-origin:top center;animation-name:g}@keyframes h{0%{transform:scaleX(1)}10%,20%{transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{transform:scaleX(1)}}.tada{animation-name:h}@keyframes i{0%{transform:translateZ(0)}15%{transform:translate3d(-25%,0,0) rotate(-5deg)}30%{transform:translate3d(20%,0,0) rotate(3deg)}45%{transform:translate3d(-15%,0,0) rotate(-3deg)}60%{transform:translate3d(10%,0,0) rotate(2deg)}75%{transform:translate3d(-5%,0,0) rotate(-1deg)}to{transform:translateZ(0)}}.wobble{animation-name:i}@keyframes j{0%,11.1%,to{transform:translateZ(0)}22.2%{transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{transform:skewX(6.25deg) skewY(6.25deg)}44.4%{transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{transform:skewX(.390625deg) skewY(.390625deg)}88.8%{transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{animation-name:j;transform-origin:center}@keyframes k{0%,20%,40%,60%,80%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}.bounceIn{animation-duration:.75s;animation-name:k}@keyframes l{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:translateZ(0)}}.bounceInDown{animation-name:l}@keyframes m{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:translateZ(0)}}.bounceInLeft{animation-name:m}@keyframes n{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:translateZ(0)}}.bounceInRight{animation-name:n}@keyframes o{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}.bounceInUp{animation-name:o}@keyframes p{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}.bounceOut{animation-duration:.75s;animation-name:p}@keyframes q{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.bounceOutDown{animation-name:q}@keyframes r{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}.bounceOutLeft{animation-name:r}@keyframes s{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}.bounceOutRight{animation-name:s}@keyframes t{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}.bounceOutUp{animation-name:t}@keyframes u{0%{opacity:0}to{opacity:1}}.fadeIn{animation-name:u}@keyframes v{0%{opacity:0;transform:translate3d(0,-100%,0)}to{opacity:1;transform:translateZ(0)}}.fadeInDown{animation-name:v}@keyframes w{0%{opacity:0;transform:translate3d(0,-2000px,0)}to{opacity:1;transform:translateZ(0)}}.fadeInDownBig{animation-name:w}@keyframes x{0%{opacity:0;transform:translate3d(-100%,0,0)}to{opacity:1;transform:translateZ(0)}}.fadeInLeft{animation-name:x}@keyframes y{0%{opacity:0;transform:translate3d(-2000px,0,0)}to{opacity:1;transform:translateZ(0)}}.fadeInLeftBig{animation-name:y}@keyframes z{0%{opacity:0;transform:translate3d(100%,0,0)}to{opacity:1;transform:translateZ(0)}}.fadeInRight{animation-name:z}@keyframes A{0%{opacity:0;transform:translate3d(2000px,0,0)}to{opacity:1;transform:translateZ(0)}}.fadeInRightBig{animation-name:A}@keyframes B{0%{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:translateZ(0)}}.fadeInUp{animation-name:B}@keyframes C{0%{opacity:0;transform:translate3d(0,2000px,0)}to{opacity:1;transform:translateZ(0)}}.fadeInUpBig{animation-name:C}@keyframes D{0%{opacity:1}to{opacity:0}}.fadeOut{animation-name:D}@keyframes E{0%{opacity:1}to{opacity:0;transform:translate3d(0,100%,0)}}.fadeOutDown{animation-name:E}@keyframes F{0%{opacity:1}to{opacity:0;transform:translate3d(0,2000px,0)}}.fadeOutDownBig{animation-name:F}@keyframes G{0%{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0)}}.fadeOutLeft{animation-name:G}@keyframes H{0%{opacity:1}to{opacity:0;transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{animation-name:H}@keyframes I{0%{opacity:1}to{opacity:0;transform:translate3d(100%,0,0)}}.fadeOutRight{animation-name:I}@keyframes J{0%{opacity:1}to{opacity:0;transform:translate3d(2000px,0,0)}}.fadeOutRightBig{animation-name:J}@keyframes K{0%{opacity:1}to{opacity:0;transform:translate3d(0,-100%,0)}}.fadeOutUp{animation-name:K}@keyframes L{0%{opacity:1}to{opacity:0;transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{animation-name:L}@keyframes M{0%{transform:perspective(400px) rotateY(-1turn);animation-timing-function:ease-out}40%{transform:perspective(400px) translateZ(150px) rotateY(-190deg);animation-timing-function:ease-out}50%{transform:perspective(400px) translateZ(150px) rotateY(-170deg);animation-timing-function:ease-in}80%{transform:perspective(400px) scale3d(.95,.95,.95);animation-timing-function:ease-in}to{transform:perspective(400px);animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;animation-name:M}@keyframes N{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:N}@keyframes O{0%{transform:perspective(400px) rotateY(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateY(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateY(10deg);opacity:1}80%{transform:perspective(400px) rotateY(-5deg)}to{transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:O}@keyframes P{0%{transform:perspective(400px)}30%{transform:perspective(400px) rotateX(-20deg);opacity:1}to{transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{animation-duration:.75s;animation-name:P;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@keyframes Q{0%{transform:perspective(400px)}30%{transform:perspective(400px) rotateY(-15deg);opacity:1}to{transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{animation-duration:.75s;-webkit-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:Q}@keyframes R{0%{transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{transform:skewX(20deg);opacity:1}80%{transform:skewX(-5deg);opacity:1}to{transform:translateZ(0);opacity:1}}.lightSpeedIn{animation-name:R;animation-timing-function:ease-out}@keyframes S{0%{opacity:1}to{transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{animation-name:S;animation-timing-function:ease-in}@keyframes T{0%{transform-origin:center;transform:rotate(-200deg);opacity:0}to{transform-origin:center;transform:translateZ(0);opacity:1}}.rotateIn{animation-name:T}@keyframes U{0%{transform-origin:left bottom;transform:rotate(-45deg);opacity:0}to{transform-origin:left bottom;transform:translateZ(0);opacity:1}}.rotateInDownLeft{animation-name:U}@keyframes V{0%{transform-origin:right bottom;transform:rotate(45deg);opacity:0}to{transform-origin:right bottom;transform:translateZ(0);opacity:1}}.rotateInDownRight{animation-name:V}@keyframes W{0%{transform-origin:left bottom;transform:rotate(45deg);opacity:0}to{transform-origin:left bottom;transform:translateZ(0);opacity:1}}.rotateInUpLeft{animation-name:W}@keyframes X{0%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}to{transform-origin:right bottom;transform:translateZ(0);opacity:1}}.rotateInUpRight{animation-name:X}@keyframes Y{0%{transform-origin:center;opacity:1}to{transform-origin:center;transform:rotate(200deg);opacity:0}}.rotateOut{animation-name:Y}@keyframes Z{0%{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate(45deg);opacity:0}}.rotateOutDownLeft{animation-name:Z}@keyframes ab{0%{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate(-45deg);opacity:0}}.rotateOutDownRight{animation-name:ab}@keyframes bb{0%{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate(-45deg);opacity:0}}.rotateOutUpLeft{animation-name:bb}@keyframes cb{0%{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate(90deg);opacity:0}}.rotateOutUpRight{animation-name:cb}@keyframes db{0%{transform-origin:top left;animation-timing-function:ease-in-out}20%,60%{transform:rotate(80deg);transform-origin:top left;animation-timing-function:ease-in-out}40%,80%{transform:rotate(60deg);transform-origin:top left;animation-timing-function:ease-in-out;opacity:1}to{transform:translate3d(0,700px,0);opacity:0}}.hinge{animation-duration:2s;animation-name:db}@keyframes eb{0%{opacity:0;transform:scale(.1) rotate(30deg);transform-origin:center bottom}50%{transform:rotate(-10deg)}70%{transform:rotate(3deg)}to{opacity:1;transform:scale(1)}}.jackInTheBox{animation-name:eb}@keyframes fb{0%{opacity:0;transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;transform:translateZ(0)}}.rollIn{animation-name:fb}@keyframes gb{0%{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) rotate(120deg)}}.rollOut{animation-name:gb}@keyframes hb{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{animation-name:hb}@keyframes ib{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{animation-name:ib}@keyframes jb{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(10px,0,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{animation-name:jb}@keyframes kb{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{animation-name:kb}@keyframes lb{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{animation-name:lb}@keyframes mb{0%{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{animation-name:mb}@keyframes nb{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{animation-name:nb}@keyframes ob{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(-2000px,0,0);transform-origin:left center}}.zoomOutLeft{animation-name:ob}@keyframes pb{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(2000px,0,0);transform-origin:right center}}.zoomOutRight{animation-name:pb}@keyframes qb{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{animation-name:qb}@keyframes rb{0%{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translateZ(0)}}.slideInDown{animation-name:rb}@keyframes sb{0%{transform:translate3d(-100%,0,0);visibility:visible}to{transform:translateZ(0)}}.slideInLeft{animation-name:sb}@keyframes tb{0%{transform:translate3d(100%,0,0);visibility:visible}to{transform:translateZ(0)}}.slideInRight{animation-name:tb}@keyframes ub{0%{transform:translate3d(0,100%,0);visibility:visible}to{transform:translateZ(0)}}.slideInUp{animation-name:ub}@keyframes vb{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(0,100%,0)}}.slideOutDown{animation-name:vb}@keyframes wb{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(-100%,0,0)}}.slideOutLeft{animation-name:wb}@keyframes xb{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(100%,0,0)}}.slideOutRight{animation-name:xb}@keyframes yb{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(0,-100%,0)}}.slideOutUp{animation-name:yb}body{font-family:Open Sans,sans-serif}.main_display{text-transform:uppercase}.parallax-window{min-height:100vh;background-color:transparent;text-align:center;background-size:cover;background-repeat:no-repeat;background-position:50%}section{margin-bottom:15px}img{max-width:100%}h2{margin-bottom:30px}header.main_display{margin-bottom:10px}header.main_display .nav-menu{position:fixed;z-index:1;right:0;top:0;transition:background-color 1s;width:100%}header.main_display .nav-menu.show{height:100%;background-color:rgba(0,0,0,.8)}header.main_display .nav-menu button{background-color:#343a40;margin-left:auto;margin-right:1rem;margin-top:1rem}header.main_display .nav-menu button .lines{width:30px;height:30px;padding:3px 0;justify-content:space-between;align-items:center}header.main_display .nav-menu button .lines .line{width:30px;height:2px;background-color:#9a9da0;transition:transform .5s,opacity .5s}header.main_display .nav-menu button .lines .line-first.x{transform-origin:center center;transform:translateY(11px) rotate(45deg)}header.main_display .nav-menu button .lines .line-second.x{transform-origin:center center;transform:rotate(-45deg)}header.main_display .nav-menu button .lines .line-third.x{transform:translateY(-11px);opacity:0}header.main_display .nav-menu .navbar ul{position:relative}header.main_display .nav-menu .navbar ul li{transition:all .3s}header.main_display .nav-menu .navbar ul li a{color:#fff;display:block;text-transform:uppercase;font-size:1rem;letter-spacing:5px;position:relative;height:60px;outline:none;transition:color .5s}header.main_display .nav-menu .navbar ul li:hover{background-color:rgba(0,0,0,.3)}header.main_display .nav-menu .navbar ul li:hover a{color:#f13a19}header.main_display .nav-menu .navbar ul li.background{width:200px;margin:auto}header.main_display p{letter-spacing:5px;font-weight:700;font-size:15px}header.main_display p.logo-line{transform:translateX(-2rem)}header.main_display p img{display:inline-block;height:5.5rem;width:auto}header.main_display .middle{max-width:80%;margin:0 auto;background-color:hsla(0,0%,100%,.6)}header.main_display .middle h1{font-size:1.8rem;font-weight:600;color:#072704}header.main_display .middle .skills{font-size:1rem}header.main_display .empty{height:10rem}main{padding:15px}main .about_me{margin-bottom:100px}main .about_me h4{color:#072704;margin-bottom:25px}main .about_me .header{text-align:center}main .about_me .header div{letter-spacing:4px;font-size:1.2em}main .about_me .header .underline{line-height:3rem;border-bottom:2px solid #000;width:60%;margin:auto;padding:12px}main .about_me div{color:#222}main .about_me div.description .article .skills{margin-bottom:-23px}main .about_me div.description .article .skills span{margin:0 3px 0 2px;font-size:6px}main .about_me div.description .article .skills span i{transform:translateY(-4px)}main .about_me div .photo .wrapper_photo{border-radius:50%;border:1px solid #000;overflow:hidden;max-height:300px;max-width:300px}main .about_me div .personal span{margin-right:.6em}main .about_me div .personal div{margin-bottom:10px}main .about_me div .personal div.name{margin-bottom:15px;color:#555;letter-spacing:2px;font-size:1.2em}main .about_me div .personal div.skype span{color:#00aff0;font-size:1.3em}main .about_me div .personal div.skype span i{transform:translateY(2px)}main .about_me div .personal div.e-mail span{color:#00aff0;font-size:1.3em}main .about_me div .personal div.e-mail span i{transform:translateY(2px)}main .about_me div .personal div.e-mail a{color:#222;text-decoration:underline}main .about_me div .personal div.my_site a{color:inherit;text-decoration:underline}main .about_me div .personal div.my_site span.html{color:tomato;font-size:1.3em}main .about_me div .personal div.my_site span.html i{transform:translateY(2px)}main .about_me div .personal div.my_site span.hand{color:#00aff0;font-size:1.3em}main .about_me div .personal div.my_site span.hand i{transform:translate(-104px,21px)}main .resume{margin-bottom:150px}main .resume .header{text-align:center}main .resume .header div{letter-spacing:4px;font-size:1.2em}main .resume .header div.education{text-align:justify}main .resume .header .underline{line-height:3rem;border-bottom:2px solid #000;width:60%;margin:auto;padding:12px}main .resume h2{text-align:center}main .resume .subheader{text-align:center;font-size:14px;display:inline-block;background-color:tomato;color:#fff;font-weight:600;font-style:italic;padding:0 15px;margin:3rem 0}main .resume .ico{text-align:center;margin:25px 0}main .resume .ico i{color:#00aff0}main .portfolio{background-color:#222;padding-top:50px}main .portfolio .last-card{margin-bottom:8rem}main .portfolio .card{position:relative;overflow:hidden;color:#fff;background-color:rgba(0,0,0,.8);text-align:center;box-shadow:0 0 0 transparent;transition:box-shadow .3s}main .portfolio .card .card-body{position:absolute;background-color:rgba(0,0,0,.6);width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;opacity:1;transition:opacity .3s}main .portfolio .card .card-body .card-title{text-transform:uppercase;font-size:1rem;margin-bottom:1rem;color:tomato}main .portfolio .card .card-body .wrapper{transition:transform .3s}main .portfolio .card .card-body-2{position:absolute;justify-content:center;align-items:center;top:0;bottom:0;left:0;right:0}main .portfolio .card .card-body-2 .card-look{display:inline-block;opacity:0;color:#fff;transform:translateY(-100px);transition:opacity .3s,color .3s,transform .3s;border:3px solid tomato;padding:5px 20px}main .portfolio .card .card-img-top{opacity:.7;transform:scale(1.2);transition:transform .3s}main .portfolio .card:active,main .portfolio .card:hover{cursor:pointer;box-shadow:0 0 30px rgba(0,0,0,.9)}main .portfolio .card:active .card-body,main .portfolio .card:hover .card-body{opacity:0}main .portfolio .card:active .card-body .wrapper,main .portfolio .card:hover .card-body .wrapper{transform:translateY(100px)}main .portfolio .card:active .card-img-top,main .portfolio .card:hover .card-img-top{transform:scale(1)}main .portfolio .card:active .card-look,main .portfolio .card:hover .card-look{opacity:1;color:#fff;transform:translateY(0)}main .portfolio img{width:100%;height:auto}main .portfolio .header{text-align:center;color:#fff}main .portfolio .header h2{padding:5px 25px;margin-left:auto;margin-right:auto}main .portfolio .header div{max-width:85%;margin:auto;letter-spacing:4px;font-size:1.2em}footer .contacts .header{text-align:center}footer .contacts .header div{letter-spacing:4px;font-size:1.2em}footer .contacts .header .underline{line-height:3rem;border-bottom:2px solid #000;width:60%;margin:auto;padding:12px}footer .contacts .item{text-align:center;margin-bottom:2rem}footer .contacts .item .ico{margin-bottom:1rem}footer .contacts .item .ico span i{color:#00aff0}footer .contacts .item a{color:#222;text-decoration:none}footer .copyright{background-color:#222;color:#fff;margin-bottom:0}footer .copyright i{color:tomato;cursor:pointer}@media only screen and (max-width:992px){.description,.personal,.photo{margin-bottom:40px}}@media only screen and (max-width:576px){h2{box-shadow:0 11px 0 #fff,0 20px 20px #000}.portfolio h2{box-shadow:0 11px 0 #222,0 20px 20px #fff}main .portfolio .card .card-img-top{transform:none}main .portfolio .card:active .card-look,main .portfolio .card:hover .card-look{opacity:0}}@media only screen and (max-width:480px){h2{margin-bottom:100px}.personal{margin-bottom:15px}}h3{text-align:center}.middle.animated{animation-duration:1.5s}.animated.fadeInLeft,.animated.fadeInRight{animation-duration:1s}.navbar-nav .nav-item.item-4{animation-duration:1.6s}.navbar-nav .nav-item.item-3{animation-duration:1.2s}.navbar-nav .nav-item.item-2{animation-duration:.8s}.navbar-nav .nav-item.item-1{animation-duration:.4s}@media only screen and (max-width:1200px){main .about_me div .personal div.my_site span.hand i{transform:translate(183px,-11px)}header.main_display h1{font-size:1.5rem}header.main_display,section.about_me{margin-bottom:35px}header p.skills,header p.web_html{font-size:14px!important}header p.web_html{margin-bottom:9px}}@media only screen and (max-width:954px){header.main_display .middle .skills{display:none}}@media only screen and (max-width:992px){main .about_me div .personal div.my_site span.hand i{transform:translate(-104px,19px)}footer .contacts .header h1{margin-bottom:70px}main .portfolio .card .card-body .card-title{font-size:.8rem}}@media only screen and (max-width:768px){main .portfolio .card .card-body .card-title{font-size:.7rem}main .portfolio{padding-top:50px}main .portfolio .header div{font-size:1rem}main .portfolio .header h1{margin-bottom:47px}}@media only screen and (max-width:576px){#portfolio__ .row.mb-sm-5{padding-left:60px;padding-right:60px}main .portfolio .last-card{margin-bottom:4rem}}@media only screen and (max-width:544px){main .portfolio .header div{font-size:.8rem}}@media only screen and (max-width:480px){header.main_display p img{transform:translateX(-106px)!important}h1{font-size:1.7rem!important}} \ No newline at end of file diff --git a/src/image/zouk-pro_andrey.jpg b/src/image/zouk-pro_andrey.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1b50ece2f5bdead77d0a74583e7c5841367bcb64 GIT binary patch literal 113239 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ℑMTU?TX4Gj-w=^S{H~Sf*K0E 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

    1I>+b{^zt71;Z-t6g$nbr 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

  • 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 L|0iU<`hE5vNW+TL literal 0 HcmV?d00001 diff --git a/src/js/contacts.js b/src/js/contacts.js index 35f054c..09e06da 100644 --- a/src/js/contacts.js +++ b/src/js/contacts.js @@ -1,6 +1,6 @@ -import 'jquery'; +// import 'jquery'; -let hrefs = $('.item').has('.fa-html5, .fa-vk'); +let hrefs = $('.item').has('.fa-html5, .fa-vk, .fa-whatsapp, .fa-envelope'); let vkFooter = $('.fa-vk'); @@ -26,14 +26,20 @@ hrefs.mouseout(function (event) { hrefs.has('.fa-html5').click(() => { - location.assign('http://andrey_programmer.ru'); + location.assign('http://andrey-programmer.ru'); }); hrefs.has('.fa-vk').click(() => { window.open('https://vk.com/l0vec_snov', '_blank') }); + vkFooter.click(() => { window.open('https://vk.com/l0vec_snov', '_blank') }); +hrefs.has('.fa-vk').click(() => { + + window.open('https://vk.com/l0vec_snov', '_blank') +}); + diff --git a/src/js/nav-menu.js b/src/js/nav-menu.js index eb78bfa..a299f87 100644 --- a/src/js/nav-menu.js +++ b/src/js/nav-menu.js @@ -13,8 +13,7 @@ $('button.navbar-toggler').dblclick(function (event) { event.stopPropagation(); }) -$('.nav-menu li').click(() => { - 1 +$('.nav-menu li').click(() => { $('.navbar-toggler').click(); }) diff --git a/src/js/portfolio.js b/src/js/portfolio.js index 94f097f..13e18f8 100644 --- a/src/js/portfolio.js +++ b/src/js/portfolio.js @@ -2,3 +2,7 @@ $('.card:first').click(()=>{ location.assign("http://andrey-programmer.ru") || location.assign("#"); }); + +$('.card:nth-of-type(2)').click(() => { + window.open("http://zouk-pro.ru", '_blank') || location.assign('#'); +}); diff --git a/src/less/footer.less b/src/less/footer.less index 945aa3c..6747b21 100644 --- a/src/less/footer.less +++ b/src/less/footer.less @@ -32,6 +32,11 @@ footer { } } } + + a { + color: @content_text_color; + text-decoration: none; + } } } diff --git a/src/less/header.less b/src/less/header.less index dad8c18..65c172b 100644 --- a/src/less/header.less +++ b/src/less/header.less @@ -24,7 +24,7 @@ header.main_display { margin-right: 1rem; margin-top: 1rem; - .lines { + .lines { width: 30px; height: 30px; padding: 3px 0; diff --git a/src/less/main.less b/src/less/main.less index 34d2ac8..9cd9e24 100644 --- a/src/less/main.less +++ b/src/less/main.less @@ -85,15 +85,22 @@ main { } } &.e-mail { - span { + + + span { color: @blueIconsColor ; font-size: 1.3em; i { -webkit-transform: translateY(2px); transform: translateY(2px); - } - } + } + } + a { + color: @content_text_color; + text-decoration: underline; + } } + &.my_site { a { color: inherit; @@ -274,7 +281,8 @@ main { } - &:hover { + &:hover, + &:active { cursor: pointer; -webkit-box-shadow: 0 0 30px rgba(0, 0, 0, 0.9); box-shadow: 0 0 30px rgba(0, 0, 0, 0.9); diff --git a/src/less/media.less b/src/less/media.less index 6e5a945..f30639c 100644 --- a/src/less/media.less +++ b/src/less/media.less @@ -20,6 +20,17 @@ .portfolio h2 { .h2_portfolio_shadow; } + + main .portfolio .card .card-img-top { + transform:none; + } + + main .portfolio .card:hover .card-look, + main .portfolio .card:active .card-look, + { + opacity: 0; + } + } diff --git a/src/template.html b/src/template.html index a6d2bee..dbec9a7 100644 --- a/src/template.html +++ b/src/template.html @@ -165,10 +165,10 @@

    Персональная информация

    Skype: Andrey-1302 -
    @@ -273,18 +273,18 @@
    Andrey-programmer.ru
    -
    Посмотреть
    +
    Посмотреть
    - alt="Card image cap"> + alt="Card image cap">
    -
    any my site
    -

    This card has supporting...

    +
    Zouk-pro.ru
    +

    Landing-page преподавателей танцев

    - Last updated 3 mins ago + 2018 г.

    @@ -433,12 +433,14 @@

    Адрес:

    + +
    -

    E-mail:

    -

    andrey.programmer.1302@gmail.com

    +

    E-mail:

    +

    andrey.programmer.1302@gmail.com

    @@ -471,18 +473,20 @@

    Skype:

    - - - / - - - + + + + / + + + +
    -

    телефон / whatsapp

    -

    +7 977 4638113

    +

    телефон / whatsapp

    +

    +7 977 4638113

    - +
  • nFqFegcp+Ww8&Hi;8Te5Z*GKN&NW$ zS-<#FI@T9R+K#|!opjzQq$po zFe^t_;Kg3DRh;vKwaZylta_Wpa>(ekd8B?sl!JcTsTS1u9}3d9jm$H3`Kdr}w?6Xo zZ*4Q{#B*ut$?-`}raY*#)TO_VT75g&U9P134Q*9B92UpL>Ut55$z!t^_}NT6_A*%M zNDfDt9bsrvPs^peM};B@FnU<@pasx++|xiSO@Xp{RDi7jZaPo~O#?=T-)%Hd-&1<2 z2xcisW~=FMI-*%h`fPg@#<&n95|neJS8?WwM7k{1A^7Xqw2wH5TQsfosin{LI^a8EPu zXS%G7zwXE0Pf{F06bbm=rSx$93jDkMNoId=KI$`Kyu5eF(#wv6{A)k;*xMTJZ1NdL)P`2+rZrA`{En z5Z&ZQLW^$x8yyr4aN+yTYwmgWi0(LIIT@wC^Ko5KdA3VxZ(^@tq#m9+itb@e%h!m@ z$gW=!ZS~~Zg6mndDc2_m$-ij}Qc8#lZ7IH&H&scg=;s*59g|w2QT?GLA38*$LpQ&yncB6@Cit7CgrIte1yU7hC6py;XfM+jq+!QPWnLZ(s zQljDcFn&%GF_8ZNSCmshTi=5nw2+oc96i=eg^{OJ*FHi~PB#39SeXh+Qk=#mz|LMo zqNO3iuTvA8C)Vk87EnTT3b-}S%}{5>n#fAznE3I~9*`8<$YyG+7Nl8USCc8xwp;4c zBk>-!gWT5J1U}&9SjQ(L5Kda7#(VV~q}eG6a#W%%^|J4xP>=|W&xhk8!n$cj+?Y0U zHxR{0_m7qyVU1JL}`B-$uA{jza0_iC<9aH z)YgdSBj?FONIKm30a{fXVyv>a&EyyB0P01O4@=U$&qEbaPUPMnR;8}{>`C(bD~k5i z^eD6g=41gv(xOOEAPUaTO{#(OC1pwgSX=MklJ_bCu()E>uSowBiWeSFD1o#n@WY!I@p?uv@2?$v*GfHF=4Hy<2g1w zgJoL7YJbIg=~hPr>)Jsq<8U2_iLq7^l1MEo*Gc#h*0Q~mIx+s&sX=?2#aiUJr?Qb) z?q%`q-E5$Gq_mN)oeG5*b2_s=&IM&C0sXuCkC5Oz?VJqRC}W4`Y|}9xbcTet52Ywc z(X}t9&bwMn@{dx;0Dzyvp-;-QU@C!fX`mLSz}Y=2Ku{ad0)wRhW`dBB@t|lw_2Smt+1=W&$B63Wi;MVwFUq>s$IrJTg!L53WSmp^iTPHQCF~pH zkKy=M=*TsLsz=JTCd867SMjPu5=@*M<&Rgzq^r*>hLR*l8HkOp?Ky}rzw3DsYE;`p++}4G`!IbK<9C{N9SuvB5 zeN83i@(EK?A)>^xt)*h=Ha7J2q*3ZG3NH>lhEkH)ye2jU$4pQUZ8tr(ldb9vgS=C+ zUN84w3LOxpVyT9}@(Xa1qxMh?=RSXhgEDSfG$~Qz-pKg)JZ*VWr( z1J$&6Tvl0p61OR?MUPxJ@p+d6NS@OnjMPRQ?r)0Xuihl-cAOi5Jpm%Iw#Jm)m&Iin z#7u81DpNS@L?szZdf>HmYF>56EFM}qq@T-2#<0hQ+TXaVWblf(U~|8@3G<}GRGvNT zlqpI%u1-pmCqD9ZTTs-i6`@ue-nEo8PL;Q7va!>RLl!x6V&|0t1|}3NP9_t0yiP7B z(_?YWBqa?tl-VF#uf*5Q+Re*nrB|Q_?t+3bycCmd(I%1hJS)Es*p7F(N|g(f;naP# zsE6?*K@A+Pb!uKYD%%$l$+Pm^@JT<)f#PbA4RZX(a}j3!VN7`GjH3%56KhRJ2tI%f zuB-UoyKrt{YU)CJ4eggB_k-LP8Jy!#I8G_kH>BLhxSu0C>)GSFMwDr=suJt>rqy~O? zD!DsHfUH}CNP&y907{BT3OyB5YiI!bvVymQbq2EzAiTNDDRHCAF zJ!?B|QW}NsD!-3PmMaL|X;D%fAbB2@B#F4-DIrH&&;%US1zz4&m5l*smY|?gNIq2} zi5H8LnG_Um+{*NEH}IgFRF#gnl393%6or(K8Na6g004SWWe~^&y0*wlkKsBi%H1tN zWe@IW5QQ3SOsqB&9f`7zalgsU3)=}xd9?CJ9!(y`RJ|1p- zWEHxTa9jx+u6*xWoNOUMxVM!wAy9lNuoO>9kQCe~17M+Q3PyJd1|~?>fJT%Se00#z z0xlmKuL65Ag6GQJ%A}6Hn30?Q3Rm^lgWLZAA?)W6{$8P z+tiArK`7E~O$mAEubq8y=Lo3y zee?mL9zuW;Jx%BVBYl2aPy$Y)b1tNVZHl=24MW(yj`QLY9b*gagtkH58WsWcs4Y#K zptsS)T}kQGYC6{*U5lyc&m!leF!wXwhaPp9;kAj8Vdq-f((V!^qqQJ>%5PX=ukSgm z^*H%?DDFv|%y$yP0?UCZQE{EF9TVDpB}3(17Tnsq7S{rU2Peq*l%Rw>;xH0hoLG#K z@p>YiVOu>-fSVNDZmBd#^*@d?9zPVpZk*;UeFSvfU4~rI3Guq^_tY8%Q4EEoZ7sbR zeixSNo?5;(01vvBqGbW@R%I+qn-DG4p@)s5xZ)zm2Eg<{E-&U0e~m?}Yix++4C5|i z?k^u^OZN+1f&ae0=YAljn3ykW>xF;fAwbn0CjoRJ7~NWx4KHa4hWJg z1Ubgv{kT`5hwMi+w`D9wg*qML-ymyI7?k4NTUY4IVYaQ{JZ(iwYC#c~vQWh;>uA7At$#qbCr6qSJ+V$71DKi;mATyW7 z$i>J3NO)bN{ne*bk@nS5!_bVCO%|8!$B-rHIbIZ`mfyw`A~&k`Ae)OHI_;y-@v~K? zbps~py0lo)Vze_ugzJCdN=A*r)2#zHs(>~fDKIlgVrQwK5%mS19eU6LFAF4F?W*uN zlylEBJNaH*-*9ZS-~E=y_SesL-|s!Xs{a7Z9Eba#k=fvxM!E;uipc)}owDR<)`uQY9iWb$%Mc%-V<`V;^+fBoca>%GWwRF++{q z<0&cXplwGz0b|s-IJ6MZ1wdF00k1PXrJj}w!Y&*-LpgpGB|~{mP4*J6?)T%VH~tlU zN30%iwEGL0KZIAJne!u*ej!Z*CLyE~a&K=6)fred$BS*S*0n?iF|V{%q}Y~b)*f^w zW=b>Cv_Qv+8Ui|x8f1$OgImxC)B%eFKpId6itDG_NCebIlmX;Azi*!81l=*QPJhEW z1NudMFV9oXk%OMV`;wAL$3Rv5Q#r5eqvujm8n4)Ia?}3+-e`&*VsjtcP3A!fj1}x} zxuHt`0Pua41o$Roa!H9RbN>M4DESdbRpRkk9CsPvcxi1nA2SyZjfo;MmI_&x07_8e&`yCwT!UQpYD(D_ zNy>Y-#^mxQ@*dw#p1fHx^HcB>8l2lpD!1WXoFPX+trdwm;#kuoCn<<`>3JU*&v5LF z*x#u%oUSe2>f@u-E|e`=ulaPjr)s9=O`-?u44i_Zr8qeS-sV9q zj>=HuYSASdu0jY>I!j8M?vJ}U zeEUwS?_e+}{W3F$t(<(V$qo-Ys8%_%I;{soJBi^Oau*whpnK*rF7wCx z&c3U-v-4GWIjrpUXKpAAxK6yM3Q5%LDn4gutZ;vk7k{v{IUyT!DLUEI>;C{DHPM{U z8P2({$A2A%`YX-IcGFU__d$1y!V`OukCso`{j1Q!_MG-#xs=+88?9Q1(P{`wYg()n zKql9L#zIR@PI4-LQhjB$CARIN0p0xDtGOtw6_58Gn_-;|;^Bn= zl?KuYuoob8(zdO%G0R!7<>_H9y1hw8pM5?=){)S=$w3Q{t7u9^fF4(@Zgk_&uIB~0A=Rqw zq;yFBiou-;%OG5hzjL34$^&&{WN0JVy{>M7(LNOo1Q3!UwYkgapA_^Ihr~sOTM7vc z+yF+RfZ{CtG+y1b?NIA#0$_+R8wx52u^tqlPf?5b!nQo7`Jkx{+oKVDm0_^y^)lIl|^wxR-p$V!s1JS(#s(DQo~JsT@Zwz`58 zm(Z62he8wq7W?Z{i6KVK??F&4RRClgQv+e(X+Rs_;Y0zcq6W7yQd#u?XuD`SpDM2d z-$R=D8q2(sI7W_HyN+l-Y+ zXW)FkG`VP1R;8_oj2o~XSG9ThT(h>nLc?Jlr16KX{!Vfw&;I~qDo6F#Pfbma7us4B z7Zt6imtUQFNgq1J+ZQ0-)Zk2-$E4j}Rjo*}4YA_eP3vl-Fu{Rj4SHKju~`z4#_tCv_fOlbotXH+-XmU%-)V5V*daNO$gS2G*?qV3EJNp0I}wN&!=|~VDmVtNCSGL zMNm;cB&>?>{{YwYIrtSXH}(TH!*kpx1ur)ZZ1c>5u~7LRW#6QSFJ|^zkdbv=>uo{3 zw^ue^)$!d``5MN9wEoPwD%3mN&lCVoyCXfSzSGjWdFG!G9~uFiB*SX&$G6n;Z@m#871S(HvTfm?> zeV0jQ_BJ*?Hm;vp?P=aqRiXt{$p?RBp6?JgWO(5qYCfg${{Z9-dV#=i6ZS{$)SRX@ zx%o~%jmM@_PfN%$`>(CEG_bR^qRKZY?XcFA1F0J@q-9!`*KzeNeTERFK31Kn0>Y%Uk7_V$F5$5*5>EJR zsFUM#3eE~8DKH1QAU~&@e|ov|Y%`lVX!Je*012-fCzGol*k3OdWAgF!>*!8&;)77sl5oV5&_ND}O zGWi)$A{0lQw)f9^C6%DSX zdL$&3d{6$0s1!^h=$yc38Mj1}R3XSdIY6k zMjHeq_?=8Nar>QYxk*?9aU&6t=aG4QAExp{nfo_7`6$wcP!qXeYOu@zL&2504q8( zX@(9p7PvZCSGw8f511nLlhmq&*yitIMugTGAnL?}NUea8e;VYm+g*t$tzLUcwd^$% zp2oGS+_iD+`bCG^To+oM6=Bqo*}}w>KMX9sG17h?P?VqjYU}9kcplc@x(i`n<~Rp} zjd~S4IBRiM$h|Q#dmaG?Q>|-KEW>PS1=Fo>Lom6tkdgLP39?0yYz+w+vR#CmUfNcP z36FHOx>G`fAX=;p&6=_d(xuJ-&sN z%Ox>+ZVBgboZ}VvR~sb>UAGF5O~7;j;&0%p?do^=(r)$~7PeY5IVj&w96?=;8NHQs!vGS2b2TYA`d+O0VQ z$$aCG+2`KnMBeYzIL=FZX5A9I-4^Pr(rylV)@*WSAKU&(#j{z=dm>;foOC#J#C^pD<3WHq=6l}g)`rECdq!)=FMw)JW7 zpy{C4x{%w8B^}VB8Qs)_=jT~TRjVOqIDpwfR^^M0HK?(zbOEKPr%P@J#MTx%sszlD zxlRQnjhD5$RyHhxeeT-SPKnaq6#z0B0dsW#fNU>8N5dk`)ph$Id|M|Y4bkaL6MzCa}~?D zt5bFtJ)7QJS{n*8}6z8`2 zoQMMZVf{OV{{Z{iul1DrnpfU-E8vWUjQ3<@5%m7Xa-vkNyX6L%Y!5P`qf>8Cn$ewA z{y}uLMc0aBDAQ&>ZxH4eAceMvVl6>_r#b|x!uIjfye{{ywhd(VdOqU4of-@>ZQG1a zO0+*!1ZnV+-DlF+=Js#*mU_SrFJI<5eYNOUW5{Ohbq1(G4m+lw3eu)_4za?;A02CY z5EY>MQSs|kNhru0Pnf2Ody?!AN6NGiJe)B&aRzsA%7v87-%I)hLl5-m&) z?0=Df?35SR0jO@Jr=%`A)DztUVM>#9p1P83JZt1%e>2MITX9Bwf)u_Wvf39Rc^9?< zWUFZ3eL?itebwo9JCya-Rd3|8+-EEE_hNey?tCA47PVsiy7xJ3;XT-6K+FljC+IT9 z-8@@#>!H1NemBU~;wx>#lpSG)$l@~i_?b*3=-Etcv~PuxhVox!#B|(;5J*tIni};w zxG`d1uq@<|RA!!Y^H3a3hoM@hLvU<#(z+HE&Pg{^NQ*a92q$0V^AWT= z%;ipPm<_j-E%sF`6<=ZMHs5dCYNb@R5#*mTaR~R1nM8D{w##{-w-aD=3swH`DcxvB zEo{MQEiO+b$jMAJ%5B(j{;E+!!Ew~$Qlz+-8X*IBO{>uL>s5%nyNCYLN0%Sot}>?{ zDTMYidokHlsy0|^U07%mNsC$~cPPq9Vta0KMg2WJRK9Q?`*%XY4ik1WiB>w>P za=r=`&!1#7nmLla4}Zd~Ps+TEyPY&Eb$gAD;Czc3{JcD@qMMG>{{ZQhglI*rb$qLf z=UA?Kn0hwNk3fed`;Ow7B+3foS%{00pt5eugF$UqX@qMMjxg;b8 z6aWeUx#kJD{uP&#P>qEp45G^QD^LfCt*T@}opR4(hKw#VR5waN0Vxg7+5`;WBAJ?_(v5>%ph zUjG0(PQyeB^N30mOQh?jw-uYQvH|9D6TRMvZ3;f3JOS%i*_x##cbn#}cUF+{OMNd` z+Qrs@*yX8S;AEtM@ul(_@IzzEkezpxTc)~HyNT3|mCI9g6uGr(8k^L&BH{;6<_jw+ zFN5->5*$IfT$n7`FWpDLooR4l&}y9H${>e&^|=)`t0GY>)^BJ9P7l7bbz*H2ZRT5b zI=U=6UeujfN;Wf@aQa*qr3?+0y#PAjp`=BItLxXTT}Wjs?s{Be1FoGCQ)|~=4<{~N zk3{{7ieURi!Wr(Rd%i~h(;ol9?0Vn4jT+49M_ z$cK<-q)al<hjlG;O>-&&5B z*m?fL{Dp+Gb*$d!ak=>3x{>7}c2B~Z8wqj3#@{O1o0(WU#*g4@rlbWef)YM9y#$i1 z8-$N9AC)vq+?Z?nt6GR~FKskF2B=0!xxa~^Ms2p&*X2MOj~W2bi%e{dWNA@2VGwS23H<5k_r!L#s?FR}SC?o}CR zBT%FtN%O3Fot(FtU1*17najWQ^UCu)3jNOZpOM5|95)z~A1Q@{FLP4jyEk%VGL{ws zyF{cc9-E2tuS&hjtEzYoIv$xPx*WM6p#B?muBulr$-JRJ)ee(#v6Wqs{XWjlv@`3J3e>1gX z@NH5QkOBDKw8+0{J%7B0!nYbuc`nK>CGXNA2!#l9W5G#I_T5?*5;l=>xhLzD9Oe3M6^4C=a}P6ByT9GBzujIoMs{OIFZ+nH=3^eNpyS!xemd8c+WU{C z=zWEFcX)O3u2a0(A$nTl^FCL3BD zQ)*dI@bR^0d+2FeoJYxh_kKH*66Qz%l@OH?VnFfxYX@VkS3m{tduK1SzXgJ7;_l&PdGX?JhN{uQlp$(^!6R?g>ZZ6(0<)SLMA zu8QC}GIkg@H=m_D6qnSM5p@uMfUOn-nf6%_eaXr+q?O6DYEiOMt!?*JemXPx*(V#^ zmt0UPeL!4TUrW?muD*i&i%4UR=kq}-TEmSJ2Hu9%jj$V2u*0Yv%`YjmT(-Xpt3&aw zd*Os^v&m^hC4BSZif? zeYMwvR|h72DtaO8v-sruPr%u4AsX%DTMJ5^NKjcCf(f`HuGwi<4W57F<$A`2u9Y-E zDUiy%tm1Y4G?sdOQ2q>yda+>Ij-a6Yls~q$S?TpeJa_sr$Z5f%5NWF~sWASGS7Vx8 z2kffQd|%MpV*dcTe(EJ4Y7Np3njeqCn6wnJ>#e-#9-mVh(%-;8>O$q+En{+SUfUr) zLHPF7WA;`#*X(APAMZyq#oClGPe7D|_gBtc=+C3BjUHS6=j3c5zNDd<(Ky z{Wh;x)K3P*-tcp=ZuYpf`d6#W;E&M3X8!=%1xVo0Oli=Q=S^A!>M?RFo}dNCi14iw zlN)0+i;s2Z$lG&p0rIK4fX9imrv0Vi?Xx~6LPH_P8(K?b_*mZm01EJX*_E`D+v#<< zu19HQVy;&f&9IFfTo;^g;--gjKgBgYO8&#h?^<$&apZkeSdxW@)W>Dg2TQF9I(_xh zdBlrfbu>C7K;Htq_NH7U@h3 z0e=bve6F7=0M>vs)X)Zo-)$xas_CUjk44iu4uKO{cK-nQXi`^m@=fd7h2Y|w5-r`t zf}m`51dCtnsI@gUuE)WKQUC}_M}Pv=hr>nSupxW{h{Wd(`1ZU$nj>oCS*3wlWBe&I+sbNVg{3L)y z7!;xQG_Y~Tv7bTjXSJCQ_TiYC<3CJNLfZ(8`M&MM8{en`wX!m;ydI))6T6M#4xi+B zd=zT~P>!Sl?no3;O$?d@sKQivM`>tWp5eJho+ABg)%7iWx*l(_kAb#zR|0kCByy(SW9gM0 z=!=fX771*!5^d+|2U_|p$niS%ng*^)j}knm)RVDi@!VV}c-AQCXDEA}&YFZIJmi%j zYr02iTU5Jz>Dh%TEc2(_zi|ww-Z9Ffop!PoPNT$;*0J2*rFtc2j=%KI<+7a8s3f$Y>1??QPtd9Zl&ClYxSTq3Z2}^|f&!XuA<60#KHX)vh`c_CQK0@ZIPIzOutUf|Yp6!eN9dA=+G?-xqRHnwn ztt)K*04?A~0z$IHuM#Qd9{B{uRxViJds@ z2SRb&=hw#By6Lv$r{nXkCtfE))dSw@1xVpNz-;R|81^0>yMg>`Y%wP%Vz8vP{kO=B zj|{>*QQ38-i!z%*Dca*?q=GySmGd6bj+vXC&wtk2mL;HihZcdOjwE;xwQ2lo&gT3! zdM=CTE}61X_$Nq6{^)gM`s&t8FC;uveh~GH=2?;XS!t;9v+K9QigT(vC%8~wKFkBu! zf-39ovm*<7j8DO&zjkuD7;@oD$Hhx>*;_6;-O{b97SgnS=Oxyp)6?UtkR>^|$xXhP z+zTZ^T8%Aw<-c{c5Or6klariz@36c_+zimp%g*I-($N_aLu_nPHlam8*+WxxR=r_CrbA0;w4K+`kZ)d(OV~cn>JD7}MT^N&rW!~ZUiID2Q<+dx^u&^Mwf+>=K{`P* z#;}3uB}!~+tJ>aGj(pIxH^GWo)qE~1aST?1ELW}1g?JgCD@p7s#bD^DNgbw8;&&m$ z6f7SQtqA@#>UGpm`A+Nq0MOHpr~d$g!E1R^Vgn3P#F7NwuteMK}Q^Cqu0`0U|9)f%PB~P}G_LOpA;8cvSHN&^VclGd5-f zbRYr}fWu)R-=(YteFx*S&iRo=d$;?$_FLJx3&iqnPSl=DvvPRs5MO;B1H4cQTi3vw z)h?}=)^u`abN;8C6SCrPJZmQ*)q~rAY7uV@JE!`ppIWPPPm!~l`KRyqkn-if4mJtV z1xrbesnb8pP!{ebwo;Vt2T)IqSI1Pe8f~(@%6sq3eZq>=Z0711$I=!h{ zt+6FUBE)KT*9Ll9!aMLPd1ti#%MLNYy{zC|OEJ$da`Ie%5gt6#7bw@$@6|*g6{M7n z*3@`WTC|RP**iE7+RA%b9i=qZXN`u5Qj`@gD*Z|%lXb0KNxd8_XUQIL{^8xl=Dpq$ z_}s>1;mV>#efXZXlHiQu7C}aq2HJ|(B_9#s(#?au$?&(m)W+x8$mKCyN=6aJvF2Vy z(#!H$2|HBIpnxr{s&J=OsQVhd3vVsMnBji!`yCCgM+-Lw6X3|59Z3wb3vadSUgA1= zn$hZWs7GY+u5uzngNZzAFD0n!TL&<}inxmPk`|SHM(bGkrm<+~EoSG$bpc{SX(|`k zTt&yu#EO`ZIg8!iQJ9OLcNrcmcVU*>ahU=25uFt`CC)-TN4donv9X~A#A&|;QZMNXVO4Vby zZ%UM*U;w!!SHIKs?*-;{JdWOfn*(L(0!vKte{dtEsZqisw5xw0ZmPc#z<52T4)^E4qod-&tPAUK+{7 zJgrQ|Sq_rx@*NFFj?muYt|N6#!ywzm3H(b?1Nha+HldX` z+*>OVWGlO|ZEf&cP10&G+xH_3s%jMbN04QFbgAM}r(N2l5n_iBHmneSHOK6*ERIp= zdiMzFZSt}B(+)0#>Y3tjkxp{uUY7D)h0|P5<*Rd#kD8kDrK?o3;3=- zVo*T6&bRp2Hd`H-D2{;ROzm-<0kFM!_SKzPbVc^ec3OTx%gI;QfFeS_iy(V z$o-Y$Tw5oX;z{JWTq;}QQ7S3>PoCiNa`=vw1N(U<9^{nKtZl=+|h)J+tKl9&bv9r+QY_l(HXqHyVj=kN$N}T4_Yt8MCRvbwFzf9E&49z5$N2cLL~kHe?-{{Zw~ z&2OtPJ?Zy5(hoYx6LVwUG=3F7v}>_%?qh`e-|m7n9P=e%)R({XRKArzv}-;7r>j4* z-*+4K*)0 zIA6roU*efbe77$gW_e4A zEOD$_Q{77oQMYg>T}PcXJgKrflK%kaUnhZ_1+AvT~Lk>mduhEB{@G08bS}>yNPXs@!9(0B(4B%&EgAg&;DtZb9(eHMMeIbG z8g!jC9#xJ=H^nWJ2OX8cy&z&`J(a|dOvnzBt070r0FDsxE8_TvD4?^4w|hHOrLjrorZDt(+{!MT!uBTuQYTy<>}W8?6DE{K_{K zz~j>qk|t%81Z0oHsnq;URpw7u*Wl)$r1^io9OnhfGC1siB7QS5P{?3M>zPn*OPjmgam@dyO zh3e21IuozkT$c1*s{a7g>94cE{{ZYyF~~U7vIJcGDHqgs-a?Pvdgs5a>{oi5F5Vkz ztVjoAxo*^!+#X?I*FE}~mi2>r=EvgFXKB8KDJQ1AYd$uvjWX6m#FW~J{05OyaewZC z^Zw}J?JWvJQSomO<&N8}(bV~nE9iYM+Rr!GwIwBuaSOJ)fbkXSSmmHkc2WXXw4r2O zAxEwJ1!k)4FpXs`!~QzR?4X4HEpJ?T5!Z&w3yY712Z*o;ZLPsa&&s&o=DEJmes8!L z2#R@^aZB8iq@=W~f{<wn`?Rk5J|02}TT4J-$v5?Hd)a17$r6+CF6SSKE3Xe(!sXZ$m zh`0=lo;%AMROqiYkZ-!;Tn#O?g0&=RV5FNGPhc!gJlr&W9%fcm89C}@DKEI{RkU>p z8t65s5oD*7l>m^`XEy0@q2cz>F;sG3Rdr+Aa1R8XYHr{vwK+rg1CmVqwj?E>(tBETYjMPi6fy3Kifpx^$sYm zKWTp4M)z0U4Cfo4$mH?Xqj8xzM^b5TN7opYP_T!zc7cQ7elj#dlh8lIxB4&`QbE ze~7OC0LpeykyWWXKlXjYA+w%L&Q*kUJYkUjZN_-CfI=J~q&B2UvdFfnMeXBQep@es zHh1=AftNc87B4iyzEtc}kG0dR2Q7dx{@rv}=i~J&wlqdyBx~ zp4@R>A&k$zo{hv|zl2szQNEBq<8LWN(#we?DL1e;wX2%fY)@9)77MUc>WaTvn%?CF zZAxQUX=`fLO0yW&XV7AqMCth_glOpvx?E~HkV}f%l_({f-saT#Fq4u!`2D!!J@(}& zlMk4|!A#-!6yb8|$l>03VRBwCwJC>LEg-BX(g*}sW**zZwNg(MRV{zh!)!#yMEw^4G1HUa-O>f7oNiCL2o}Dx3U%w! zh3pra4}vu0AN2E;oXEkQ8$ZIZ@uK6zC$SOna|CzYN(w}^S>T}U&HCD(`wIU6U~wX0 z{{Yi=RCukkCo#fu@2BzPACH!8#s2`rmY)gxg-iAo{?GpaK;nmN{{YjS4Ti#);BUB} z#N&$1?NRV0J=<7$QeFC|_7lJuWB!@km8mhGUoPQN<20hFIM-p$Lr<&Kw(3FNowpXT z*4oyu+2iw!TpaE{#Qy-(Pbm$a&QfOu&$^b1Q!z`+#aVEh?^;?mHIw#O{{XTJ;~Rs1 z`ujOE*zaoi9|U}3yLk7fNh`!S`;mXtuX!NK9l)Sd~Rz7&5_0& z*V@!&9+laU;$_WJw@Pgza7wRx8lQ~bm*NlMy@kZ_#l@P3T~yX=;F{*D+y(q^tsDhx zt>{&L;_!))X35Lr9b4{5JEUv1)et>FWALaDe5uSDQ7h=qEzf&Ha zx3S1dRMToE=WWHnzlC4UXKspmfz9#Oqf2^2a%4!FL2XhVAdsISZ3Q1JiFKo47WncU zd@a_?s@>Ap3ZtBqu|aq69u~~mk(9>rq12J8tkvya$4WGbhs2hvb@}zo#~u| z%%FWplz?t-N`BhHjv01Rj%%L)rBWkp1GuejJV#sCqmLoxWu~QnmgCV9cOoKtiZ?4j z>V7rTTb%BMYdD8?c9zF=rvVN!f0;fakCdBZkvQC53vPDINvyJ=suHpipMaYyk}zH4*=Cy_rN>s#eA8k- zqKr>cTAd2NnBfb&OAV3j+1ymtU2qRp)V*Y{r-k*Zv()vyeYm2c_Y3yh@6Kb9WI1Lh z+N{=Jj^`U@P9rM;DR~bvPykX=4aeFm>AIieN5gw8%H5lkrcc_hb+Eg?Rrc4EX?Y2L0~~+5+`}EWvzd}CZf@r727x;HRJ>KUi4T(1*@hVZ z0Njs1f~}3@lHvi?FESn1?-#6}PZQOnMcc}hD+ZAN0C#-N4Hjl#aT8UzS@GRrb{_$8 ztznbZ_4030>+CbvYm;yOmo2K>A)xlg(O`hV<>~iEuSS911`7ITtF^>1mms@Ot+gV7L6_fsV_mDk%USsvuTh4ZekbLJl$5Xv$IxZ!)4q ztO)*^+O%lO**OQWu%Rf?z1Py<16tL7gc7Xa!O_U!&kLyl{{U5LNWy;~$Ii%Lu`Xld z7Ua6**+8_L?2BTMbm&y7mP-hp;rJ(%JD6yu--q(R{>lX>-|UV)1Ilj^9SU)!u;qcW zlIXIMKs_jd@*uH(+HtVrnMOTHLQ+5-)udbC0<@*XIT9=O%K>w<>X;Ymhn5KbG;u4C zlD)TvpYk%fCcYvQ5b8>e7Z)8+E>PM&t4s7Arl^1oB_>qHEAmsE9Hx1NJvDh7?amlmQ1eY;B$ zxOp8%-AoO`n~Fk-vVRG=zu!s#Svz`-FR2%&ASyN!(!=Iy$O?jsfG_YjHlje^)8e8J zz?wjA0tTYw_*(P;goo!c@(~jliOdw;PnkiI6hYHzNxq@xc(X2_&L7; zk1FTbk7)Q*B4S6Eor{Bu4les1*=>ZUZN3M>xNBuv7x?z=XSDsTihE1R)yh4-z;ZQ$ zlbKV`xY0^bl)1lZ!VsMR3I^2*)49Xg>-;%5_$;?s4l=gvLRK$xuU@@sk~x;;P08V{ zE-k2Sgg0=F*6>$dYUI%k9ZLceOiE}iZQk2@=sM64Q+&%9-c7=Y_~KBcly`zom+Eg> z*#b>$a;GHrwnNUilOVJTiQKcTz89<@>ZVyLoR79CX?AS6AgJoFEHCy^FlwNhn$Jl8iG8Hx3Df4TDpMj+HG^$AHt}lc!+e@9W ztJ_44EmuktlI4+|X}BC+=@u4sHY@S?3hIQaaZ~qR4iDy!1-RQdX||1zJ@o(m^SthuHJyF>uXlOA%(FKu3?sw zaM`*=g~6)kjQ%z{iH@1kBd>uU+e5kz4KS8AB6ide8%?@cRyW9NRUsr;FEjvGsY9)X zm#%wR7sQxm65Oy_I-O0ltXmuf5n#5`M&D8M6`Yx|rhYk2A1Ae2ilaIbJZ@5JOm9(D z>Qf%y&ykXhs1qIUF)g(;;#Pe=AYbhoS51-V=~~F+8T+*5JVs2uJ&yNFn(?T3Hx&{l zJY%u>Tytq`*rl!E4(%j(oh#}3^^A2s1HDST)@#Ws*Zo2L_s3- z*BV1nV>$?VIuL^y&7=d+icYX-t!NrM?VtTOIRRQ(&T>8;>d76q9h}fYyg}}T0Z2Jn zY9v2rzq77H2m4R=GWI=XJDX}$n9l7<^Gks$r=WcH8bAL4P23hv=ZOB~a5*5YTaP9? zD$~rC-UgFUHJSMZrvCub58i0!yM^X_Q;?@p&c|JjqCE5~AI6%jqP}9d%YW0m_cxC2 zDV`;d%Oxa|s96*eenDvz_%ZzGtTNxU58P%9sLS@BI-r5-F_PQj{{Rl!iT)J06tk_0 z!z=9n0J>OB%E|kG$sq0gW!z+q4~@!Dp+^QkmY^KWepeP$nb0OgH|X?dnzz`r3Y|u> zC*)>_> z71Z3%PS6WUD*jENU-~Hzi1I#B?DUtlPo z`!yeqzJV+?hx^#~Mmy1^y2dti$jzyy-&iRj3pY?A$3tqD)MY_NrU&3LILSN=1-Kwf4la z-arhNDREn2N*|3kQi1$FRGlMJMW_vs-r#WxKAwpHe`RH3MOiE7xN>q5OuU2spfjp26bu+i zLPKg&$-0$o02FW)vZNU?1L@pcV4m3xpp_32HPBYItQcC-XPKqPII@^nxfXRBbo8Vf z)|nJk&j;La2RL~CYQVA=y5HGeHeb1(#^*HV6diR+LAV+k#gAeMQIhI*DLSh_sw<$R zNjT=gxlPZNs^lU~zfMAwF5QJG2Ur$3wwtw@z5Hlxnc4@e!$Lr^O}quGCuU}^D7C`a@+Z!`(p=`K*M`W$ysg-4r`jPndST{}{q;&%W+ z7Ou)+c1I=iR$&p6@i}aJ`6khoiz&=mLY!J2v#x~;g*AH>9cnL+kCR&7R>M~LMd#%WtDHd$L@Q{$JdUpklb)_XdXt7%T`+nf@562kp zde&PX*aku}kP@d`kQ?Sw9*Hqkq&|1ovEv%RPa?<{K@xrAUbD3rd56{{V&7#;NhBl72RVMn84m zwa!4p&GJv%iX$~JZIqTFMsX_#&tMm|QnG+)p^@aj^x(=ljmc#FxpRs>`-*l0>Voqv zt;p*MSh7J$308y}bh;(0KO(vR0BZjL>Cx_XT1IL&J69LT&j?G5L6W$Pf{|;6iZ%j% z$}E!|ZEBE?e#1X&`S4f7KXB`4sM(}BA}iLvO;iE?HJhv#^4QZG{{TzwF(PW*bKa&i zn02BZ+T>Y>g1=qEw)1U$I>5i>sYlmyMX<+`soIyS zDSVIZKlc@g^h)-_Fj9|Fl;3U52bR@q_Eh|4-;jV6dqeJv6PtlMgl2JWxUHr6a9$0h z`4uD)OXJjkkf5E*`v>mc3JiRN+$48l%Qj)uIkiOE;1H`3r=2f}g6z}TNbg63N z5*!F1DNHFY_4yi46^HZGj(ZKrW2bD49z~^(#-7rZ^XXH<#eB6Rokm56EaYjCGzBHr z9RuV|sc~aj6qx#{DFb`pX@6D0`;9Iv(~>uDCm~x?a80fXZE`%UXyTeFT1+b@qM(&D zge(h%bWk_zS-R~drq-TMLVb$nk~vql3^kg4$r+9>l6M^vV~28|fTq&pNm`DjO(>Lu z)9j@K9JEzo z3-YEh{F9Al@XgF( zWQSs{_G7Z*7Q3_R3fd2WwzbXM#m^f@Z>-AkW=!(e_bmnXvyf*$bpE3Wmx51S)&XC{ zSI1>ZS)Zr++??wr+xs|>wfj*fI_v~qQ9TW+{X)=%{{UT9C!`)9x?lSpsTy!;7Tsi` z`;W%jTDmD@c$TiB!cw0AgpI2FWa>!rt<#cPfL|{SPbDNEB><91I+5ULw#Jll%C9EN zC~%=mvwOmnZLP)hy>nRUsRHbT5n*7f_|(C*P|Xrq3nkK(1n5VRy$Kqx(6V^6>{_m+ zxPh=8q$p{6)jbSum~|77RRAB(eIGoxs@55SCXziqdaeFKqAGVfPp|@U|$->;iICwj8bllp*r`cXUMJ)AY z9O;n6q&)M0{{Z3=q0>siiLh1lsii0^;k6}kWD zK9IC6D*JCql=UYN(=S+(KFUnW+mZ~#K|M4!@->Z#k?4)E9hM+<@Tn!)8r?}9H1nXI zMvt#@0q94SNf1Hh)Evf4LVZdsIFyTc>@|4wuqCO?Q1K|n`)|wS=3R3f$$+r6p+A_7 z>d=5|(ZMewHty+xl#d_dtWH)eVEJ3}yTqjkd6k5>ARv-}fUU=JbhxjfwOk(%nodGl zoO)bY>SrU5lNTQBXIOtE*?BFt`6*Bil7*B42A8VGj!4Vc;xTGwD-jPVH!y=DVjXfI zhNdGXs zg%y9MXq`fw(tsRC$4;C;iy3dApI2_gq~B9-g$krugq+QWagcca2?|rPl;7%e-y?0* z;MmwB%m8Sx@qjwkaBC(sz3ew>ugaK7s*nx6Ac51T&WT~6xKh)7grfQz8(x7)ztl=k z;dwv~nwok*NZ{piYiTSlTHIx|sm9xIl_e@);wc>l?;4Oz3p1FO(sq=#>P7bjBpnaV zoUt^AnEp!i86rb?_^v3j^A0rPJt}SF?N{L<#B~R#G_77+u|Vq|%Ch*iHtZa(Vj>f{ zC{%fpQk}@Pz}mYKI@*^mJBi~=vM|56UvRL}BdL#YxkP4=m7&(e>J5#L zTCPfDpMpb-KkoWh4T;7BhAfl%qC&T?)^N7(cajygo~kIEjr)Ej!s7L z=t)Qa0H}us$wg`(D)xQm(2`4wXfpDC1Sb9z<&v=?Y9H?t_N$X&!II$8@iO09cNM_& z+okT<=~S->R>Q7@%Rc7*$vHHHsxDDD`LYppAwkxT@z%hBQ_4Znp!OL3vGP`alON47 zv7HD74k>MwDM{)6V7N5&B_{SHV0$a<)^X&bHg^S*LV-|BghyWg0DvG4v<@xxIV1OH z`*7miKilaX*NmqY+l*uyN%}CB+zD09k`io1^fX%Qj6uEyX3s7jY?suv0qP{H`s*MXu0LZ7Lsid_TOOn_Z8x^p^hs#JBdQ+Uw_D zD?O#Jb^m+)OpRwH2+>$~P%T zs+4W1HKj^7Mk@`qHpD?r%Wb@N$R8~!0L@Qv2HjIGqZpUt6*8ul$U77iNl5hhlT?!f zc3t9bY)dTTh;;f8mPg(ADK%gm#>jC{uKY(JHn#2q&9k*>BSJ0`4JfyeBqC+;)0A6@ zEibuZt$`{8B{sR#4>}nxA!?F~D zHM=P!^z*2-k|Nht+#kk!$L$QbuVvB6armgIU(-7-TWE?(NCT;{+3}{U%}8UxKOdLkM7~)c7B!WJA82_!hhS>xBSD~ zTpn*1%OR#BGMOglVk4!*tnAsbY9MsE70+C7j&En!rhCddIZlPR;{xDZ8&y|x&2)g1 z970-3R#GpZ+(0MgT~sl;(2L|!nrV{SRbl}JHy_hgZHI|Yhd%NQ%S^c9^;X})j{>ia zao)#GXv)5JeN7?vRJ(Tt$AA@=Gp8LJE4;rxZUbsAJ`-|!8qU{pcH_b1s`CEzPJn`p zeAOjRI2#GQ?c5_D_RL;#@usS1TZ8ITmfS%E(P};3W0)%atF|N+$Xj@B zMu+x-qEtncMPX_|v?r*04=jKJcN2fZT=!5*s6^D%DFe)kgBMXi;up99>gp&YXS^sI z)PV~vK{vJRuA;7+iSAGy<+%=CDOhZq?Lm*oC3YKJhg8!^Ln=z_r6DRlufjCyYuokM z`C3jNcb(S?OLkE+IDa1cxub{-)NHO9=HyF55_LEf|UyaxE~8wc2=O_#aAUX@QRr)CIXyPFb~p~fDUavH``0s zBi!st5r*s(=C)E8bnE{B4Iz!d1h?bqy#Q`*Qp#1MAl(^OX(a~OPj zVz;7;heVYB0A*R7hMcMQW#(Rx>u$0X(h`;){{S%n55w@()G^awcz`uM2U?a`m>wss zAU2>6r~?~G*TR4?w0Y15zlQdp2M}Co6XC8zAJmvjqq~k9hj<+}+)xFW_bTJKb>g4I zaJ;V?dlxsomtoa+8hNKt+K`YJdle?zel;H&Z}%8JNH<&jTa!k8IELj&crzYeHJLG) z3UOP{X$vCOSOBE?*6$V=+|6Xlw$x{r!SKJOPbCcE+>X{Y;xSTKavO7GA;kqUTuHJX zNl63FqSz|e?6Ivf-M`$5Z!;&3&r~Py7*}vg2~e2Bj+a9Begd15(xR#PXHBe`7{Zjq z#@-1E*sGNJj~b!^MC4+t((E)4dg*N{%=rggbsQRW*_6oA^>zoAJ| z2^wxAS|CpC1#&odw()~`80~Uw9GI@9E*{ck29{J4bP;{sX;~yLZH`~V@z9qx`-dH+ zH0NOctBgx~UD07GRgys|*IuIP|l<;z9z+OjUFy);A+x8c+k3r5h%7M7JAd{`UXn~<`)Rc=`6Ovx^6?$U>pf=Z9Tt7z#|Sjv0UGnI^;|n ziW`JBTR|^NDL;sVWT)e;4M-kIV0qqSA<5a4{N>2Z=42%kr%46nI8-iof=N4w=qxLf zEoBb9f04m0?(P`krtu8aXIgiT@~BTP1ZLEsvP?$;B{J(pO18zS<5CE#>)tBS7wSAt z8Pfj%wQgevnQ_d&wE2e=-g}QeysrqCy6y%PZtG2t5QPq&RpWaM5otb~)#v3-C!+&?ARyI78p^3x#fSSj&XI#|~~ktHa2jLS{#LA8MY z05w|c;cC@d0o1SgS0GN+fV;Sxg)AK?chJ(c)aL$K$(W1kaqB74LO|E=u3OmarA~U} z+}%wj(e*bZkSu?;v8rb2DjfO9xogr&fN-BzUD{U4v$$Kc;I0vzQgax2GK!pq7bgwr ziR<|dzJl%l0Oh@Dz|Og)p7`PY*~Kbs79r#qa~UnR)sEQWOG{;G8+NMpI$Eh^jSMe= z+F3K2_YJtE#ihhG+gY~TTv+LGOXVh*Q_-Bu?jJD|l=G{S9V;b5#CZIx9G8=`7Br4i zLIgXu-Jtt*NQo=GWp<4c6*@{@9taGYE`7!v2vY2P1?p{C zMON{lY~lF{a3CpmwXJ(sEvR)?{Da0bDk)8!2TH}zrqmA)Aa$1Rg!dJ3dunY<<1;2z zlWA=>qHMK`tL?1#lVO9Bd#;3}+%C!c&0T7s&G>7<$$sQ=-Y&jPnnUj=Eh`%EfSeSj zU2PE7fK;hWNNrxCRcoY=3i_UnIO9zDZ)ezfvcIAt5kC<+RuVreA6E`Of$TBVNNQ%= zS;dIYtwyB%@o^kzvm#dSu+(oW#}_5m}I#EHa^Mp+F=N;cY4y>9GN0WAUkFp9amZ)Y1c0 zAy?^o0M65E_)r73u~|tmU&uy)`|x6@B21>!bT*{sL#6JioiC$-kJ`zDvfv_CG`|Ti*3f-Wo5UTDRrfbT_q;r zLY0^3AM#i@og$%hcrEI)9dAKWZcxK!~;%nI`Bxpu>r?q>@s zWGKRBcLYpa#y!aF><=(Sh*Nt`!gUHBb?(tuCOLz}wXaLZgP(a8P02Z~PQytsG0S~x zZw{3e$7$nj#35I)-K}`H(X@Mb*X>LeKsRJ$1$>Plj)r}OT7HKa)UY1hlGZa`Ux zjMDK>B0}0|JmC#3*3@?C_=3~qXadQC^K;-b>f*x=%t>kZ>YVI#m9#dh+qAJM+zn>H z3+2xzv6F_i$y?6Njvp^NhtQ<5-GWISc9V3g%R^YILy#J9nXchxex%+sWl(@qCKl3e zgJHW)maPB-=kCCfo|L?D6xKaUTd^5mR?@S(xBmbsHmvM+;n=U6VRGffhpGCvn`yL< z65_&tuCZqHXR}$xgh!xbl1WZ083qss{{UjbQh$wpf9-8K+4o+yv4I2E@UJN7$(FBhUPac*ze2mXx&(Dode1 z&ARJQwIGmyuHx3U5C@k30QC@RaOAuR0m2zllnLX_gt6cXz}yB&6u*44_>XI2}_sq@`2VmjYJkA;#7=*+$AuwW+2)CY{T3vVc2@XSp{3=GdIpEw>}`UOAI# zhT*WjZzKnD&0|+DGxY@5|Nmm!%AqlhtvX&+kh%lWu}(rW#K)f zW&8=nIW|;wVm70XTz8h*n^78UH`3Lo#F{hwwwxiNA$y_6nJ}_kpZ&vzjDVQ)Bq#ks z5}t`#!S!iS@dC`7kUu$=%q}dqR70tZjmKfRxAs;pnw>Pr;N{%^04JF(_YzfObA5aV z#}K}bG+My?UbY>klfVouFDvGk))!x$YR`r=XJ4r9a40?InajGk~plYfl3wVT27*+)VgGX z!pG&*03~-%jbmyZHL_?ci!DxBNmhsB<5@I0CKEd80ITry_*Q&Lvox2M{W=7>>rUiC zWyuO32GhIxt4vgzBy(oV!mRW2BR$-{Qze#l0k?8;oRY9QCwV0|KPvj%G*zlc#^t{& zHaIx!Eh)0eH`mO3 z=@KZ@tBm+@w>wK3CC#BjQDQ7~H?0L?W0lD=-@`lge^%OYjin(YXhBNIP_h21hB|Bu z*!fZ{+-Yhc4~Qqo+s=psJv8a?q5yEz$!y1y6^U-M7GSid5TX#UJXD_&Eu}S}noK6f za_3rRN;1+XN|ewF!AfPspQd}Zqyn(N#G8?E3bR%pH{tL*4O}t+ok&SjcJKM>zJ!*u$>IemuC=qto)DzOM`0-ip4>jnu zEJzqwusc~8t~}OJj8budvX-Pnkd237Ta7DlRl!dEbgs(bt!nt3Ya_MPoV4oHDXQ z&!$^FlH$hHDMsOFP_mLq(2^?*Y0Da9x3^Aav2Q(^#bRB{w1~1}PL70b0S+he^djgW z8qiazMe@hP`Duy<#aFs*VY{go@Yb`j=;Kg~`+bdGYusK7ib_iUuQv$=7QTVRsQ&-~ zSmbe5&8VfX>U!76<$X?fEbYA}O46HjvQFJT>ipxoZdsc@LFv^jNg@GC0_UfYu10l2 z5mL8Qgd@)Pob0x@wfvQ#ckvrmm0W$*`@MBPCaL<4<8uV;1_oeO z<4)Dopn)o|^ZROefVx%FN@)p-j-dQHRS-BD3s3@y@TUbPIYzgl2Aqlw4d{WG^Z3&N z7bC`SwzuOmC2X6tUJe91m4~@wKRZ^Xv*G>_6{8l_0qXjtvegyx?7b(`8?dt z9Uk4nVk&Vtth;kA(tEPh=S`@&K9qt&Qkzv@lpAtVdll^G?Z<(Bi@>>0BEZd;o53*) zAdIy2C6}@?nMdV!*$KYJbkO-y$3|t5sV(1gu>6HNTyHJGW8BO~`nFY@g&1y-$lfmE zQ~c<$*4-=2_8kV_DxSAPyq$hK5xK?MdS40wB|H9g;8``f=+|PaR92Li9XpCmfhSs)&Wb5G`;_t(IP)XeENE16at`Dl496-d z2lEy2_<7d6QaJZvP6H6^m)JvSD=Svj3w`FH*xfigkK0}(+(^uB6R<5T0Jt@|t zWW1NZc`>838;~}nDI(oeQ)||#nE~8^*B*f(QP!m)+oyGb)6Ug4Wz`&e&W2kI_>qms zE-ZxKVv=q?MJGZJh^!)6()33?PgLoyy&?GQwBpGsM0D(K=fx@3*Yd4V$8{`@VidCC zK`J1go>ZHGaFD_TA`@ext?D-DY8{JJ38OP$L05;BLsDvyEYi0$MZ75z4&@@D^n?vo zdK1voLTW%PmM!@EoY4i>wGs;_s$3dDtf2 z$>Qb`8F4KX_SP4%ZK!K)svruRkfi%)xi{)9KuM{vvdAj8 z@_}-Et!e^IQnttzP!>B%SE0X4Sle0xO$Z%97QUn!B$H({q-&>3nng*Yh)A-OM(^c1 zRZJoklLL}3}ggtV^^ zMf9ski!x(N4$5)Mtxn;v>jG!4Zm7fOp@ z*+cl#btYhfUlzeBmflwx#fcG8m6?WS*=aQ-Wq%iwSaGsd2{$jvF-V=V&9 zS5fKK=BcPApSi)v9EwSoo6AZB113w3C=P(FMOuCJjhX6GV$l7z<3>l`{ujH{jC=1* zaX0Xe%GH0qxce52c5mo)^=r!L^lDX|eb5a+xB0o)D)J*#S0BpUtm`FcY#j!3MY7OEyT3d3< z8M_PkUXV68Ng7cEwmMC$2aOO&sJ-Zb6$e4*RDfN(l4vTT^b}&?PzHwn8q)Vv+{J~ z)f`>P-*Lr~4V1D{MQ@De&nDb^45t#C0!{orG+D9|I$zuFD$IEi-+chMf)tb+R%w*k z);LuUr!KsJ+C`Ge6Vpz&6}?=Uk6v`Sa^h}+;7cJ1u}V}m{{XdA2@si?36BOy?IpPE zCqyGnz9gSIi!)l)oLBA^SyG-_Kg?2;QV8%Bn$X_MLZ?Gcukyl4Sq8$cQO^XESohjM zan^;#ro*Ssrq)HOvQ8obiL!O-s?2;zl(V%Ph|{IT0Sw%vpe;lMqzaiOpn7DqpruRb zIvS)YfvTR3Ii)wdaT<@0oiOBqB*HQBj%}T6lmjR}C4xNho;-&=`e0h$Erz6-}0?8htK^E0Y^QV`t>8Ul$t)MdE z3yC2=%(U%RhsL>+lW1hFMnWcKCdz6na8T~cMPv|!6r?1SgL_KF#@jAS8@{I(@SV|s~{SZsSZeaZ-5?BiEs{p`BXDSpoNZ?pc#uEz8xrm9{@_J z0QLm=IJxn1P*#@ZL|I#Vk`$ArtU=Jw1k9dUDQD8mronU z=5ekWEVvUbVbwPsNgeiqy@^V%wAR?`^(ONU15Px3tHZ4*cP9svS5SG zjTVO+*F_IibUIQGKJP5-5^>H4!_utls+En%A=2;ZQ*pU2)2%ZlD%jGH;z&{t;lF{k zbyEg6U0ONvXU)q*1@pYSxSmMn30R17VnT|Pwz({zK6}yjI6KYgyBjDdc-NVe1#5i| zQw5!uYfGzmI{ZERffZb52DnYk2%-L2bPw^A{c00uuLZYMsis-ENfC ziD5rbT^BCl@u9 zG`*!8+fcaEcorbmO0Gsl;Jw4-++U98xXvb1f9?GG9{Si$r+FRJfUSqf?Y$NZRMh0j zY7Rd7$5pLX`|F6m`B&$u&cCVmi}vUx+Fy#Pl_=FsFH0(blzGiOUEG2d_*dLO`6~Ya)nB;c-29nt zevQ9vlZ5{OV11mHNm7@^G3Y8jJ+}6L^J{BvXv@h9xzoagMTaR-*WpZ&(p6$UGyu9( zZ$JtIrRV{}Y9JHmOsb0R1X$2ft?kqJ&;|p5nxPt%Yo|&8(MI;5OigJjLedmcR+S_u zbp=A#9}!GRjbp@dnJ9ntNpe_jI#>{02<`4jv2>6(6(1dG4p9F9dc3KUZWMH&V#znX zO@@t%w5cdg_vlRkYL#26t?{b!0E(-b#U~>AGzoYInODqzXs?s@_?>b|@AR_rqA5(8 z6lI~MjoYq1>hhyQv7EK<4jH#van0LQt;$&PBcP~fRtsowry+%M6cb|GfS)6+ZH<{{ z2(fb5#m7sE{6nR@>RXdKu=9xfgAP7Tv`&Avm8fiSM#JS$k)$1~fyqFV4GIpS#_SZ2 zv|jbSLDoYE%|&#eG^7yVHyee4@at6~;K5ApJ&>7U*)4*klmWO}=UUFp=*NZFvP6`zZO)(_zE!UnIc)VLaPO;eBpaTeDwd!s!f&HgscgOy zpj$x-S3qylp`8@mI)cb)q!K+t&aknt{@@^+>)-`15)7*S#g5)gV&F-21}tY&B1A=n z+0xI?Ddyhhj_tZD~mJJak7}J1ITdcaf2DXI+5EXrH zb+1ub`8;=3ItwlaYBS%Z#pN7|ITN3DUqZh5_|)lMiVsZlW*oWn?u4qONr`0I@hVi}Z&5S``1j^a|K z5CyN+x|5|Ihbre~s3R+tLk3!7GUVKLV0T+{3dbtGQdQNuKfueIx5o(Ph_?_R`B~(5}}zcO9q1P$n>(q_YNNheFdU zxgRSEiyGkEpp>t~PlfGV_dPUrU+o4C#y!T&ZS?&-I3S-jtgMf?SA*_v#|iBEdd@?v z98teZSHr{~WY(g0@}>p~i2nf7Kpt{BqF#6`_X$xt^)>sI56O}5H|;Z*Fh6cS*CFV$ zWV?&RC5KFS>Tv`nON|YLXsaH!>0K_Sjh#H-AVQjy@6b*kO(ijVU4y-9HvGf`)dKpO zYKB~g$jZ6(FGW@|S?sMSOX)~0xRq(WCwD>PL!fdcSd!w_;#AU_*sZPZ{{Y1Jrl*J! zLB(Fd3n%1h@eW4mbdl*Bfa+~aiAzy#@IqErLPKKfBZk4{vh&uqW2hAqFQZzlLQXb;tU7V*5?&=MI1Ny~fWND7@ad#`hI>WLo zi=-^r0j;R1t<<0uaUM_zP%22!3s$Ba7_6QG?s>Gd!rWlE0v4oPCHyH>YTIf=a(2}h$O=Ctj?LaLvl;!5Qr(`_8 zU*jr2(M@7UJ^QSHbC$kP;*%hSAe7jhcM7kG7(UIL(G4JF`6fk6KThIMP1#Vsqs-E3 zsJgq`ar7P!na{~j>p4j;uvKvy_G}OCkScAG4Bi&^E!bQS9gks#W5h}dN8$px?V4Dg zC?_NF?!ie*M{0i&sCguXj4q1>w4pl^0*DtTvUWF02mPJCu7Z(6CssEk1#KkQsPwmw z@T;PjMBVXCoTJDyD9-ZP^PkAciHi<~V!p@XLRj>rK_J-ct$j8M@S;b_cCsv&Y$3+G zlgz`-Mqj$Hqo*wUap%F!p+QnxWCFvX!jokt*7#MmCJ5Fa9Og5g?&IR(IS1&nl%>5E zTTQLaiVC_;aQGI@1FR2@+o=3R+9X=o)VLUVtax z$vZA9*vL57S$0B!P*Qg2K42OQ>IioGYg$MlX;DhYkq4y)f@=g4XaO=WYZ?H?(`(#N z2L68we;NSJ+5p0k4YZ(5wXtXWV#W$n`Al4v6y9=TJFz5}klPDon-YZwG~aSSK2@7C z$k}CZ*v~aDlA=_FjMh81E=DtNb~>Uj(1&95RTTZPU4tXP!GcsOxFUg%tjv=|TpAJX9)GZ;y zVo;N`^uCqznLg%y6%ZTK)DUDfp4t$sFR%7eB!7#64IhPY`6_V>wh~+&H=RBe`#m&gReF#UkWBhw;e^sMUCC<$(XMDeWw)kg}R`hBo!04?5x>B zYrx@B->JzOi=;g{`XJPMq*KlwqZBgjukfBQ>KK60Y7b0Lqq5a#YSmO zV}xZP_iXrO-tZ~|p(RTGnjoZ3`alF5TcEuVR2nEYvvt`-X>&|wsSTvuAt0YBP(-m! z`gOO$^gxfhfP6mMO$nNp1&xjE@udPnLQ`7VX*TO+4L^+#R2r^yM${6iDN58Xl#|qX z(E$R#R~$H&`>EcmZBL245CW}Fh~n1L9!lLu;sbHDy57Qw8d7eF@g5{H={rH)bS!lH zDMKm@8PUp6pj1PLYCS5w{yJ&%q6Q$Wg9%YcL(1EsP;FgDh(02SDh&NpX#sKEZPLV) zmfqai0>oR#%BJ+^UM#9NTPAXkHOD`Ump>Zf78e~VQwll-AzGn8{A=R-eRqo^N6_KQ zvLdZhUsnaixQ$Y5qIK5V*Cc7Fv_m=fnPHpS^4UlwYb2kxv9p7su1bM;z=whYeM&Y- zw@NuOi|d5(hMsOaifmj9sU&qibu*~Z(75bmaNBK$f?7&Kc3abG)~*0`JKO##osB7} z%%GJf?>Dpy+rbCUx2s21Jom4XjLv@A_=h1(l*3ebMXyrREh$<;Q=zd{u1}R*9aYSp z=;uCH>?62Ut~?dChLkrj+bXc_okFeQddHciu;Q}O6*f!Q*QN#$DnqMEoU;f+mb&lL zLJc1w%KB7nMrX1vV|T}sAcD$n61Cpr!p8d1@{91Qwjvwgm|S{-mfLGt)S}m<^09m> zz5*!F8zC*nj)u?$fB;rjxk>{(P9-fAl8~RX#<}fw%&g=vOf(dx$sV4Sk%JJD*KBAs zCtrnCNJA2`fpV(~s2bdA`^2<$xIGA}tz=EXTYHJfju!+Y#aT{EE(;Nq58*);TF;i1 z-_pU#^KFka*>-+9!g`$M%ypfpX$oL_mgv8~N&E>O=GN`TQCnht=0LD}6C{P3uqK%D+t*T>cvE-PtGAU~@ z`ny?)YDU>n09VwcThdeju^s@5(^w%{5iQwDLDfl0R0$&1Bf_&^sjSGd6LlZ~(IkWA zOihm=q^eXx2bzfTwE|3NZlpM?ekCvZO$7zqVCM2^&a~RoDKW9ieQrE#rjp7@N|H~A z0)j20&;SPDFRuRpR_?dHx4i|L5J@)|pbP|f18;=@ecLy&1w-LL8QFgePzJ#^7Cs$K zI0I`~+S;Cilh6rVE(UKSoFKy5+sR2%Uw3zDBwFEWNIP%TQf(s~me4DQ!TF9qkxs$0 zIJ1_CjZ~QLz?KvqK~O1Z5=F;br_Q=?W3{U_Fw2&jNk2AkG2qPzusNxg^kt>@FtXYF z)VA_UO}CS|Cs07Cu6(s{!k97LOcffGR;QK_mdoy`#kPTDg(+7y9s^p%>dvMwB`Gpw zD|e&>pb@UN6oh6+9{!jpefYw+;6 zs)Ac3QSJTRHQ9P4k#cGRk{$g zo}!#+Ot~d_0@{s?ZLg+cVsWvO@yQgeg(c>c5ESET(07tZxIJn)RrxJyQ@H-p<~ZYR zmYceimeg)i3D6T+y}_ZMHE=hD)Yv@o8&|}2wM~us`;@Eq30<@|u|8V$tSzzVJ&yYJ z#wXDGH|_jgs!FE2I(mh=haB3KU&i*YmiKqnFRAt3gBn${38X|0wtY7>;nvc7`4qqD zpdXOKcQ1B3;Q*rFR@Na5NhS0JF?_qLkK+#b!2yAV@Ln`XDi0u+Qk3&vMM3-%ZM~;Z>C6>$R zQS2co3HaF{51lm1sW4nN)mr$|MG2|T3)6uK_lL%x5)ZrIIyixjdzzmcK>1Vge^ zr5AfWzvN0ni5^?1fPoMu9pt$cC0?`lY) z0*8sZ@-h~yej-vopi_V}0clR(tbC7x_5O-*QIJio-gQ^;Qm#+VhzF{G1Khj{^BBbC zVYS}K;?l3GNjF=uznBj)j-tGeY1LP!KPc|$Wp%WDPEm7XFSydyLl0Q9ZiM`6ISuyjN~$ls0r!hYbzN$Nj}m> z%iJ9eK`e`wy{KP>RY*Yd>r(U<@-?DEWP8sc2nbt=Pe4|s1f+OsPJ*_jTQSRZMJ%Yf z-wevkkj_}-l(oFzi3<+wXF}30H>tHJdK^kYDkN)QYv09<|;X#uGS8;$<}x~`Sohac6PIdZvxPbZedLUGd%7ZVko#AHHBp(RY2Q99j3 zT?cSIJp8L`T_R~#z|4!R%bzMtbSb7@{KT}YT{r5Rj=wtQZduZlA)-?AKGqhgbHoYJgjT`D^Mv5IvN|NAgIOd5-JqbQk zxdLWhei76VA1@EO#$c;D-`2PSH4oX`23|Aq;LI7kvbO&5; zT?Ms^gVNQV@ANdK6Wn!_;t*2wIQZ8kH<8K85#YdeXi^TA@i%u^l|C%I#imdmTz8O+a?gRAYidNm%=@SR1r#>WZG0 zvTPKh2_7~&P$5|;CCG^W>PFyo)X)TpNYNnv5HC(hVJ9EQ@yx0+4d;0Yz(`;qtfO>yh1@!>i7+*to9f^?hBh@W0*?sfMK%e&c+;utNgpZ-)CleBJZjb8mr!z6IYf|JzsA+AZcE1}D&^Qz zd1<}2t+cAvx5B?(qdzA{tDp4fmJhYu?SilU&z2PwcmU*75PsWNem5vA&qdgNIlBHq-$|g*>i68&6D_c-9LT2C@k3_hKW*JBgB%o2-i&kJq19B z*K(<8YH2)wGWl%nFSQh@3b%++SOirhQXa*g>67%x#ma=x1z%F~TMek`rGnI;PsCMm zDH27+Td6;7HC9lWcHK=^76M)4=R^>F-uTf1lj85&LF9 zNk}JK6Y%~O%iXNuvAl zLY_;gK(^pU?+_~+B2xw6@#jn3%N1E)kIs%IaxRPyRkXc< zq7CTC9Gt|VN*jgH3HvD);G{Wh)VBtF$6dEz9fJCjdQfSN9CwzHCpnPqtwprll$(%~ zZ!^-VA}y2k2c$H_UCAyLqykfGinj>G^@T{4cChLGU0!@wdG=#{B4lQKwBWS8fjfiP$LK|^gf04C;wuKMw4rXNK%HyzNy5kVm*Xxe$SEWu3$Vu|OdmT&>t+qaYyV>OUmE>u;e0rKO z=gfvm%P{i01xDICeFf}x|U*glJjqeJBd(HNIOEh zi_;|*?-!8+lColAu}jHdqrnj*hgw=6ZR>?81u>oR{7GKZuUZMTlFNeTa}?GtRP26D zDSV?Pkt;)Q>}_RR5#MPCxPlT7tIqYJsxq@=Co)Ele5Bb; zDEBOsk4OUIfi^jel@&fpMcZcJ&`86vxwN4o>sLhleiYyf5%seV+X+asiOFQ9GZIj6 z*n|acxE@v-)oh6KB~-TVZUuqUuV0O3jiyAl5N)ZZGjycua5d>kf%ed#LFwWu1YrS4 zAU5la+T!R@8XlwVqe8hd$KxzyvRK9bt0nn(qFY=zuazhzO&!Q_wWj4a>GoE68(O1$ zOOn*GVC6EI+{}C`qrCy z31O$VlxG;FeR5z%5ZufttqyjHO4%h>DJXpxT1oK)b+1y=<_|AODybY#obrrNjg84; za!ljoJCVY)hr}$R8ga!XLg#MulAk?Id71Iuc{_1li*loU$#Pq&n6<82Hzrb@B(J!i zO1G1#BHGuV$A0AnB`x|JkJ z3A(~kuTcl6y(U6zgv`N=9WayjIP6AFL~udQN2DM0Gl{o}={#~VvI zOmwc|53L=@>PacR#r-~2=;8ZGvFR2&C69*50$k~*b=2g9EydjU4UMNym2@>GVT@TV zI@4~n6cFlnAT1>dw~mKjzOrjlkmSiiHBlRU?g#YHSdZ#0f-Vw(ZVHQtump8Jt#3<+ zgcp*JWtFX$614sT;%uwww?knan(bB$$9b%~YT)N$p(0PlkNQ)yOiG!MI zJBVAcA5O%&l$}yaY(|wvA&Z=^+APy66L-cN-R-gb}2uG`+8Lw@gNYwNK(3j07xEG5-wOaU6ORR z(QA!5&_E6CMm!JnR@;N9$KS_{&GDWtfwU7mk#+@monAM#^EH66b*ab}x zBr`AdCHLgBA&}uNj;lq5(xYK=D{MKQJ&tVn)=gPAj`ulH<4TQ@!GP z9e(;^9ugNVMLhr@{DlZibF@_w9{YOkWt^OqV|KZYQd@5_+JkHDrt0lD5a*JOt}2CM z#+G+I7FyVj94;y}l4GhmNl?AiTKJ2k)L&u|P;%$*9ur7#6uUA@u7tc@7fA?B(yec_ zXrZAM&5Q14gkC$*8*+NAn~w_G+W}Mahj(WsCvhF7TWnjvTJ?>OLk`1U36EA=p788) z1^%Ne6kGf$SW*50x$`(r`W+Y)wf#>^<*&b!p6L85kmlczHXqSno#%6s&-Fh=>!`+$ zk~}LTVz)0-e0 zl1SPwYv=EEm&cnmN zRft2g3$}JLwIN!8+%_bAw9!a;5#%8SEV5Z+a4ubY$vsY_nz)jXKKuOL$6xwI;TVh- zuct0|RK1t;u8L4Uf9!pXA_Q^fI?wH2(mQ z)AW4$zs%=z_39gr!UyzJ+qIAWv_kwmk9>^J`+j==0M6#QrGLZPNAxD8_ScFb{tdk3 zW~Yocf6e6?=Y9fEP5$K4{Kx&MUxEJs_A?*tJZitq%x2&J0E%+J`-LByZ=xUi>V04T z045I*6uov8;B=lT z#S#zy00n7x@lxDZ^r+DL*-clk!SpvAZ;PP%a1f8dP451aSlhFb-}W@GQw@LWJZ~3) zZ~VL@1oOX>?+DS)_*;+P0 zWh82q29gN*8&@Z9BY3Qxyd6DERasOh7-ZCj(YTBHhQ3$RO8oJE`98WdE3D=|9JunM z%n4j~&HJQ!!=s{*d^FOTovL%jad}=FG$L^Nyi4~mG6)A$-|(xz5m~_jwil2@lFMpk z?&ZajtKA^@^rMM0s6ir9WXCCFgs1-i5zE`|q|_SH!1Mc3r(Hq003H zxB=a%>w1<`B3z9QG6LNra?hlA-ld6&BeoT75;~8KK_V}{Pz{d0RI5@X9hs6-7gE#` zJPmYJLKD9dGAg8HRHvOixZwIyf1m#VMJp9V?Bts56)@v$q!p>PrIyF{l#&t$+G*oW z*(5&0RimGw$`ZKGD8nU8i)TIWW@;F7#+ftPF0pn>G*RP1JQJsf~ zYR2PLbq1(Ji%kNX5vlQ@%zTt9Xt~r?AU4>ea7fxg3i0_+BXBI0qS`ntv*$oDM#D&3 zYO;pI>Hyf0YY}=0Bs243PsQS)#}ZTY4=rI2uegwvCus>idil@@68cpTKC_q-I}bTOx7=|!c^M8qr{m?Kpt{U&s7vg;gpf!GUezYSS{j1uc0|Ya z>6}E!=Q|xzuo*~2M=r8jY9yp61tD&NLU#f-->nv?>taazdBmDQPEGlcMz^3IQck^D=msByDL$%VL>aoNhwXV(zyG0(y`ssv%PgG z#3Y22r$pY?u4AZNdK;3V*R!!-J;Pt)K#W8}3+yKM+MAnvHKu@j3LLpk$XsR>AfVa8 zfqMhzRD{JA)P}F!j^ku_6q=$%@v|Pr&yO{Wtf6V|#kojzuyt)#)ZfB^J&RrkI*TSt z7{@W095eDB*oCdjx47%;Di--r^+Y1R=8efjm@UX;He$5n4*-w~UG5brAw#N7!je2M zT-cVanh3){`gT$Q7f87^vl`r?`3t5_XD0DglwT=Vnc6K}xer30Xn*^EgZhWNJaNVT z40>csDjM6g%E&)`adzz(nmYPaoQWOi(#wRnqjfBmDB9YSb6){%+4>zm)%^#_0G&;( zQpRqek_ZQ=q<}+hx>Fg?{`_Or7X!uRINsH+YwdzXj?&ma(ku0zyq}QNv_I+Vkum+& z=kRa0>$tm4YySYSlnws??^n0hhBkXA5o+zAg)2^k6Qy-O&_d40*5zA>(^FFeL|c-i zg`UcpN<4Rk6My+=;))x%?4=^k1iG@Tp2#UmQ{ixIelSo%lVS|r(37F3g`pzGGQswwPi-degguZ4wPqzD(?>Dp3HjlmT$`idCca+HgM zUavDn96_o^)DrU zqmmv^xf~iGDwWN!41v@yAjkgzPN(FcYCy^NyV`hwnI7hG#zKD)`qtDxh3NUHNdqhQ zC+uucRQI}gEd|Pu@lYQdgwgZRBo)a1={=@Hsh!7t&Bo-)Kuh>HBR-~HN^VMdtlq5wvEaI&h-zrIU4x^4sb+lzGc}C+duM# z>z^-W)k|e!cFSc{bO*B@%X_UUaQ(^mQ<&yr$AH^Yv3v#D-N`mnfe3#hw3MR$tCoIY#prrvM zR&y;LJYZgRD+BpauiHRZLXhOVsuBXsZ^wOp${@FLzmJxBYvsbBZw-8DI*zuJc@GC% zJ@tzZz%QjssGXRar?l5gD&9t?fiEEoGdRHt8@7}Sl1*x{nY@HFMxD#Q-gFTOuBboG zd?Mcs&P2~0FuJvUfg?6?j}Pch{t1J z;#rJZ2XX|7No+b)G%S^9ph38=N9O2e`>Pf_o733f+092e{{Y&KOBm8*;-t-!9n)ku zmXh)k2EU22Z$*7SPdD3mGXDU1+rZ-VDy)aHoUU9LAV(3t! zt{AOZM21(H;ny1!{vRwDb-avKPLxozgBd|+kcX44(k=nEqpf#Su+A%W;#h5rOlXrH za~Ua@Qz3U!L#TZvDsN@1txeJgPQNJ%X@G zkelDqNVu;Xv1z&Mb!oy>Y#8b5g@*7HA`nf z@~WtrBZA4x#W^APP6pK_J603{3JF!nHAu~{l^nK7u$7LE@;|%=y()x1#&T{R99!In zj5_Q`K`c2HB`ZUyH{6wUHt`iuD3aL6<+yh(fh`#MZ#%UqYD*8WlBV|$NxiO3x)Dmm zH4LY@9~^B{UrRY{>uqUaVcVwbN^FH4-YQM23hr7W+X!L1E7kPiiw>TiwN}`=?v7^2 zJf%*Q?d}|POZ!xAYm(1X(OVq@`(lT?m+~B%fZLA3y|uyS`ob;q>t1KHykk9IRgQB* zJ1L702U08Hto1(KXor^{-J~;ZEpw$HH5MdWr;RxS&pfv!PJA$j9LvngDc$RSbK%yA zwTfFs$p_VF+8Q3oW0Mv&n8dFgHs)EXgRlk#QM0sChb+_l&=xOnT(!c5}&fQ7+UIWM4 zHqlFyDbK#vy(jDxXoj)=pyZ$WfqS_1{-2L=h=la~xh{X}I4VEbfBZ+l8<+d%_p(_f zAMNO8uH->lt@bI~RQ`Rwfy97&_o?smq#-<>0|*z|rm>BBenmvoKJDj1l~fTf{_uZr z3o8TM2bfEpdl4g|{{SyZr}^0j5JE}))BE)#5WjQtErX}!mXZAkrTLkDpwKZZ_X+Pr zgp|MTcO`Wvs7&RcU;a=i{LG(Hc!Sct;rBLCB1b;tPXnnc$w>aCijSWs)Nnw^=X}Ol zCQm5LJW0LRkdmwY?osn!>L?;z&t_gwFJ&dVPm1I`ujySw%WtTf8!l9rJx)kbIufNR zNBELx=VlN($76E2w^Ys}9_;m|-PN{>wvp!Jiu9-LG}3R$F3A=KKifwD4{{9RBQ~2U zaPi4Yiv!ELpc8+PHKMCC4spC^1sh_p+XSv*aQa&P@0QR!UQcwpQlbDJ-|C09)f#FkMmD92O20 zoO>8(3;zJ{dj~bVHXM(|n98)93-xm4-}DUd`sGF zTDeTvY6G_BQb{et?kAzx*xUz!HRAg`++wKrJx5tX$ow9F<^#!}DV&cORyuYumX0%& zE%Z8P#F_)jY%n!zwzSyp7d7Qy_NY60^OGg6%EvSkJH+(rJ|7C_XQvWY(~?pGg3p=K zl#7W7>xoj5+l%fk!?<}^RT$YHWU!HQ_~#+YZ7N9vVzk_o;bTFYIb)OYyvG-qwZ$q^ zNLjK+fCt0RN}C7^UocqQ^My%$uy-fNO3k6B2T1o5wuf%vLauHubf%Ppya9PGe(bj7 zHuJVN+S-A(gT|l7`ibU6c{h+Du^-bopF#{xmXfziR<~%#$80yhkkK8Cg>qaV+GEk{T_% z!;db`HP9ttx6xs@`4wYc=UVcS@qL_pGBx!9`Hl(}Nvw+TsR606{{UO#QPctL$K81` z75@O(%9XeLHm=oUnJ5P$<>gAlna{lBncQb;8kmb7_Bqw;O3H@2njiyn(zUIbF0xu2 zFW)b7J-!kg!tzNHaY;~EjJFHSB!6_FXHoL4>DaY=m}Toy`=hM*$L|6zay(Y~R|bih zNsJwnItWeBLbj3ZB{=NtOZx0UwuD(Gt9s7 z_mAvt5m`^#<})CLuNfm3kV@`SrpQSk{7`Lr-}Ab;zUreo_50X9+sge)uRHr-%Es81 zph{@6fS&AU67m&dO~@ktG_C8ser5D#)%N}DUv*@vvcAajOm^*yQc1t%zRHkv@G1a- zT=)Jpj{4)sj*NfGIJB}+fb%`R5 zq*ZN`kA0Av5~76>_kmt+Usc)1y-!acvFqgfZitnJ(xn9`f5J_OHN|XKtJbXQSF72k zH&Ox6*xR9~DKWFnk>j{hY^I=%Ueazg2B%-3LGvv*>+LqtQGMkG+S+!Kr5h((ib=_F z1Kf-rNewb0Wh2dDEu|`bi5rxig?mu2dRumY)xZcq&Pv5J^b*SwW4P&YY{+bGOSZA~ z9+&d9GISPBTNbcPj8J9Os3|V6wIGeYRytGU(GIf4IXB?C>rx^aE;iF)E+RqR;%u!# z6m=rU#H!4938m@3Lq#Z=T#>CDTbgtEKIDlSJwfc z@k8nEG87V|`ft#lv;>K{23|R9T&V6xOQW{is!0hdw@c8p2Eq<4j^fgqkk=u~NyV(F zeH@mNxw5Yiqt>k%vUywk_mF}| z-%FARX5XadTnBC{O7*cDJnKj%QNQRp!gebd>q-XRtAA}c2|~EOGstsuR|6A`RLA3M zDb2wQu%8t=>b)o*Ge;K5wc}#W#qbOkFb8=A&)4P+RSrJp;Gl!kakAYb>=j8ZjNVDn zmQFq_%(E`Fk4t#mJTb9F2?%T|#Dp}`K<=u;pw_jmWX-l+~t2M?Z(@)>-*s8ic(>TtN#I3mVkExm8L&`rw1HleVu z#Nw`M<^W1>FUD?JIO!^SGwNlQ5~kXk+wM4|p)R_D0Yb%v(h9FsB46t#%;QtDxg{bW z(WJ8y8;dSo+mx*M_Z-&8%9WmgRG1u^v3X2}Ryq=w@VM6(goBdWzf1c<3L|dYn-qU^kuO&ND;kEuc3bGrLUl}iARM|*b09j=9_|RcwC&Z#7EwH(h8D_}kV5W#08p;UbSW&Z5@SknE-~pr z(Cc$r9PW(*Pd4KOg4szO02Dxk(A$m>RGm+S=o+k#*@EiS6R;4Ypwgz+DN|6g4lNCY zl8bH^HmqAVtwRVcCgW;sDjPd-P?`u$fFkM!=CWr>LZIJ4_fjlSBGw~AaY?Z;8TjdZ zgMjniBIaH!rnoLxv#`c~hNm;+oO)FYE z_#*i6+3JhIf4XnnkG0}I`srR zhpGLH^1c-oaL_#Lb7Fk#3AJ=%_Et@5a^>{ZvSrJO{n&oqxjGP>?g8vWj_9X*NhwJ_ z7eT#x82!!Z<(_7LALp{C}yJ zT4aWF;r>tB#^WY3ugd#9%HXA2Q61C^?Y`#KZ!b`_ab^B3m1~ab-|~8Rzm?&C7MNPhE8vrz!)B9WM>- z^tsX7#qx=`_|Leu)Vzxq?cEn`K#%1r8&y#u4A&pQrpTQoSS;QqT)a$%mmMl}GGru; z=~8zB2=F3>sB&R4rewaNd`zFWG3CpEgr_FFYRVix+;`AMr_56n$sL@3h{=mKB#8O$ zKP^p{ptC#`M+>*4DRw#orRatUmE=%ko278JZvMl}qt=(CAJwy2=kwz3aea%IJZJ8v1T`1Lj6`wdy`bQB`zMACXMZ^FFZ2=qDG zoBdm=8Y`s_8V*cJQyu_~-yum-rk^I8k-N`9JISO$ zUZG`aleJ14KvP4em$AKS0!eTk9A9jnivHSYCJFpE9?WL{06By7SkQf0DK|?*^xBUV z6Y!;CRnu^Tsb19Q<1)myELYF1LQGO3&tXY zmngG}NF(H=*7dT!wQ`IXX?a5F;aMltN|hCa5Az)Eh3ny<_|}z1%dt_6J~176L_z&s ziPAQy#+r?)7qHoA3h`2Uk>yR*v~*+3R>PMuyJHy1WU|)X2S7-!J682)LUmx9kutco z_amq~8ARQclVtos@U?eh$tN~Ua1>y1jn0PFb3E(#yeiaF3Mv2-aw|`RDPQ1g`_8N6 zkWF^VIBmE@{zY=o&MO-c5OK`{h9D>rMJrT?IrZn>ReRGL6N#5ZBriV*j)uI{*+nWy_`w$f$=~h}w zqc0%aavg3wbuBH;Q3KTI8<5E9a#U|x0WF$XhwbhjJ4tncm71qeoof=Rbb52nMdMt{ILpXP zIC+RL_XB&F(cC2m{$X1uqWuNs{-eLyzavH;+}R0{DNG#9rvtN+kg(E}Qm*#WM(*AB zSe|Sa{Ly~jce6Du~+>sd=xv=@hJrP=Jb563R)RiI< zl*n5vM#FBpUs~tN{{V59uh$TUMPLQ)S6kTqwUa$6>;%pR$|MnU=sm>h#DT+%N?g?;Aa$hdFO4EfG!fbM5+*=fGezJz+NJD8wkELnJpN;o^NemM4;w1iFX4>F$D!3F zvYf_0e3-5Uok2rvsE7H9ZJe?t9n>!ZU{a!&>3y_ zlJv6r88V|dhK!+R{4Sep^qce`^{QKdv_Kw_kB1>BaY}VAq&f;x+V%V=UrlXOHXCKy zgY|C6j>%#?gr&8Ml{TQ*u|GTN4Ot`n1bHpUX))wHWT5KfD${5te)@jsaS!&R=Ng+0k`X0y78cVc;B8WhZ>7gd*12*c44qt0WMA+8@4eIE=!|)H z7{l^tlG#&@%EmaPDO(4qS!uB+;ajfuM4;optjBlYD8&Bu{ieyiB0o0aQ!vgfvg^#q zVJi)KK=hurP&cgcdmNbCb+bl!{WWq|j~Ncfx&HvRj$@Bn@VTsfT*{dyG-uo~P~i(2 zDBi&By?XtB3?J5ki_t3|IDb*!QKxnDG+fQFknu_XqdKpyT8b>`> zvBPMlPEqwKtp5P*FDDf)t~4o;(9-rh+E;lgJ#2hyp8liPX4>3Y+P&Yh!~RMpm(Zy) zf4BZe4K4`p_ew^od8MFz_O48y#g)Iskl!Ej?mA_}zzP1>a_DMFP9wgSjkiTz$oTjg z;LH4Lw~ttp(!>0pr;|=l53RmWhILPrJ^KyFr&Of@19;QEG z*2}GKzxf@==RB5XCF~wnVlr6wQLzY+%6rYA_$77(S1YBfx`VHhYeyt1TOpKbV2>(N zfI(}zRGx|_MG9b85jplUE-e`K<0QaZ2>OLaUC^a~F5*(J?^{p>QJ)4$BbD(<4650a z7D9&M8e3aN^=obE^ZpbyD2AX3%)J^`OA!1yEy-ofaCyfXRsR4nOHd(c@KQjv{Cd_r zVS-Er=Z|c`cCWO^eIbAHi;7tezOL+}6>AS2Ynta_*L{UMEe|$zR<+N>>EtBjr&{QA6mXq~$raBk_g@vp+(buMa#XdZ>TR+vpP2Km ztUXRzoOydm6_l@ioL;f8q?6#{?f2UDuFCY$$!^;P5s}E_b1zJVCH5U#rAsZXL%2`( zhM`|=dR47p;LT?4Ma|6QW;o-L98%WdA#Oa9Rb${4Z7XWRGH7p)i!Uc2F#;;&ynhiu zx>7t!mC#nY7-Y<-S$N(X3m)no%QT1OG?D(7t012ed}x%nIIY-u98@d%X*pFjkBF3P z4XMV_aD<_>b+Gt+D}%S2l7xG{o2jomhq%0((lGexPP((0<1eX)LKI3Cl?|=;T2JHN zEC3!g@m9o?fwdOe(Vt%6*fw%uvPWS>vzbCQOgg!5@7DsUa!N^G{s>(;NqRb`uOjXtLjZNjx~oRn#_U}jTZlm8=46Rd<7G3gp~&w` zY$Zsn3aS6kLRaviH=s!d90Z zT3nIXDhIf>+;v-4aS7o+jEwwtT9Eti#|=ow@%V|{;$=9&ZY)G8KrL$< zi;g<4LOeCCs>bvu6_8dp0wU*B-a|LYT$IeYXdsx7Vr`1jm6*lo;}3))HrSjd4$&-6D9`=zf52a$%?_a(J5FfQ1Ps8$_M?pd6?M<4k;*hEIvyy z*X1BtP8i554k(lAQQbuVv{^06_Io(C8||iNDS6Gx7Tl5@x7%Y{TV^-90sW=q#{IdOp1ZH;dlK{6tXIBGMbGdU9^8Mu zcw3I+u$ZZA%YgDANhJ=nxa~BAtfjzIfDMJUHP4lP=?__N*wP9o65@GJ#MV9bzPZ6PB2$u~VkyeKgS-I80r&{9psQV_-0iAs{S?osr(6g0K8 zq{P5X(j94ElCtxE&N>0`sbT?UPe5>`NGP}A-K|J*1oAQ4ebVwk7yIZcrE!_YDYo2x z=WXm!;nsrI$Rq5CN@i?G_aSesv3mSQusMM)ih5w6~o)bTx<(B)Gt0$v*-5ejNPQhH@G5nuR04<+;? zO+O0CYur2|PjDY@S0u>n^6iw8I*Z@R-D-p_3Fa}bND-P`C*`FomQvT_AzP9z zI*@e-$l9*90(ZYEV@;H~+-tJ%n9@N?eMKb-7wL6r^Q~2&mP#4XA~ftK)&7y?IM@f& z7a$a>&km%52o(89i2h93m&F$Wn4nMNuDL!WRa|#rx}WtaNIH#&?WoECu15)v<=)ie zohd-&SSd<_i;#cKTGQ%FZl0=2nj+Wou1i)?wJpV*CZ%*N@s+92q?-Wv9|Az~wVCaB$HEY}CXPqr9fTL#?Qkke3o|xLZ+Ozn|C5 z_t7(w-Cph;DUqVE&VJUOYr5MQ$6GOicZiPf+k5S}C&sh4L)YfraW}{8eWnf9BvYC1 z+umvp;~mG_N(m`LjT5JtBDt^pYps{;$p>9Ol;*|$N)={P+MZnqD7O_8HuMNKQTq*X z=l&_!qMEeM++WK2_Hk)IH0~|Pp%NwGWg^{H5LQ3#-n^W?m$#34o|Zpv)yb-`_lV|Km@U$)7EUi0Fmag4jXZgY*h zCIjjn)>anNi6ZG*6f_`;<;X*840`d-3l#_RkgO2)}n~>^}8-Z?G$hje^PepLR3cHo01KO z-&tEZwQz`XmJ=D&N?-)K+V_Nxo|AoRY;C=avsES(z+t@9IJp6jY1m|h$WlQ3cGU{D zsl9Ykc4szQO3;-u;x1C6;xWu)m}MilA)uio+f=wLE=P^)u88tGTPY+G!llP4?cDV) zTpcL7nzNs+mxa?`QCtcc#pHXFA5%@nLc!m!;?mni&FjUxdZYAgDz>Fs(?RzeVoOsc zO2!u>wicHpxcWj;>h4G?2H*sbI?|m=W~^OF^M3ocY-y$oG?;!#w1w8MO^axg!SaUXL1z?O-ym6FLc`+=lA9cqmM z1zG?UY><@sjcd0KD>tWusMBhl&8Rg5TP@<%Zr2|WK=~jgUNX+eN8Fg+_ zB*=YC$WnmZlzLXQ0+2#eYXRj&wi7G7+qlG;OUO-{nAr!AsVp$Hr7kD}Q*(bxKfVWA z=gF~kIko(|rS}w>B|Vo9>Cd$3?Z?!C+SAl_^ti4j;hl9-i2<0##12NnLwY>93N6OV z&v8j54kzB8f#H!AWZPH+nX{2=u0Vc zI+uiY!3k|L;V1x~h10F8OkiJFl(grw9FjAON>z#EXhH^^TvAjLPnim zSguc(Q!S(^Dvu^SWs9Wx5Tt@UQ@C2bXS-Oj?e(wwH1c}UmgL-8Cno*6=lJI&%iMvGN~6T2n19=}K57AvV6X%a_5?>zrQII%6hxsr)6CKhLAR0U1r7jqsQ5q_wy6#DU2~CB^jj2hpC0Ypy78VtYX0=0v zrsG5QQZ!s+hs$KH2Or8#la8H{Xl_#u z$z%o*>s%H?sRqJP$J7KNuO&4di4Pz>;(Rgc;XvdNbdbIe>Jgv+jnXW^#+=7HK+q7 zXV5nxwm(pd9Z3p`%+Qc}M({)J6 zRIwEdHhYOn=|=Walj&M-t^AES0cl@Q%8=-JWT&+4)PD+_KA*F|)dfqDDxxV?IAETf)cTHnsfz$_FX#I*&Sh1)rjuA{xQ` zY`U~6kX;lJ@rZ|rgUNMr1eI^q8DP0R6&*Ak12%i_`XNj69>_DS4?kUc>79<^WZ zac8gEwR)VH{Vrasg=WrC{mnhZSImTdCA}>{Qkb5??_{2-vX5I=h3;>QCPiu}(E7hg zk0mj_ZccTM(UAOR5(D{y%od2lFL;K|WXMUHB}~&6=`+-U$*v`+=si z3>5^SOO1Y=#Ms#U4OUm7mO8=Gf^o1G=qwMyxlPEfM~LHjRLM>^kYnYx$@IR{hU(l2 z3Q80Lt>;}B+pB|~$z4fN#FaY^sVIe!TvhJc@aq~vQf`pqJ{||HchNJJ)h#$2_Ys)K z3=-p`i^+7M5@R&5Q7ohR*?nVDr5o)ec~?y=d0ngyLwpPgxkp=PY%F#w{FS{v@m+Gs zzUK8ii9IdWx+zX>4>OCeg6ren)h9ad>G)}Q@tATyas+Iul*@7!6S-keSb?|aU0;cf zEsm=8GkCj4F>>xH?*>CZCyHdTF2n4+w$le35{!3jU-JxrY_VWTDmBme@v+j9wynz! zuwKbv`1=^wc|&gUSx=OzJV?zy`b$et^oJZmLY^e(0&Wd;R2c#rY|kMN&O*b8c?ByCf&c{xP42Ux3K#n+aX|x@reb4u*6XR0 zB?Sv-5?okPno+v6ABZN}-jPE|`B-rnL$F#y@ZVZg52%HL6r?gPl-*=p_}YL6nB@}` z{{UrJLegh~Cdz$HxQ*?SK?o<(NESD-y$OJexrzCbxM9ZU^=DGi5i+rIU^2sk7?i@#tt6E#unU|gX9){4aO z5pI0kiO0Z8rWP@Y3w8X1gJ9g}`R}N7S8XE6y&RZv3o!Cvt`1&PtvtLuMv~VKizNk0 zc&O^46R28}H+0Zet5icLuxpbCCnJ2K`{F(_V~Rl~DGkW&tq8wMA$r!Bz`k+P;7s72 z<6s()8%&JOE$Fh4l2BX=4XEG$0JYZ48HysU~*+0?fj{{YnPypzb61{PJXT4zRTM*jdk=t{q?xetHH11;U^8rWY^K}1Z2 zTH^PhfLAC}Vv;>XXnxHo0=dnorM8e)a?ZE&tlfudfb-`!Wb_Ijh;_fhi6vACojFgq z?z;g14ScCdPzO)Ry%{S3-{a?0Lr_(`ieu8fDs-q{KssqjvKS=9Wp^%mlX^{(s!y_# z03KB=)~J(cAC*j-RS()H&a*X22dPj_r>z4wV2#9$ZhBN%0Q-45TT@d8b}OH7ajfMq znJw=&)ckZ;<>1!ky)&BtvtW9Ys1@7N-&4l+ZE-nK_@uE6G6;zc)odDWF3Wr%UfT3Y zHSa2)K0>h5lV;;0rD;Qw^gUXdYVt|Q@Z`M#jR-g|P@vA3+BaeTd%wa9VgBlY>BzBxqQl^p= zPUYXsRK3C=oyW-c1ySD-A8Kr9>TS1Ts3p`kwb*K<4KHy>V?3lDOj#RBjgDVYgsLqPBJ@4mmvQ++51BpKy+nGQAe$Xs={zsYw~wJX&@ zL&Og|Q&y0G`Zf+E_;1a`WFkvvQVNy<+@*E%`weKSnj+hZLgGY{Seo2<1z+YY-4{t4 zwx24lD3J`8w|O}zZTv`&mUWHEc}aLAsDpdh^dM22h)uf&HLCu)E()$V&=#kLyTAKZ9;roEbFYbL-<>@2P`I}w`T9IdlZ z&RJBdu857}O(|LIDpsAqNoei(ZU*(qk-}$2B%3=4#H+Zwo9ouRrg~5|dvFJ7^;(=r z6~86LeNa=SyQM;wja0r zU2z+6Zp5DQTlGE)MuX1Axog?T?XkM+_bZ-am7Yt^CJrfyrA{Lo6XSTNluyB9^M@Vc zxrvy(dcRSClqN$?yL6SIKb*>vQRY1=^Z8e0ZK2K@dy$ou7Y)WU<1vcLyOxf~e~!RP zWBof1v=oFZwimb|M%vVKM)j#!LXne`CM2novnYAMl*NqXmkLnmI)=6aQkxyVlyt2s zHiItWV@AlaHfpgFUkXH6N<)ZKDnf0wk*Zu^#v?tDUQ4=(rxKAVF`C*^5T)!PFD&0eeKeaKNzOd>cP3j*CHUyT zMS?>Zyc6$-CZiUw4{j9Q3FSG8V%w3LTbH47*FC!nrLI(V5+ zES%a@q)2f6N1|$(B_-6}`z%M{zlA8{2vaxahNq(8{xLaC+q52oOQ6aR@lP3`ekz?9#MHbMszO!!;>RoQw zkaO>5GaZ`XJX4jyN>migS+NR@{VujUsYxAdLaT?lkCh+jb#-j(a%b9XbS_Q%ZTHI> zJ-L57nZmR6Klz^t#?tO4G9$`b?fFQi#}g@GWEOi%%2zWzqoDjy~;WOEQW)2c*LXXn}`Gmp8cWjFjl>#B`R zgfd?lnUuA(ms|ZuF(4(D+G%7U1s(fW=1Q$=`O{2I1;}3|l821^xPsHKp);XJ8(k?N z4&hFKr3hE>phzBl64-f7$0~FMl(zGVuv;lMD;MZZj+98q)aG*7tG^-ElB71LV{SX_ z(n#EwQ{bX5MG`n-Qs;iB^nX_LB}*WsGMQIwlqqE(xP#F7)F6Qt@l)TC7Cb5JL^23c zRvp+15TXwIc^w66tV==EemTmEX^xIT8D+Jt#ye^%v0qdlx}32<)?O={Mc*Zv!tI{v zTP_enh#QF?5H2rJgD6u?NJ{r^xCAX{#Vbh!e{D5r zWV=Hz4l~VI&n34q2lV-9Qc$@AR>=TaNk1Fbyr*&VF3e^}AsP0gNSxH%RFY6uq86Kx z=qd+IRi#0y*xQ3+_>{c4k&?qD$v803HIXe1I7>NtSG@dwab^ri_sFj3Z5u_`<86K&D-5>eZH-36Qu8ZWWin#N zkeANoFzaJ@2cWPQBCt^2hTkM=5@0wl3Fk?i%x7{ep z_gkHm!&@nmxyk<9z0kvfCJa<$62aWjisFKYjnm~+yB}QzY!J7Q3U9Z({K_Ax;Brfv z{>w>qwJ0nPNcDUMls?izSR9rI4fgjj11!czJrQu6hC-T-uu@4+LVW9sCt+Jebz{ND zR*Rs8l1bE^de5&bkYyX^+YQEGgMXj~+qXq_sB z0rnHxj5GwPc^T4j?zjS7LHw4q@=8tX&dJ@ik3yX~t-_|bM;MCO5%BD`Z+-feU&GW% zHJa^Rc`fy5YR9uMxpb!@LB_6J#k99pP>``17V$d*ln>Rwp?>xij$>u(da8~Sy-%2 zSOAs~-a(bGwKO_*EF^VOR^^ltr-=0(E^AiF4I{ym6}V~0MmRW_^pu>c5pLayaV{lF z1TAMvn|>`kDr8{(Ln$90m{S5X^YYRohj0ufrM%Nh+ECh_LN!~4OH>7 z$t>l$hG9Gt86gBSg^on5gO)|s96L{8ZV}aH;G5Q5gha^XJR6F-A>tu3g^>JacB)gy zAt8s7_1#m+QS6Q2`jnBor9;b9J`ID}KX`a{D-x$7U}Wb*(h~mw)5yC~5cGgtPV#P7 z(3@XFQ*6t?)jp+L$-Vc_WpQs~BTtXV@g#(!1&Bj&5L*VszT!mYa8cg^`d1X zk>%}4lBFZ+9YH^u_$s>X)Ey0pu3O}6*-{8~a!gamD0%~P8B&h)KC`%=n6;`61Y5;o zW*|w%2@w#qkgm$Z>1_TYHvS=cq@+yJ1~cg-#aM0U9xq)%$2({ZofUIpcM(@b1X#9V z!rtl4=j1gC92F&4%q(CUX$_}9g#vD{t6f&>U34*ffiopzu-WMRmmev&(8filTZYiK z)JayyP@&)eSrjeAbyAS5dEqnAc9&BxiDb$}_pvc0aMXO#q__aCf>39|T~=G#&R@bZ zaZIe|w@((~M%Qv-sdo#p@M(7n{{RZAElx?JO1E1kJN6o0Baid0Q^T{ogOl;BZ!o~V z-Yt$ghaYPrEViT~Hcgg7l;bT6l#(sf9<|_haqvv^>6JUxorC*n4k!XE%08K`6D}@B@_Ha|K(4f~2)If~vH6wldBTN^Y+m;Mx($rNfXI*yeuV_I%LLM#C{2D3FDAPuJXqy%%y^^0^q6==@Z zhBZ{4--#FLP9%$57|-T@ou!o$gf^R-9aX1*uAFo@I~ktEHie0DTA4N5HzG-44eho2 zNbaxh1YW&5C`WDO=`2Hrf(BC(lErQWc94ywcqDqe2i_c}i8%w!k;k^u6ga z5XMeLwINDeG|D0LsqL=VDV1s41HkUq;*i$l9Q>rw6Cm4>qNljyvENxxE80ORY>$9C zP+18gOVVE0redK?#sQL(*KXGmE(WUbpb40-0`YO?S!5R-4qTE@)Rb6T{{XS5UfvZ* z&fAmUuPqHqbyE9s%3-@14UMS}GJ9@|j;ULEpNOHcA|cK}J`$VkW!-hPZjR!dxZfEL z4%Nqkf=!8~GBUyBd|EsB37m%-@GHi4-}+UHD758*?dPtwHb6sgbuhMblB5t?#xS)s zlc{vNl6wGnTwIFG&>Y0hZ|T~XIZh>jl&UO1eNHgF!L@vLEjG861U<_SisanMth9(~ zLOZ|cp|qk>y}+o29|CN4{A*NAnRZ|^q66!Nl>Y!#gPzxGyxPe~4kqdNf;9)?D;$@G zbz*WC@{T|5Pa}-iy&lyuA#tKaMlYYnjys=Clz=uR<+cW?l*mH&59Yl^vhY%GhZ@NE zv!}hb^AWVNv}f{`O;4>J{}i?s1LI~)X0dL zXN%&?QW{Kzx!XtwxB`v-`sa03W+}FDhweiM?Nkwj;~Xaw39ek`L6;EZBqXg3*-2NZ zYvWmDhO{=Vpu0V=_790bkBy&^f|)tDT0wpHQ@8~bf=8>My=8`?wa%=^@UAe!2|>cc zS^O$cZ90H_Y%8{!7(GZnQ^Ytt9yy+qD<2jTLG^3V!Yna#*T6K|$j(BDpn%7>b^ z(V}fzSM4m{Yx#qDj%&toT%Adq$1+mHEQX0IVYxSKEh_&22_V-k>aC%zb6%=QzkK*M zTif1$JB?)?OvvbE5-_<|jnOh2mo2zFi0Gl`UTx~>Z4YX;c_^AH4%VSpzmTet@l04T zyT;e3wY3_?n3J#;bhk=}b6<`~*KvFQ0GF@gq_PR(&|vN%R?)w_TD19*9}6!Oq+da; zc&Tzd8(4E1Dy2S#5TMXnl9k9_h(*n=Pr|((k3%PB(3YQ5m$Tch8cTYYyEyZ}9?83h zQeQ?kBL^huvW`kT%b{U6u|jXud@J-mmqQ;~kzM?s8`|yLu;uJl84gtzELcuPeJTA7 zWkm^+?TcUz+Em13-9}*{l!8eXK6Tll%2i(GWZaPZyoLFYUHx<>Mph0WIoN{eNKexh zER_|bqOYy%8xD(5V+o6YlyO|#C^&3K)$#nhQnGm&F~D=_Wh1zU+<8O|r~r+C>-N;t zveMv~3_PPD==n4;hlLaCrmdB&GGrwr2WBjhv=<53!$50$jVr3V5X&(c)#oKgRtFl) zEJHAqU4zeaDqxlh^hi_AA`tp2u-<^n8F{3Q#&ij*>%>UHp^Go zl(O(PZ^#f-;THqOlW-t6k^8m7xGZ`2&IHn@=OqOGqs^uT32rZNB(wOILV~nP1;DIq z$UQ6thUM_P^uu@vF`tj9)edDP}v4Y2#QNkU$f+JZtB?$LCuwOk#-)z4&&lVBc3V>6}58JJDS$`vIFkrklYQci_W0q9-2 zk}66ezK&!ynRu7Ojx^yYemaS1@RRBv1Ms9vK5vysQ_7IzL8ps_Nk+C!x~9jVs!jy< z7a5#}WzpVvx^K5)+}JJU@~x?6+!Mk{t*vib zka_{dT8GTNqr{=&6zdK&&PsAqXPSAWUOT|t8>E|kmD5s37_5dv70Vd+8XPvJv6O`F zGu&(^Qn%uyB4V3J{9DypQ#f4k|bgz?pwdEgki~MzE{&@;zMclOj;Rg4pv1Aij6!(Hkx|*8UZlMe8ml@uX zbd5>*)iM_4Rmz(wWyGXtE`Hk1=F~ZNl{T=afG4l3@2+RLve>F*w56>==Hj$Q7esrg zT6L;3fuRafGz1P>Yjv(q!qg6^m1UAs=8;+0+Nh8X=r7^Yprci&wh8gIsRf8P9V%B} z8rHiU_S}z_@{kGvx|P!2HAv3;72hK-JUc?`QT$DfNx85C;!c&>*F28Hi6W&zYCcyP z$JXGs4m0v|5BW%Z0{K7iiy&8`tNTwH&SjQP8Rd*mxEzVp?mz9u;9@}+N*W}#5=Vv9 ztJqZ#QC!w4T9b&yD5f}z8Px@>TqUHo+X*)C-LRUZ1k}Vf-W!dX%8JtGK@Q{RAz@`m zLQE8HvR50#G+V$_^t%I(cR zE9yMATGgl)N}NN@xYQhS9PBpYnV$FNJXv<>N>+6Twg>~p^cjL_z|4%~w?&+34LR9) zNiC&FMT)y%^|k0NY&yp0t6#z<3&>?i@bJwR2@-9s6fIQANjrxeWS zs6t8~bSHQ&r}2w_FQnh+S@{4>RfD*jxuNmd_G1oK_w+#o1+6Aqi2}Xug%@cD=P}cUH|Q>bcjF2)&Wx zGdOl`Mt`5fk;$@exK|o#&gC?1&~7J7)|kD9E3MBrvFozc=#NJDzq-6Rc;Bs`9!@bW ztRdyN!nUUW0OA6~SFeKfYxc9wwkxNqEX*%F;CW|4G2EI0oGJ+|cTyE|(&;Amu8Br` zT%Kh9{{Vf`fEx>Piwg+Cew;FQ~5r zCQBE8%EVag=kitv3i?Wt|hm|@Jr+w7|_IqV6eAPm*&2$i5vPQ zH}O3Mb^6a$leKP96+F)Odblh4hupV`!s8BxnUH0`4k5V+AQxLMjj3560BpXM`WH{D zPQ4XqkCD&XzIQE?>Ysv_$MIOKqUGc=63QX7HHBXn(fV)le#bu4GJ1r2dMF=@>)a|XAPG!^LPxCicWMP zQ!~!V3GIi--h?pYKs2u6ItyOott&5}Rq6|HrsGSImcdNL$j&1%1(`9iZMg2mzYSy* zI@$;eNeZ=>pzB%Cs~uOz_df z&|I46R*ekxA~_E}SdPY;vg4pN^?3ZO}tN zxP$07bVCRDgjMYO%BDVU`tWHh9$Y8O{a1rjS-nF{A8aqGI*`wCtql{C-P#9Ve9 zb|amo1iq5l+@!4Pq}Dez#!^{$kX%CYJbF=WlwZ1wlr03>>Mg6(kgmQ}&t`51NO&!h z)6BRWM(Z}+fZBBmx$r(zqzN2T?svdKd#7q#3?W-U9TcL0p(CwQC5ygXk0s}rOKW+% z6t8GfQf+jok~O{jXpjkT(`QI^OtFJAwlY6wVAz8?p{CX_1m>J(xyt{fhlf_l=yj8 zuwiyZ6sFe##G0gH%$#{GDfMchR%4*VaOuKOtSvd2N@(*eyoFoOg5S z;03iKBC&E@i5P-_uZq=c(t#Y|%jLD2&g3Mv+Q^il1`<+>l_44eoj;h|ill%-Qe?z- zR7`s*dl0m+Qn!$hww-A^RuB*1K4f*K1e`fd$u1U>7S!gD8w$A>Z}AcR(dSOPiGg|e z5mdFl&Ti05wKWi7*lbj!yitk5CT^za=cw9t&%p|&Vd6t zc{3y`3sOqlOcz~hE0Ubu+Xq!6OIS$6neA+zGe&YU(=Lval5tiPKX(wadhSxL~DhZQHnX zx`6SeAW1{XOi58`4MsxS2yqHXB|#?O6RxArtymbHkev4Ay*1ZczeO&`YR{ybTI7Fv zi3lUwE;ylUtR+cO?oH0q)O`9-OGBqr<87!L?m!B%^}UsSs{a6o#)L_GaVZ$bxb8Am zTOeZY0DM4$zbOkr1e6U>dTDNiRmm_@xH8)FQL)9ut|VDf5QVSN^&!RBcMq49U}`*s z*4dIJ=Uz|g*g0vA%q0T0<+OK#n~tR>!l@xy6OnSNdDZ1--Xjs}{Kzi{5|>o1 zuOTYcwOhdWd3B_;Dwc!Pt}V|v=ec|n3COXLiy7>5&qU>kbNtdBJD4t>rAV<(?-6Q+ zMOlNoxh;6)q$OJS<_na*jhIfk;t))<~XrAHmpnd=Lk%uNEazeO}CGgO_2Gi zfNDN2QJAr@Y)FcBy32r}XkHBK_r&*^BZD3r`F_lzz9G(3we{)u*un# z1>xx`YLRDP-BfIBc2o*fkzx;8@$%Yidl;(-ALiVF%qA?)X`cItU4uZI*qdoxy-M;q z`xZ-L2Z8&7!^)b*R29S9+>Y?oZ7TYuN5oe7@HMfHJj%P5#ufZNak8v?q1E;6>A0um z^RG7bwRLBqiq*En$-*|EeHtsLopbX#mNBC6h(R_^zZ=o=6~Pz#oM0mhnZY)+$ajx8 zUxKEF=a$>)-d3V4Hl!x|kKwht*XuZO*Aj$}%ra%RM>ZfI&Yne&j4}&b@5Jpu&n2{y zx7l|_Urp`#gbS?nN(Y^5T?wk4f&Tz--fk5?MHEkkKo&Os@*(ze#f^qG;`Qi?)@ zRtQ&tp@eG%U6(Ss+({84qGZgM6+u=CGf>t+xmuDLyu+tqOLKx@HfXa$w_mo=*xia04L5WO~DiLQkzhEu;;gohwIA)Dt6K zXg=Q<-u02doo^YBafK;g1K%y-b=CC52>4eYc4tb$REmdu6ycItb;Ps zCHWAu4;kO59r=-Qc2M3 zREcE7Cd8Y>XYYY158Xc$8rRfHVwOotl0mRO6%EO+5}oF7Qg`i2N=?r1 zm2=**jcH?^a#8lkT0pgClorTWK~2;AYU*QR5TQ;uq6brZRW?FIv?zs6Adn49W|XOC zVdA9?ZzLLj8A}3;9>J zsH&1aXC?VL3AhY*=Vn)ypSSgF(+_siZFt!Bzz!5A!+wY!LaGd!l4smpk%^B^A}h&5 z(i?5}&{e2uC-R#o=cyEN6qQ~XGo6_JL3s>x1!IUY+Id3DaY*!pkAOdYCPbXla6nkN9#u(d z4V%ruFhjDU$%IzhY`n{gP#u>OtBhFO1z2lVNjHgR6m+e)i&UrOum1poxat5)YrWom zSFq7XPlW&nPGzUVEg1>ehaA|Hq+BJUdx1V@sG>_-7{f|NJ)t5isSYW%C`d)YPjLQP zR1UWmsz_v{n9-S*)jUAo9+Vc+g%v4FZ7OeQx$dD}qJ9KvYPbPsSuZ}adJScVAHlnmeX3Ye8E)3dJ}m)>v>JaOOF*fU`iTZp##rtWyI8x z#4+`|C**dj5e~-2!73oB_FM`|i1Ss&G>L2_TI@76S_DT?W4U{Td+d9YHX+u~|UVTLwDd7*8?jFyU$gruQ5{vErnej=&} zWuL%#6yI(0iOk2yg*7pr&R-Pa1WS&x2=tzcNdzSM=~CIYJ3~5Gopbc#WAUy&-=HZ5#2WHD-CTBjnd{@vc#4{ek*#MMuomi<$^wV6;*oxx2h zK<+>qrAX^~SSg1d#}{kn%C{}9Pt73m2>CczEX<}+B0Fzmq#$iitY2ch&3ZpQ8iaXE z4d~^|D~KFJkD?3te5>Wx(HX~NrNhxkxf=XygFjYZB=tRBw`EmvXy6>9>31!X?)051 zORby!AXQ`&^8&hY=~y;t1X!$;oJY3A51l(?82l9~1Drr4lZCdJj+PN>+osOJY8qt&K z<~X#n6}+W>Dd}9Fg=v$ib`n6BB;*is&9uXdB?S7CpW$7YaXK8ivMUZa7Zih=%|^o} zO5(+vy-!FM3JFNuK&9C1Iw=+&zdJy4&UkF!ZX(6xd_y|>uR?SmqkN5}LsFiC;ELwO zm1cZe-0RDW;Zlx>;vBOX&3L{il0({qkZ#hW{{Zz*qtfCJ+o-QAv5Dfy>d!;1lbs}+ zklc5fT2o-1;G}8!5&|+Y8t%8bWQgDLPnJ zK2uCjLZ+7;ab8kV>LfQIC2Y!1M^Fu}N1wv5G#Q81ceaOJV5|aC;ya``k4On!!h%Tf zpa;=ka1YP?JCZvJZp|dx_xn#;q#-nzjHkCbf~E_EF!Oq(e=!@r9cW+`VRBgL%?IG% z*OZc{Qo{;yB*%F~fD)zO)2Z<5T@*91Vf{`+Es~7~JR@Q7xXDaC4~aCb&8bKP+&ncU zB>JvvryDY{Yh*DB<;aTf8;>I)oM}oDml2dP9J1G_Hl-8lQaS@_+0@N2UmyC$GJDRk z24uK$om#SpkJ@p_PL%C3TWdhEv~7^t{9~u8rm~rG7N|^&U~)V>;f0-#Z3ZS;mlUR% zZ+E4qSNN9=#r_4T6)?X_y){p8+_hmGmo0g|Tg29$JMLUngmNq)+Lp3QkFJ0lCPv*z z8aR`=H>AQO-eyPr#Kg>&GaLF&WyL8RyNfRALyrM;zZUk|;5zsdO{Hb2Rl8cP856|4 z#1UUsGdS|haCWzobZuKiAHgX;1b=()ub=O960VWo9?I8LKaDx)>2TYA@OAR6O(cWN$xF>0-m9dIYb%vq%11pNDRjD# zZeN1#A^jz(vfX^4K_u02=SNi1cB9CLHN|OYL^ZXMJk7lha|~$Ei~E+-CE6(l#ZmI z3fmSZW^wj2s#av>{{V1#a`{$8P_d7FCmO~&rr30nJIhJ+KB7Fj3imKm<44Q(b3Cu~ z1hGY|w5ZLnp57l6lBNFuFXgxDQjh#ZS3*s_PHBX7Pq+96F}SRUxO|zPrc}lN#lTmf zu?TvbZpZoFBKGpD;v~*`Xs4XwhmptEgkgqsuasDfZyBg1j* z<6B{jde){&KE6nB5*1(;2LXs3fHVH{Ob*A(HXCwo80>EZF2oe^8Rk(zN9bH-e>cIpk zX;I|5>@|Y8vDBlMZ7LxyJ@iN+3PO#;WwKAI=Cnf$;uwyF$lpUsL$X3xb){VjZ)kBU9##g{sB8uB?lOSV{-d_0-PpHL>QjB) zd!TrvjR>odB+IOoFqT&9WhK_wjNsgqy3N-elCKur^YAoC4&02l(1)9G=G$q;rm&|M zw2j(GO6~mJLQj<@O^9ju^!-{|W$w~kdDJN#%?nN_IMCWUZBRG2jU*!Gg!VfP!+xAL z+=)^ZCR4>uZBmp|aGiSIt71~r=XTz0ySpKkDFG^TvIe#$_Sf#HPEA9&GLbpy^3>{D zgN}AI>{}0L5aPDn5ASr=nJo))?7I@OGD9dGwYp>-N%butkdG@GmI)1DJeS=nLJO)( zs3~xZXp#6-J`|E0CgNx3#N6H`grRM<-*Qj@ga+NZlsxq|BCMEU1nDe6Q|!FIubv%U zrKsE%| zKpg-Y0am+tmewQjalO%B`^Cj#V!gNJc^qL=Q=`FJSl2>Tp&vU}cUQNT*%EB$$*#O9hZX>ZB}#e~o=@HashY3Yw->8D$|!WQCT`^Lc|(!lX30jLHfD zp3*lJAf(*bodNk)P-!Cs$O-kST8^akr^I};5pq(1+@HhZX~4NLHsvjDBo$o$0P?jb z2?Dch?62DA8jH#~PEI_)Q`p43nSE@9PfWu`Xd{q$YZ# zdQ+&lZs&4I@FJJ5Zp|~JyylDq{kF(2DHou`q zP>_Dwg$y3!2N}VZoBsgtiG;qFh<*mDd+D@e+#9b-?X;}!>vxq@ha&AH4-6f!c5xT@~2KOM5t?H3zv^c-} zF|wsjjJX0^U_>uSapxnrNgI-ef=aFaBV9E!$+11nr@~XXSr!2w%H*5KNc z0J|9eNJLyFy$u83awrLDD0mZ1$fL(U7%jKbrLQu5r z?2vYk8=GlJ(70J_2Evj;5`^j%;q#=%0&+L1Do{#y1hU{yYA zwb^+zTNImH^7|miyBNlf*{-9jiW-EZc-LCg;VteB#aqaN>zkXvV_ZSVKVx~WgSbU+ z?z)eaYLS(R{&~!0=fklRJ9I{0Q?i?A*|M?dLICngQ)JO#s39GXp$N%2kx0o+VF--^ z8heUqg$>0DUW0#)>I)c2OF|fQrgF)a8!`%#g{X_AA!7cmx2a$YewUYVc@mIQ^!?4{ zw*|{bwvUVzBtA@*D2Pk&;s= zU)3;$5VR>^6zovZKmu=9P%P%-zk!GJk3;=SJq4Cii^rC?u-ez^N|v#EDJk3!mFTb( zMs_A*Ox3$B#^S?iw_9#FbJCU+cPSSds2gc|$!=QMWS9-JDl2cgC9RMYo38o+=tx=U zZQ)v>g?P4+mzDHVRJApYY`VBgCB5Z0Rf75wC}08d+ogRTg7GW;O1n9RS@c zJ|@Poun?H}EwJJ}TSd00`HS3Mr~)SBAcZXnb@dIdB&1yK3ht%$iU8^o#2r3>RQDCm+Llzu&8Gak8SJb|?+m9q0grugGEhL(-{iBIzjbvB?0 zh8D;Hd(s;cEaXjFZ~&jgJm>-Jc|ELnkc5Vr47$pceJUYpxztbtSS{pos_yq3aVk4f zpqrDlSQA+aq`S;zp*V)i%Jl@TDFpr!J{~$$y4C4o<~2PZ{l0sh{`TXCj%FSwl<|gA zfa{-*Y!RbxC&ZL~6<5RiZlA+`OJ>ii^_`WLvE>)=a1t-)*1Ut$DDT`>KtlG{AcU-s zu5}C%<_*dIiuAfw<&_!b{{S02g>k0@mRd;NX>I^K09v;X>94b<$IIm0A<3&^Qr?$H zvaL`w4h4FgfsHOu~O^~FGMF1fg+q^D15m9xZ=z1IbH9`hol}uH_ z7{;Nk!^3*3<$c519?wM;*Y2a2Gs^kuak%t@7mq~^KP4vVTZ%VO`vrG;+A7sCcWvPk zU$*W!B0mw!WtSaEZ!I>_*XD+<3He^RJ*HX72S=}@RK6dCv|N^n1IoPKN24Pc{EZpB zN_i_^Msx9070Iy+Yia0f0N3otX!P@Dc`A0<0wLT z0=r?fXtGj3 zzgp+Hsv~{fV=(mj_$;Gaa>i+Sh7+H48=oP=ZsWQFpARaOY2Z`btfop-V8qA7 zjK(zyjggXpbvny-43!gaP#PU8JJ?iOl!J0ycMFkRd~bc9s!@?7g%q?v0@oH7Ca^ad zV&p#HLq)i;8B2tHTaAM5^U*6L{tu6Z0tw=<%3djdEYu*i_S;|5C4INouJ`wKXW}RU zJexSbsE-}4K_o(2*2m&n)On5l9#a&{DRxq0AS^0d8}1TRNCMp}uNjTU{_69r zesP>!2|0JsEeMiuN>gb<8iwN15X-~?`GEjj`PLbprQnHm;1E=GCV&dr$CyEw>5}7)wy&sS0CBfj{389!6Vwya zrBVY|;i(H!+DI|bt2z>&OG{UWUWcGG09B5}N_?2g$DZo8y6ZAjhFn57k=;(>ZjdZR zYg0B&#zt+mVuUP6UP^cvWj()T4)iR1p|a#-@GHIC#hVOVxyZbVEZL?Ex#b-LMD zCvU(S&bN}CSVs01Zz)sRo+ppV$WLiYkhvuwI8=30WjgLr2hu8_l%NVjxm;60ynJ`m zRPvM zQSm-Cp$IvGl(RjJs_lYO1BXFyZ%zxVfXGho2e&#qEhhFK%%XZx1#%&ukNS)0MeLUW zLrji^U(0_xRb$00my)$o&UyX9d#1)C8rQd6T0%s(NB;nXnKtw(Hva%EB!3$A@L*L( z%lCUvBRJABOUNk>EtqIm=ed7UkHY?Szmv`nxV|<3dcX=cG%2l;B zwF$9uTNM0gOziom{-Lc!&y~h93$FarO$8r>8(dLbX03q?;4d4-t&(ikWN+Z8^P)ms<5)_@L;{9p8gapfZxH4S~2Hfs8U5b*Rj^jZ?bD;PV4x+MS z8{?)yTH0zlQv0(KI|jv0GNGvo9TZ6)by^W^VMl3dxk`zy%c&HP* zQ(Dvw@;Nuyi1*Vw^hjl|qmMo!%G+`0kF9Us=hCEYI(XFB3Ql~OGO`b{xoBc5Z=pM* zp-!a%1AgJs={MR(!m?YIwjDvmEz~l(45@J?KDV4@XSSVy*}mHPjmFv^16rYk4aMz6 zb_3H=%#PtHgqs&yOV(0-eO0tvQxGA_acGZ^azKq`M_MGfmwhgF+*Zqx7KAuTTX8_{ z+En7zbv%+SWsq!s6wnCZ7VLa(XC^kK5*DcN6qQ=(>gpTv+thhcZGe%=Wn7hp!9p%P zm9hi#8GhE+F3E6fv3ruB$tS|f8dZQYnQp!Hvg8#% zBPgJRKD*ms&?^2Wm;{*k?L~_rDo*jevcrH}p(Cn*@gRz50$dgyS;_AzQ{pU0i87S) zg4@DXVmz;{?M;Ca>YJI6axU`LJ%`qNcd`i{Df!fZUkftaRwJeZ+mMpr?WHyeBx+C2 zvjNZ7IPqx6Y^fWY^`4*$=}CZ9!@0NnHMJ!THQ8-U>)3=Ujd6 zvg~4Y@^tkx{5M~z>TC?IKR1lV=P^&E{AOZ0B|v#5;Ye7$wDAW+U!LC=#b-z0`&@Td zs%JU==_Dzx6^msn^uIWTf&Tyj73uoTZe!X102@5lLj_a9fVfi4{?3*4$ob5hh~~*c z)I1U`MVSm22VFXf&&UcFSJs#sDQPHD27rqVEkK4*6KP3F^QgYYn72B++KzQEf#G=) zqYm1$O|Z(Pf`2F_R=tPLyq?EdWVD`+9K2Kl@;KDqTgj7(!??VH^AZ7mVAP;EZnYmR z4QH1%a8?beN0U>~_Bf;-9ma6@oH9aS|x?Ol8D-6PV$B?3QGqH~hsC z0ZVEmsX!Y6&DkT{|;XQg+ zGqaOe(A(V{wpM0Y#%ISca}e4w^D*p&1v`6plB8*6{vlCkB&`6BH-UR2hUGFFG8_?9 z*m1OO*>ZrQ;*tUBQfiq86A=5$*ohA~r|g!{@eHN?y;6IGdFkg!Y?Uz}w91ny(&Esq z(Sn~z3sN*wZtcCgX+RN${CjN5kfkbAhmss+lsZ+~B}8_fx<>0Hbq15z5IHU6$X$eF zrLlg)X2hr+Nm{SecvKY#hfr+=#HDI0O^QaO5U(BAzsOX{0 zf(5i15KUEgE5UB@a>~>d3L|Kg(`M>?=<{IQAU2;@UZT3FV{m(w!eC0+)BgZe(?|>Y zg*2oDy1iC_Pk=gCHgCARV3M1ICwqne0H>D2Tb*pAtT|wJB{nt(=TK@U>q*-crreJq z`DqJgI#Qsv6Jev9wA`X08vi7E^3vo0Rj z|Ab5c^;lmXCmtx+v#VTob= z$d{Xz@Rk$$lm=SZdtoPNLW#DdYhhbf%*mkMRx2ZzhQct=-F`4(CPQzit+0z5I0-i= zO=;YkkXW`}WtNtgpF=K{cHfE-y|z*TSE*OqxPmpTsy53H3(0vlHZ=BeMrI}g5Sfx= z$dawCN7xXRgf+AkZUo!yt!mp5HOS!d2{PWzL30T)`D#n9q`H<{eF#8F4z{)Epnf{g z>*Q&a^!)C16I@e~+Wku$(vYc4Eh~3mJAzcOyEv2359JzGO_V=sWE|*a0nvcYIOpY+ zov_?`*SI6p+O_IF+I)(E-ePmoRGd#Ri~4p+2o1A6O@*}jJQVRC<^$9?kF-*5K@60s z*hsE5lZ1@N9Fm_zca`-F0pjFmh0ALAR&3A^Yb!Gz@Ek`x>?n$GsPVk2_cN}iV#wRC z*lQ>B0M8xnGl`Phc|^U%^X-CRJXS*v5zr;gQb9fn`|CSmt+z(B&w72X3kMJGgbaej z9zxi|f2imhgcwNaRd-;@fGLa9jT)| zI_9mm30*0Bw&AhaWc~hMWnE$<)ROL^G)EqD($?g*kToMq{q?3QJGdg*6*Xm1?nk?k zxJD^(pe;Y{No{|oWm>7Qu8L6|39nBFUykVTyPf_{5yG=2$jeQ7boUn~M2Ac7tefsy zx|{z1RdpUqa&ESk_hmW)yWO<4O9R!AJ^n6QtcJK-i*-cqv31 zRz)N&jGYq_>rco94Mb6vmXD>~`gX!?skXgoju3f`&Ob6cPCM8uR{Y%8O z3yJEWoxgDY1L+PMX#dSti_65SJGw+5@`!X;grhksX9ZW!t1~x&czfw=TsxU!}Zi zkOcGPwT|Lg+$+&pLw`=!s@|gN)U_3)kLDY!uQ5&R1P)xZ%(fx4m5A|UHh>E6XExnR zPxw?%;jG{Yw7((drDIdQZ%$JzGTM&2)6psL3Aw#c6A|&>s^uZ#u@T){F@Zv(I7Z~G z56(CEC=w~80V7Po{Yk7ODNV?IweFvgALYkrTFV2(`HFA^7Gc!8kbf10dPJt0(o>2% z5~TxckAkQZC2_bI@lx96xVKc&6jc>Q!6fv*pOK;omP{eo!3jiGcP#-iLQ;`nw-wZ= z3u${)G+0hC3_$LTs@zlQaRn^5>I&MPsUxktYc>R=OmaUh*!YyBHkR(=#9do~Ac5hh zN&xEr0Nd{`Evk0|$QGGlL38+`QoGvLGGl6d3Eq%A39pj(ok+LIRsBz;^&Od9EdKzZ zDf^MbOv`Yt;|NhWmxPx98tt`?mFIfwinooAUp*6}JnDqmOvNQ)!*#*_n)@0r+bH>r zk60o38WIZDo{CkeG8%w7$~FT+d}=&^r-d*wk*$Ee`uNZyP83u+>uWYjuc}9lW09L< zTAee*xCDMliHQ2LFF;MZa!}Y7T5oU&KN|5f_Z~LVJ#2kdeNLnH{{V||{vzM{7|B$h z{7EXYT8Z(!cs-uW$a)y@)~iC?OXzvB+k<;<3n?E1TywFiT9uAt5au#LE!@U%lG^-5 z{41iilWMRhk~Ylv&P-Gk7P!7Kk z9y3nKvDQaPJNoT$VqsQr*RF*Qlgg@ph5sxM&Y?9b{3R9 zc-PLmF|7=4Lwl!&hKHof#>aK0COVS*7M*5GaGhzew_92pJCLtXzNcElGSt%^hdnbM zJd)EbyxDzWMTjqfU_teTD&p7bFIXB3oQ>IRND?E4cc~@h^$wtq%LycrZ#n=X!%K*# z9`5B^M3$RJ)V5Q*>XUCu5vbi_dR$XX1C_T1Y-ZriZ44kMY(W&QhuR1U3Iz%(+O(dw zBpSE^1>6QTZ#e6jr`07um&38aPiPZ;t4Xrl1Hg4PNSCnbtS$wVrBY_hlMX@>G4q>m z*4oNSkJPq-cE^ARt!j+R2Ru7)V8xu75!;H}Mg}();y$5=K`C$QY%W5QcLdellT=k$ z+{4iyeTUeR@>Y`GSp@d}v5*Q#D%R8(D@{j_>l5R$#{c9^GP$iV(Qn3NQ)K<`C#a=w79ZRe&R@Ew4 zK9zh8OGS@i@>j9(8^+~XZ##zF>&MFksgh5qu;@FRP#r97M2#TU9uY0U{ZokY1-*@x zs{q1$+wb(omCx3Q3H2?O7#ZRK|Fx4iP)t)!az)AlX#1|+UwwzYCgk9667Jl^L(!y zd4=QV$coBc3XudXskJ8h?MdiJtg>RQv^J+=^m;P%$Nu0r`)N{SH1DUP97UI)zo|gj z>s-&NQ?|a=^&xZr0J!4jJiz1F^)5oaNS65YAxawf+>z6zUOW|}lx3gTWXhvso90c( z=BB%n$w*x3(r?~<(|*1Hcv`oUhGoe0u-hz>vJtdfQ*M+Dd5JNUuKbq(ON-bA>}&=1 zeSjKuLTtD=+f$|5Oh`&{5&$cd>Pv0NO0~0TKa1gN>8g_(GREX?X6823?9!Z*4;I2( zY6{4R+bKx_0SHkAb_%)DlO0jbnRkhnTylJOONl1zf}oWGPcAR7fNTGg#;V`d+@!!j#{iJOwoGEtR`{{ZPS&_dFn zhEnC81MpvANxzLdP?ch;y55V7fn36;9jQW{Y|meC4T$s~{x zv1*8ck*qffDOxf!kiZsssQps@(V!%BI)hCNdyUNFAim1t<3>RXZAz00KqW0cpf;@w zw}A$&Aw7!$F!Bqq&n5aGmx+_8&*h|n{vqn2*ai!E3onqer=)EFj}50nKI)!8OW+}^BJ(qz zal+ab>2++6S`CU?Ssnv;6>tG0Cmms!aCob#e~{%6@9S?7_#>>H+mw0~oBfo)jeqE| zfN|`6gg+8t+^m@&nRQ=yQiirlhLj1oB{48sQDzhZUz;!&-F{MbrD32qgt&Tyk$MHl zm2xUwZaj&Sl&Q|XOpH;tZ)!T(U2I08f=L8rQ;vxFjTH^1L+NpFoJcIBBv|}?R=C!a zQfM`5W_K#N4x&>nG~?yeB_M(vP}+7Yi zfjtTQA|*wW5!nsB8)Bfy?(A9|QhyL5U3ykIF;?mgopGo!7S zN!RfF51mzVaT;)PP7foDn!HvrQk)Qju4i(RWTZITc`yk}JDpKdTXNo~TpFLkEBAg# z{I(IRd-94$9nE8KxYcsWlJl}2X77cJZw%sis78dBBjb!OX1 z@v!i$Thy-sZ!mX^Wa2L|gMo*0OazrLrpO2$|?m2JFZow?4E+U>9K|U70)Vh_HuLG8K@aD{Fj@_nC~sO z6to?i&=detRc^jrYnLn3)`fHWdR#+_b0ipT*9UcOrAglC@J)g1<|`>ig9&)y4^rbQ zacR1cll+&_LYNvr+=q}@LwzoSQ@d&LKN@HQG)u@L7jQgTQ_KGVQyhh%!F6b>od7+0 z)yNYuISL+2EJ*rh9ZRVCG$|dj)9AnEt!X~J*Xe3$lJ*}*o!GL`+*Qt+q;F z;pBX&=q3bCD$;o1l7KPqu(hEwi|Qd^Y9i|HD5Ta_Y_!c&kSdDaFF(O?QzW**E~Nuu zdCkh&TtXLMd^FajqKcc7#)6lmzluU(!&`|6#5n50nI$`}(O9`28%eBfDVBjOUUw&j zd2i!oyN{5&7m$k-tb_dMH%a@c3_6SMOxG8_ZaJ5lBJXyIWx}KWAHnjXL85*?Bf~sE zjV*ZBR&HX=L9kIB3dO;oh-R~6JwImrY(OY+Iw5?y_w@`d_qy)TtT-lFy zSdOVuTtNi|B}((SNWHYNs!6hocaQK$7!@;;YEduVZ}DI48EI-sSlinu33TjR$X zvpYRYrUd+i{4sM9h*)e)T!U<~WR$BU4)BF7mX3fWCw7&+tf0ypD^6)Eg}3#nb2&Ga zIO-ZqEV7qpS$AUFc`mopZuEnGwT+prQCBsSh?iViAje_3jh3cG+81_J_?$uNm0X)z zqjO0u$XvTEA}b&%*zd<_EMju)UA4CXveTWl5n!##K_>OBY|Ly*C0vss^=QXLZY$H` zb|*wdf*fT9#=_f9g7#jdQ@oj^S5t9HRCb-7`%Xs*kFi39*Z=sA>>Uo$6LfJ%Es3ltx6hT<>^-#ztZhM52iGLhq!$embXhvIzHw&=df_#qC zSXj`ni-yS?ZE;zFF~%7Z`4$zGdXe=hDjxs|{;H~hGn{E3s7Oy?AyAaBs36#?_7_dM z>q&sp8qmqy^J;ZpPT*k)HrlmlhY!I%RDdIMDfD<}8^ms7BcFLO-;M|3iiCh~eusFz zm9P!sI_4!`Pm6igmYzF*3{rqPvbc2ZAI_TbH1k@4Twz-%mqhM0PqCd z(E?#4$r4&}Lk%Dy5rAb3+y$j==&gUmKKdY$v{-JbG2f8)Wuow9scX1GR7UIH;++j4 z!y_{pc!qnh;gItTs5Kr#XY$s70+n?94d^Vd%TxAXvGVpQaEAaY!hxSrvQhd15 zSb5*8e4)eYN*mU}T}Hin(tzZNXb|G1wB)i%aS#w&Eje-viN4Yi{{Rn_XJMnM{{U_L zg8?_(zoTjJ6#Pjaq$$e|>%k(z=lP0nr&{^n1`otD0QH;5oNYT z@9?jQt^WYv`jrh7PdxpGg0xu z*2r_Rs{myw2FOBO{zQTCsbzuOsku1LLi9-QH1ct+A*6%=q6)>-7QYqSQC!yCuLMqC zlQED$EG6e2j@W5$s0M?H7ApL)pjG_3)QEMa$~TS6d@@fC~UuM z3-rB3jZhHOnV*^)kNBCp+Yw=~5p@I9Ytof=G#sJa*-C>E8v%xvx0`VTR>;+Azf-Q1 zz;c1eCb$}Owxb!8n>n=>Yz+;(Z9p1HXEdVddmz%$6{ICd*pN1_qS5DX8USY@scx;u zA1pdzDGVvp5qA{51-!?dNE!M$tM1vB_J_(8k#Vt2i;?!#t%I)0r_=~Sjkb+EYqFndh04p^cA>npDN^T&tj9;z!J3AhakVd10=ANo z@wl!WyPD9agCStB%kCoUO4fwEbOiVi6h^g?pp2GgIko3slOeZ2Oj!=8CwSM=k#lQS zfPD+d^2kk}Vj>X7KL@_Cth)O0V~ErLYc%#VXs&bF8RwB0nEwE3 zCOwjll|H;&jDpN(84?2Aa3me2&2MpB`3tFBMbBj72}o;zm?vBQ(>YDkOS=S}*A~(_XbMfZPH3UMZD_xlFMC0BgLaw^%rWq;*JII`pjgG$hDJ z8O+8FCQN7BOGpI^TWVTLQ>iz$wBeLUv7UK=t>|z#qr35_0e>s>rUQq$8`9WI4|kN< zxIdUZO1=64rG+K~AuX5A#-ZJ61a(t{-{1uaNE7&s7HV5^lN$#vLLDN?LnSFsRPG90 zt@x>`$eYkMf$hYlsiT?5N5v_{mdsYw-gqbrgqvsyI#v8gi4FMH8e1w%Oe{37DAGW7 z7T_fk-IC>((`g-VS4tqYiT600C-k`xR`ar5TZqiXc_hq^+iFq^3 z!#qF^!B250Q#*}`R?tF4bkP}EhO&6$YmTR$l%!&zGVIyP3QKZvQQi$YhE0vs6iSc6 zw7MZ!tMi;nGzkvIWo^ow>ux@|EU1J?U_79OBf{xQfB>^VOuseBb851hmlf8eH5m}% z!g;OIMnUD53(enXK}paXR3eCf^$PD7-BOy~9dVQcwIrWShs^ z6D`@Suy&QHrdCc8;@J_F(GoM({sZt{*qz7;Z+5 zseWr9WLX;a>rCl>m8hn{1TIpV*rv4xgjIsoN9~ zld(lg9)#>8qHFgierQGEgT?le*vxYF5m5>}4VwNgnJNh77aD>BEJDW6Y>TdpSk zRGR>udQ!1f0gUIt+$AYRyLQ0nPlzMLR3guxp3SbpV=IK!Bt&gWE%Qx`SZu z{9Y;tp`ZtBWTXdDl8Fi`UeeC}6o5wEzC<3iYhighkK0z~zr`}L)>-uvP|vi=9kv;icwwPgxgTL@4KR_#sgYgHf# z5XnOdwD|?sRsNzQF07?vz^`3&=|BzLpC~2Isz}RSj?`7YcB#Fjl$4(vU&eq4F*zPJ z-9UF8J;vT(nT(+*zkcGy9vgJ6=w{194a&JbMVR>PL@3Z?O<_&9k|4{H=uN;z)p`(A zEH$ksLO}jXj!?s|H#rlSb^~pUzj5|dK~OeYQa=vuG_G43S7GlEa$7SbrFgk=WVIbH zPH4ztGD9kHTV7E}7YQ8&ZH4M9qW=Ja&T;tsRESMSitaLM5YAzRN_K0~G01GKDpCLe zD+^Yn9Yu9EVAh~#Dfa^*K0Mg7W7w@u{(+NWA-5vMQ^<9u_k(>xY(cCp%_>svW@bG$ zVTl!KT-O%t$o`?Ymva>vrN z-B#03Z9_9;B&Q~0yI?ycF5~K2eU$(bo7%x(*KWAmUWN!NVY)jbEON4`DX?tos zXaZ#~PmvZvrScTWFw$AbVdFSU%3ac0QweWHfC(nmUIfSANr;M>OP4))>@0Viio%>% z(@bk7>%F%RWj?i~medq3bt0~$lkDV>Vzk602{`q~82&TO<~P`VmkVF&WOiBgC@7-W zSB+5wKOvPiXVhdl4sGm&#+VT?83doFVaUxX3kAfZTPRM2#L8=9iK9oHMRm+;6B8%(XB@PMt``#O7|?|jAd{y{R`q5k zCi5k-r$hFfLu32d%|=eAwX;8S`aOooyzA~`46>-GK!Za zLqs~cAU3i<(4FWNHYpV5QKn(I5?x$}+f#)~S3sqm#Y645HIm$75oXGCDM?vDxCkSz zhV`{X%ae>^f|O2D}eq<>y}azWSyz=0D?toKqttt_+G?}d{sG=%%WS2H7wt- zq&7(2pAT9{(z)ztP|k#*$41*NDj{Ry4UMZN1iu}7>GB^@>HM}=qJ_cSEn+@5s;CO( z$ZA5;f-a@qNE(1G()BC`ZlOzUme89i#cHADNDCv2LuG{_DTp!?WPV#rtY2rx`s=9> z8%}{eMPn-V=N(W}kTlwqH=@BKL3&_ifg!hMKic|ekFB&wOCNJy!AgN6%99!+ z`4)2rhRR8e03(qyxJ@H_o|LmCJA%NywAy?;YFNNrR7n!qZE9Zhr_~)czmMTh*lKu; zCw2^|N(xIyVD#K|UHpLZpa{3jpcWyt91NStT5WWZ;Xnz-tU`WGmS|Kv)scK?g4leqo1JPx8*i@|v zEKWP_rz7HQN{h!bDuTqP``=8URMApJj@0S4_2zdyek|^6wLKoEdnOh8UWaOXA?~^N zFBOr8mqRhRMh9Z1GSNFtX1L2`!b6&> zz-y=)-1txj(aRgyTIU$eD6P`_w^3~)z=71OKm}bvBcnJfc;h@OPE#Yym5a=>^NNL! zVQ+=1J7VRqmh1xDAZkr?Oe3Dl_Z5C(MmAFc@s*I=RoJ-8g-dk`a1yJM4~ecT>dny( z*5JbxgK>RBHdxNvh&9=47R7rU1TL)!lf&2{)0d(KpZ0( z9S*ILJ|oguYr3~ej=Y^g#rWqg$ij;! zvya2$7N*M%&T+POI@)%&(umw_=^)=;#+npktvrH+V`Nc^NTkckzsV$eCi4!(!+7fYH-hs+EMN-FK|y?q#GOB)IbFB zi%C}Q{C1mhDnlq*n@U#Sa`(Btl%T3<37;i6t1?Dpp%8#;80!}=w55WDD4-62k2;d|WW-u=*pr+Z+NKsgIPVFmkY#$IoAet6{Nkd00<#{woio#>9BRFyn3KGWW?VXMQS4eYGT&BVZ%a2qUHGHK5T{<}!R~vf3fF zIZTBA0IZDROJ%o3(5nHcP19WVH9*S_N}Q&cgN${-B&`T>v=iJ3*Jx6-HUq+?j3mS1 z=B$3C^C)U7GK&a(&sNoigxNq6f1ApkMA=|txZYM=wnRiY;-64qm)4NfX)ie4wp{#E zT@|V_Cmz5n4I*3OBq@!=LQ#~*y65Ldcoe8O&_9R(ZY@;BI)EImJIuJ$bDWPY=*UVK zd81=svNpN?APBW{WJuPayu4~Bw!_KGCQ3mejw4G{vXN9djh#AU$#f;V6)kP<{2+o!H`hv!BQy=Q4NZL_ zexR^JrSLZ(fo%_!X;CuT#$)oYF#KsV8;tYrHv4#Ry}^G_l9a8K4G6IHR*=~Q&R32q z9z9A7rb6K@vbe}dX(%j#+)z>KLKS@}WTHr_vz4>$w9aQHhSzqB>RV_0DmN9#_bHm< z7KFZ4qlpRiG6p?G_e%h7;yi`|mSr~E9f~~gnr1jTY zx+K88;=PQ+#C3!=+@-r_0$T(;7C}nESB12$h#*;(wh3#SGw6_0WWri^xS|0{hU5M3 z8bAkUxigX*jf}*^45_3cF0$D+bNMbw^3s)<4KO@K$xla-kx$gSG33W?B2AK~RDTb^ zkxd|y-dtP<7Hc((&h3LXG2RzPmn<{{Slm(x8zy!g4m_Axw993(qRZ<~=5Do#Abo^T5`N&e2jZ8*A0+8B3 z2wndG7sBM+IuiE7N z+;+xYnWrw^N=r(|#Ee_UHkG7COr(pY*+dP>Qh~4o#-?=_kUNb}kj7IPjgsOM4KMvu zgr@t>p#+6m$pqEOY_XY`^Kq4nkvYehE*BTuNlKVeR;p}|Bj=@OcO;-!mE|S9F{H{2 z7u!#7y&H3Bd7*0(kZcuUug0L!Y6*wIlTARPy%oy5G5 z6p$2jKW!X2P{hloY|# z{5uydKHFn*AMN;gS+ZSm(H+);P+Bg8x}}k8*(o-)biItCSxfU4AiQ6bhJxG~FU#&U z^FW4+J4o$>l0gU~t#R2Jt$-iX-*vxJN-f-3^r!+{QLq~6YJrHW3y|32kl6*Hcdp}L zi}cW%&;-9mleGa1ul+&%uTpm@UkYdfycP<2pAE)>A9+YUv?;->sJ7#C)Fd04(j-m6 zFOX^@Zm~J6e3n{!a#bn}lsbFF>?#RxCqhN64@z7`C)m08_R$d^tVM6K_jS0>LUX** z#_#ipK?_Mf7p*IyFH+Hg$sjbur%LDNrb}3UPA)4c$KzdE0zwv*T`Ss~9}cyvaD@d` z%Cm5u47UaX*+N=LLY#R|y4(H56LlM1BpX}8xo@j9uE2y$%kdsyA!q$GhUBtsy?xXw z;Uxb6be^Jxpv#|(^DauZr7h@kawwAclR6A0Hg}{p0E*|~HrPNW-D|5IjO|dOYkZ+zZ_DoHbvYflFFbVE7*#pv$E_^LT+>*2aa!oYL8EYdG5svcz08xn@0J#{c zv=G}QlB;}co#<+uk+JiVqD^hsEyb0X*pH%G!b(=pa>_v+FK;>%28U_OWj=!v>v^G6zPj$ctnW{`&NjP~NiV>K2b4)yWv7-cjno+oAS$Z)+?b$Xe8;JSU zNIH_!GdTo9L>S!X7-3}_d2%ugG@v0ZY&6=Kbd(;_fCW1I>5&3cUd&`skU1R8S<*4c zb+()Bttyn;YeDX!$@QC%ZVf0I0_=RxZO|N#DNLj;OOalCq=zv;~*N zI8@Arbx_#Fh;6!%1S#h4lr~BoaR}>c>sGPJEx~jCh2O+(#kKn6XlQx<83ic9^Yj<8IX_e-F9~#93eP&@(@Yx1ledr}gOOV}K6DByaJwp1Aopa=9(xnS8 zkYOOI7=qJIAK15T2&DB3*${nU@)APQQU_eis*51 z+a)fsIK6!mJyr>DohxdxMV*5eEe0$DzC_m2hH&|`D4(l&NLy)3inZ@_fNxgyCN(w4 zan_-;kPTs=!=HqVwB%t;PjEiB8$^Vy1f5C%AQ9tS`70*11>Brkg70l?sV)FFrMoKj z7d<+P!8l`J`Xyu}N=vd9(k4h)lg0iRl%GAdLK{fLVsQ@3RzhQvXQd>w zE#>zCTI{sg6QD`(q%u76#~FFApl|8qLTzoul*q9?@5WDuUX*}{enjWgi4VND9^PCl z-DPh-iB|ad(r8Rl3?(}&xWp%BHb7hY5K>eLN{##tjV>U9>{M)wlr&QvEW~XkY&?Ji zjo4gozw(_&&W<1%hjF;*nCy;QFoZ$b_-&~#gSXy|qOs}3fKK!!PDHpMNc;}y7tI?_hwRtdNsJ{5ICZHIo|ay*|C&Ej+T zA@t)FIrgU&sD#Ll<<;3(`1BrC%iii!v5lv{gMOxGhUunyg@evx`5qS)p2w16Wn-o0 zkb0q7g`r+WBv<8m@Vq%4EPcK_izOA2C`xU6R%0@f2)*q<8PmYtfHwqR@m|ycxw#hy zuR%Zw?pP!NdI0i+7^&@KanZ&(x18gxJ16Po1pQ>!R)VFVTH%(+)irX@^% zgFSfkGY6A8x$z;gO488={kIeaih=1!L{B1wW=MND-X-j0S6)jkvg(HA7QYzNpf>1h zMFlY3PrEu2=d~SCTMPw0wJ&dQpTpY&QW5~a#-htX6=qs$wjs4R6cALTq$kv!-E}?& zv6Abt0|}W^l`H93b#I}dw|ipNM@yS@)}+`Uax|8l0c;Yxk^-&>vGKh_+yr(F3Wy+r zZT+H<38hFyy&8Di#(+Lj_UmXwW(M&%Mnv8}Cb2}rA)Id<{v!pON3 zBadTgVpA?9MG04_K$L)@Reup&l4yux^f9@=r+t(yNjSuUl~{moTm5K z(% z!xi*eYY$g7N==v!9@cyYo?RIedg zSpiXU0}Hr@n*BjC5~Y1Y-EYHr0eg1b4~=u%a?u42B$u6OaD@3O3rm3vM+#9&POH>( z_|iizZaWu|WK{+nIQh4JxRHXBHd-OZacND~o!969Cb}q1wj^a>c)?37W%*Xff;x3__+OiY)HhLnf0We7)Ykbbuwme#KI(uHqNOOdUw zRV2eCj~wL5Qes5L&2&W$KaGF5+d*u);!sEnRlq7B8&eS-Cy(-m0>WdKQ625>r|KEp z9S#%$w{_09z3NyE8UFxr#10~S7b0$u+rLutDsc$fLGABG>m-Ayy&*8q1D>AZX0Z<; zkA^disfkJv+;P|kwyn-En*y8du(fMcDK2bl{m2N&a#_;yz4ugvawdWyE;M+ZryK47 z1D}{QBgAW66of+~`6nr9$Di-Mq$$wDsFQ{&jKYx}OG6F1q}@sZD%SmKZ(yo9cbH0g zOY4y-g~O5QF74bB`WhuYRpdOYgDs_-)d37RLeU;GNY&8dA0QPEE33+}S{6^n#yP^W2YHfSzR*8ES9v>UV8Bls_l5(jnh`;DtQdHZcdP}8h(1hF&D{7J! z!w}$%OUQ=;4pEdS!pkj7Q&U_m1@CpMovI~1HFYE-W@2Q)lDN{_iu6e?IWvv4*2fEr zaV{y?r2a4gD$=#^AbThJY-J@l+r?cJr6}zOTlB7~8IfGFBv(5!6t@hid_t{d)IS+bL_ zff|~C6?vm%X>{BWC;;D#%Y_P1lQkXmp(-DiY+E+;xUT{deCupvv>eRLPt7bhA;e2t zC~cVX8nO}*ebxyUCtkIwBWz+;tcWopeyfr|3GTW#B_JCe$4~-JzbbGN8MTB&X)R^f_pHlz|mew_5z zkR`mR&22Ajc=Sc=RBz#bItEF{#xvc=MpH%^kX&EXTY4c3lC<6CMJFVqF+ZfKprx_zH8MQKi+b9mkl6`l1JNLKN z;E&@-kU`v5LTHX#afeGtC{5H7qJz@@cC6snk_ecApV)?)j)GR}NNv#I+LfT#1$^nG z9FRnoMin#Kl);h61naLF6jZ@zZ7RN+Uj1obL^OA|?bjfQ{@bavB%!D|d95)WT9%Tc zmF&O3s=qY%)#KWa`98zew()9SR=>i$bG*n;hlK!cl$%fn0uPRq0l%nd3HVS3zQ2k4 zXamU1%s5TOdV6Y_9xira5r7KsJsrci2i+GavV1G{qw{kOs}C`ABS_1;8wG@d69MN` zpv+n2UY^0fsX$n2Z9oZOi;@zU8HwGd63dU|nwApM%fE#Wx}|hYjr}yx1zdlPPmvww zu#%MGn{7@y`>~4JMz=z4q}*@nDX=J>K+KfNS|qmXGMiG%&8z?pw;O&2xh=V+O|dg4 zz-K1zJ%!0rk=sn=vaP+8sYh>g+stX1mj~<^o0NJ%T;7Kl}3MxAiejX(FPy^_y zQru|`2HOgGJ=FEM9ZmlLqPC$Aa_Gs#;{zQL*JQ|BQ=AclEGogS-OlxHw^A)}(yqg) zT)Q4H{QPW(P_!vxOC@`O*V0hE0sE^96d>*}I{LfM?^}(R6ybF#=mvm;*WpqGXVAqA zIVCQrx`l0RryT)A0tNg{Xa*LTZLI-a#j+Fw%1eU8-u{9wNp1m76}~LBsS@!nOLJ<^ zaZ<=iR-^u$5L0poRohzHq_FLo{CYbtL^zy#h@RW1l_6hKuIRw0b5)OSCeuK{EV#EyeaYC{R}*vQW{9TA?C^ch37jcxbVghyJCcP_-~ zb9?+NdTb^W3@_2Xq=xZL7nG=O#Yu7GvXp|ANk~cPZ*k>Ch#+%mb*9^8v=`fiuraw- zVg}J7?Tgt72q7%I?70z}S8>M_RF@f7bt@9S-ULVFn}pn{&NmsPzZJEz^9$Rt*GdrRSOnjxCb7r`FPW1lNNee5C8iKuLQ>wn zy~?>ww9r>GG^jV+ipdICdP}J(E-AxwrsSVM@Dz#(vH97}E!Ut%5g&1F?0qL|eU`mM z8;vh=Du7QjpOB?VbqfuyV`ypC5O+8ER{;5H6>pU`0Mk!KVQEf_eX*lS^(#;=Z?BbR zw*cP*n9Z!T-XSbw8L>~-1ckbg08zS#=xtk6&c&gNVq=*PspNUS@}{t<5+JEx>83?u z;Tr--Kw3!(71KgT`KEgu|PO=#Sx{(w%zAU0&YJLyynLj*=hY9 zUF~o+vA>0Dj0;-@$7E$0cOu#PYzzhVvUxW8Cvt*q*8VrHiqy!mVisb4qk!TOo0o!| zfXZ@GeTPW;RKOQTG1pWabxxI)C6?H5o2zF|x9TcvA$MTFjU8LrG7O~# zV>ZFnAy@Si<`e}=8aIu{a=DedrI!ByHNgQf7wB0*uze!^eCoK2J#URdj-0!3-ZAo! z-e(mCJd~+SE^z>;oG79JiZe>D3?6^+HjZY(J=mX}Zp)B^V-&6f_p z3(|E+2r0R48IH~ImgPDhg&Q8^sT1*pp5w0_jyAT&g8u-B8k-~lLLSLvabXc*mY!~M zWaK#+NMyQFvLm|i9Tl{ME6$__vT!JimuL0dvrNB}Xh=-$!PMOcX>D5RZwi|M5`>}0 z`>eK3)t%`=O|Fw-Q*NN>YDP{*{Y~*`Yg--X+x*Q!60omMzcH;+0OAW0QtOSnQzhvV zTy@-vwF#cwNmxJiNPjN5U{GG6%ph!0abrtdFynG4srUu}Vr2uWe&VWANCZyzfhwJCk{B_i@2Q2aI)AXU@}yhciM6BRZV zLCl0_+i0dDR8p5&{%2RHAn9Ro(y8nK2RxUL%PENrNI;Z?Jf~DpN2_q!gVx^)h8v}nThqw_X zPda@KdX9l4>P;XL34KH)AsbQ&^z`_WXaj!R!LXvj5ErT!xLrx{AbAP^$ohpKwi#(k z7gph=)BS>gBymep@)-0g5?|i)M`}pDf`JEJ2-Br)LLTM$$hn&jF)B1>8Oce0D}mgS zTWJbm@_R`MX#=8DeQNA9Rmgdl5;w4hTuL?s0kZ0~w-M%R3lv5^G0P4zk=tcR1tnWU zihBKY($)r~2v>_iz_m#xLQ}N15&~OD=$g<5D0gzu+Fd2JD3qiP5}~d7dD1`<;+2vv zDN*Gq3Jdg*0R)XVkN9h9lVG|mDGt6R$wu|D}8vz6HX{`tY+$L9x zt_*j|ex-Q@hVrmxIHi3oeX9Jyv<<3Pz}HO#_6y}@@F<5WCK$*M$#p2k&W_m*uN!pt z8oGtTm9D;3p^zvs__80A#~H}wF+Z2|%*l1YBAu$aBw0GvRw)54M^scqNWsM~C24*V zi&V8;eSk)R<*XZtQ!Idw!UJTZ~=5qMU;yvxY3!5 z5%823Zp$D%(gN+ctSD=GrDOv)`Fov$fb%WI+J@mFOC81(P^6U&snB)lRmcY;GnjSM zy&o{drMTLeWu=bV97qTxgSOZ7>3X0X2|TW9V@LftxoG;9P?>J2F837Ms#;qH<3gft zJg6b=OfM73GAYVQV~Jy8u-gnZk%!tyF_pDsJcRDO)z$lR+H0j*V3GC2n^kt-VlbPQw|**s<*Nn&m-8(x~k#K=%lLKFCq zkgEgGdDg-zE>#yg&N?%$cNX~Slut3lhf^%MYF-VJeEDpcgIXa#bh zi+Wi}+E$MOEN@y=Oqhh!bwzQ=aVBKbu%Z;ON=prv)Cp2RxYasqTB1V;Fth8KgIrh` z{yeOcFE;{Imjc?95)kdyNzp_k*i{lM9}znsl|^GBsm3&y1GtunLK_HkS5T#pcAeT< zv|9*|%3^WtC8IYZ6_$IAr4m;0eoHPVb3`~()L+BOvav`2eHa9nlBoGPua&lz-f001 zEL+!NMuaFehl1`dlps@((n!XBGK9s}zErx`U{# z>SoI_R5=o$E;|upLX7(?wx-aKfWFWqIk&Fw?;3a5NT#{mMnWEy7D#osTPtC0q}+!Q zxVA_56q{EqjY>I>Qb1SY0dya9ujMk9;9yz)crWwA!@edl@lV!RW0}UQaOg6?5$u38e z6p&U8(t~5Ktri4%)UkstN|QZs;>I9CVYPRrukj@+QP`!gpxe@vNj3-~#D|2HjDwSo z>SQ*<`4u?H4FN^YCLIJ z2JQ0+5L}F|I>?V28W#3ptda`D-Q8MJRINvCR~l6FWr0sc$jM8arbtKX^4FBg!3y07 zxUCeDpNQ6pk(;9*ihy7$N)a(r)KJ?I^eu!CQM*o-(x$={eG^~DJB|9|0}+~*rxT1L zYSr2{TPj)TNC8?@fG;JSTT*1QmQ^Wnhh+iMPjP8CN|K|{5vR_8B%&z|$%?~qRFub# zw^eNxg(w}M9)uC4yy+wXW-A`)X%5ON4JiwsGxDSOA*_I09E%B3nQ$oWSxMZ26g3seYAYt5#+9?HmAT)( z!~4?TC5Ib_a>;=lrVA-J{EMp6a|GD{lhwox4f^%3g!ew4*lhCGW9j{Od*w>4>U7~+ zcN85II;P*-Upji`;>V>34~@sdfHmK(k6Hl1v7iqSKU9j~eJnI$hrvb5ms&!FibA^B z{44feN9Rz2D7hDu<7+t*#JpT|q8s`pEZArgpF4Tekc2&EW;+`99+a66NsBG@O5_ky zRJYzEtMaYsAQCJ(cvV)x2sOdUVdb^1le0up>hqh)8R+~WowvTA&;l15c7tJSSRV=i#oHu@ zR#F0eBzO-YKp0ZgMy?U*+M5epcni=3=Nv!$avPF+Zo+A4GFnh71qlao2m~7+F#D@VKm41I|rp30sF6wRcnghzC-8M(0%$HK_tVMCV;*I#Z289E?Joc&HNb9)3ew z&<~o)ipCj?4w*ZS7n9ej?EhsjJ82WpL$N6eHt5K)?RkcZB z{7yy66CvkLQdD_TV~C3lCA0*vl$%&>u=&=B5=c!?Ae!7Pe5{kMA`t@?+t0F;rA@WC z60xZyA3bP*1+y?S5>p~;iD61%EVnTVmYdk5sURlW0psOZ*%|_k;vQw?ml%%fiUQbU z>XHCPhf`1kgg=iC7Sn->rX49UN+c=mk6hlxAOa7SG%{`!?3)Fi)-xW&xLZu8+-XV= zf`SNAFJsrJt?JC%48FUS$qnC-N5kXiFLEWui|T+CoE>j^5<9=^Zt>Jt{0ZqOX%5k-Zixj>~LBZPE0q?kBk3W5#eK46AsM2n7rmRm}L_(QQ){{X0RLyMIel0}?e)hSJr z;5y&Nxto(nAQAa%O2)cx+Z%u1dOomM}m76j`oyh$ZnMg`jhC;hb zWiDAM2}lE}y-*MFSjjUZuw^O8aNSpJY&xI}U<%t)s0Q}@J|1;zQb*G9e0DOH9OVL3 zlG;&@n97xFDX^lKZEbFw8qq+8Q|9qFDS2@*MaS8?L{(fhDM?yfE}hpmBI5NINN5Vm zWgeOX80gO;6GWyPC_>iJCu9|9Q%Nj;KsS%bYEz>KqvdWql5#%~X-A7a?Bvry_nv}P? zNL*0@GZ0e^myla&(4eI$vMz;abR?AuAZIVpVWdv84!1 z>Fx})oFcJpL=stGEyiN*0oK%q5O04Dx30WKR%MBp&qD666B%n!RM!+$5NP8jL(lwhAX^dCA6Ym9{LE z1vm$E5_AOLa1{8UZbulmjwHQ{#3k98`EE4*@PHuI0PRUT6rDGE$BoJm5OVFU9}eD%}{ zh%AV0sm>~EF&R@*AAjhv%Lyg5A4p|j4uM?_96)n37y4xR%5n%qrkUE~h#-Kq4Xz-0 z6dh`9QJ`NasA^K#esGg39FSI$Jv;X9LjD)&S&ji_vryYp4n~P|mHu>P`iW0dbFV`| zB+OjnibVKvv5rgqL10HnP1KFX=W4tMl~qwP6sYDKd5Jkx2-_NMrm^EyEuwWM-!7F> z(MU%v$r6Y;AY-YdWZzF=C{XRG3D5+jTW;_OKN`y=nMr`Lmx!4lEej}ZebSUVFJh7S z0r0F)+hn{c5#l=$=x#Rh9*VU`kcAYy%%+vOI*V;OSRWeCE;{6|8!ZiS-OIeS-MF4DGBdq{ z7@UMZrIO2tTe$^tuze_E3Qh>jyXQ?;V zfCtpDl-lI!{AdFybl3xJw&`tX0|jA8HXdo#fHf|r!s#Z!3wh84-y1`2Wf*kG>^9O= z=H-!ZNV&N3tEvF%WTqWMD~}e;P5LK}a19GIGf~}_J z-#-e80lcDzq)BxHu*>Qz0mG^jZ4>kHqyq&9UF{(cCwRYQHYa*d^K`8MbsHYbh>*49 zlFMlzC@)1VWZP;*2?0LNF`(m2jMHtXp!eFj9*_-^55~1ZVeTuBpskg?m5Ab;j-c^< zOA2kIq}Z=Z0&7*V0c^Z(GB!DJdt7t%DJAI`_d9Q?^fZ8kf=}T$CiDSb=ku+Xl=OTy zJ@CO(5<_gQExHnog=8q-uC;}kpcJPwQq!@VG*M)iqe$40J3!o_B%M>IQ&5zEyH4^4 z5*&=qJ(zPxZZ_1RL7)LSdMndT`|E=%3XVz#8DB1fau+DHdYFK-I48p&gfqHL5-f8wU}AAo&Pi!XauFRH5SEg)U1(71RGn)kFc>tnrK1`& zcA9a((*^ei`>2~0dMM*jdSdD8<#ak(t_-c0C@MU5~=dPg)HYvMJ*Oh31ITH(=~Ihs z#Mw*yRvLhOL9DH@S_1+Kn^L~FD%3SH+EUwYE4Zfu(iOQX_zIa2(KGN2kPy@PWGNvE zD;l&BaC9C7>qg*BvgTRzwum_N!ze0JRPuvKER|g%{{U?eO^2yr)OQ`q<{60F+Z8G} z1xg9kHU#K(t4xrI+}hUC-KKGDner8ur0MQ z_Z@!~K61zkijs#4R+VT;xw)+>jO3A%ipxrHNmM8dNs?6(P6rynQEd#oTU&rz#3&op zG&II8ap?~uxRw_pG>bDG@-C#P0)jpkDeESYjFkO*a=d>uu7CXL8g!krX)tzgE8eQ=_qYX zbxOLVsCe|Ts(=gee4;WQQX#=ZuOT6@q7QFrH~Z^)I5V+jGnC{r;e-hO|#YR)tB-F`Hs!i`f=fnF;kF$aW=1wvesqQMf57UY4#~qgw1xD+t`A zq>?uf72tL2T*DPOBSe*69!(X0pyhR!$rQr|a58cGlBE={EjUfu_hROsO)X*sPe0l{TaQ01_@J5ib@00Mma&{WIz2Lu(uLFFNLhOL2FM zqQ8nsNuUULMfRdNhz0MbfZLm&+*IHCqDuWfCABN=r65Z~!6zKkISyE+nob?1yV_FI z-CU2tQ@6k^CiO6j7|P}N+$tbO#Yt2IK}(8pr<2@Uf#bQNPf@U)DqDeoIZUorL{cAZ zZOZPMb6!fW6s4r@zmKd^Za@xsDU|$AQk+!HBq-dSgz3=#04S(vBqC2AX_%5+Wv=6} zRz#ReHYzFbNz(hlxS=T!bB%*7hT(*S#$`zgQpzl#-r!NR{{VRhLt51kNoE~|0IbT8 zsS;Z~#$=sB9be#39!86}DKe+zc?dFtF_PKul?e|mC-Tdn*-1C)uDVwyO$$gIfWrQ* zml9R630li%Tar3yQh=O+gK|=0HjN%ql(c}YqfvVrZAdK%hOzm~3-NMr9$Qai)QOna z(0xJ1)w}KZis#RYxhU$*v0c*2$E4oW`;`;i&Ne6Q5i|JUmUH-?ibIzF05t=}3+fGi zXY4u;t&#mVKGUbzS?jLlk`j^OTrGVLg(ueeT9C{Xrq;05fINkm+9zcYsIgd?4`5-8 zdmoqGT7gpiO90#t8vT+{`PdVa;!dh_rZi>Yl3YoM%%ua|1F0*}TjNB8gX1ZcZ}ml} zgvOWyc?$%DStKWGL#3=dDK;>P-0CFbnu8+iG215}HIuZ9^hWNwQ{|w+KdF+~Q<^&B zQg)T6c_ipbx#~RYCc+sWry6bKCA1eDC`eFVq_}^&2A1-qSsy8CPpRMY_Z`T!wE0p3 zG>d>#PP+B*pbbGsP)&zJ@$nSE`r!WnH2{2d_}KKI3C=$;P~LgeA)*$7+s(SzSSeBH zFVm&#O1%Iqk(zlerKDk?t)(a_ayBR*!?wd=`)OPT!b8rX20)C_Rg#p1ENn`38u(o6 zPyz)04){VySWr?BrQJm6pN;9j3#FEwx{IzeAfHeSl#o2GbroPPjC@75g=~`ORg)MY z7T%+Ko2#X%pb2qUtO4=`4f(GW+w$E7|MjS(1$G1k)}E=hA732l`*=|%0gaOgz< z3FaV0LkgUU5d-Wv;}7FdUQ*mGtT){yUYlE8E1t;E8FiT3)YF+JE)n1FhSso1R*ef0 z{An$KQK#4ewVBIGr>|yaJ1nKNw%Slpxx15cbkdnNBt)1_HP|v{Ei4VZefJ)?X*+C6 z!0D}Oi4-qKD``<-2OnuF`l7AN5?ugpR=z^yRe_@nN_n!O2*-f8lH-yT-q00(ojP>2 zMWney*PzQ11bGq>3Rd6BQ|bX7vc9I*>wPOYVI*?#&N%sR85vnu2vQymG_`@Wl2$Yt z4>}+Qaxpm+exB3QAvdnrPZc02?$*n(Bp;n2jNHaJ+E3KWLvfQOOuU3#sU)Zp<&KsI zS^!WnfNjYiQz7SEN>He>5&{z80YO1x`+bYpOB`Q z$BZKv*t|DnBV)lyKuJ?>Bq=1?{v%UN0%qJt)U6G2g(!qFrb?2al2D~>X-fY90Y7yN z2;GjV6f_Libut`^g~mZqS`u7XZo|MN-2AI60TkXABfHR+R`PUiJhw?hZRl=Plc?#X zND~ob$7yA>Ev6KtpQvq=g@pm2x${-(kP@LSxWmmnRU#XyQs*{Rb+vE`LOvRFpqmfc z#bK1|e^yM4n!u47W2&+chMY-DYHy~gG}h#V3}!aCrACCqZoH<|kjJShLuHf|qTs5= z>ISu_NaY-&HbyJ3mZn5JyNQUxmA&~`_QM^uIGwi8?YXThxsX=b&*qldg8o6=v#qW- z63sM(!)5jnv1;z=*J^e1s%0U^(dDu6auXI&gKHY65jPI|;HpEYQdHxNxPA(_0;a_v z2P-NJ6}bz%C*vZ3>~{C5)wHBLdmw9JW!#F!#UMu~K0~RBmLFJ_!)2BqLPJRnl@uN0 zs;m{IW?2}VTqHIfnI*|DAngfs*&#_zfkViR0iXmB`%>LzJ~|TnQUhT47F|dsTThMc zdH_xM&N{Tnoh${o6}U33ou#Dhv#A|^%A_F_t)w_vjMsf_s0JM$<)~+4dR?SQhRc3VhENlmN(>*HEfh91Xpwpl~69PhT4iLpD0Nrs z3({OHp)sbYkP=%bcvsCfwR7Z5(yZsHBV@U0NC6?$7SrMreJhp z>&LyLk{28jjkoezcHhSJa5*GgnDhqJW2#01da+1hj1fRu9&%akG_+e$VYxqT5K0+F zhc7!KBHL;rlF>^tv5EY)+KU|iQ;YKnRnC-~fsoUA#0+FaN8*hpMq+M3QYSK`1u)nN zQe0?X!A8Uyo3-dU{&Ips{I9z{mFFV_zA0&$@v7 z4{LT+=~6-XQW+eyuO%}iRNKE^vfOrKwob$r?Pc3egF`?BY-3qz))hHyDN)e1w;C;r zg?9;CO18JQv_PK0R48kiA*@tbX-d|f^X|#f)v}|xhXDTo3WbeQsh+3Pdyzt9Wn~zv zlOQEgm!L|KqS7tkp{-MC46gGoy_R(@uzOMdrAUjsTFrxCg%jbXm5rQ@0(m$Vn6dRy zz)}KtBP*Pq_#)3rxex!=|7+ZB`^p>aNGgXZ{1oP&?b5+TY!E;J3+!V j=Dn`9`qy-_KC>2enMw(Jr^e#B_t@0fIsPluickO9Ld&~> diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/animation.js b/Andrey_portfolio-master/Andrey_portfolio-master/src/js/animation.js deleted file mode 100644 index 928920a..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/animation.js +++ /dev/null @@ -1,85 +0,0 @@ -$('section h1').addClass('animated').data('animation', 'fadeInUp'); - -// $(window).scroll(() => { -// $('.animated').not('.middle').each(function () { -// if ($(document).scrollTop() + $(window).height() > $(this).offset().top && $(document).scrollTop() - $(this).offset().top < $(this).height()) { -// $(this).css({ -// 'opacity': 1 -// }).removeClass('fadeOutDown').addClass($(this).data('animation')); -// } else { -// $(this).css({ -// 'opacity': 0 -// }).removeClass($(this).data('animation')); -// } -// }) -// }) - - -var scrollPos = 0; - -// Применяем анимацию только на устройствах с экраном больше 992px -if (window.matchMedia('(min-width: 992px)').matches) { - - //Прослушка скролла - $(window).scroll(function () { - var st = $(this).scrollTop(); - if (st > scrollPos) { - // console.log('Down'); - - $('.animated').not('.middle').each(function () { - if ($(document).scrollTop() + $(window).height() > $(this).offset().top && $(document).scrollTop() - $(this).offset().top < $(this).height()) { - $(this).css({ - 'opacity': 1 - }).removeClass('fadeOutDown').addClass($(this).data('animation')); - } - /* else { - $(this).css({ - 'opacity': 0 - }).removeClass($(this).data('animation')); - } */ - }) - - } else { - $('.animated').not('.middle').each(function () { - if ($(this).hasClass($(this).data('animation')) && $(document).scrollTop() + $(window).height() < $(this).offset().top + 200) { - // console.log($(this)); - $(this).removeClass($(this).data('animation')).addClass('fadeOutDown'); - } - - }) - - // console.log('Up'); - - } - scrollPos = st; - - - - }); -} - - -$('.navbar-toggler').click(() => { - $('.navbar-nav .nav-item').each(function () { - $(this).addClass('fadeInUp'); - }) -}); - -// при клике добавляем всем вышестоящим значения сласса animated видимость -$('.navbar-nav .nav-item a').click(function () { - let animate = $($(this).attr('href')).find('.animated'); - - $('.animated').each(function(){ - if($('.animated').index($(this)) < $('.animated').index(animate.last())){ - $(this).removeClass('fadeOutDown').addClass($(this).data('animation')); - - // console.log($(this), $('.animated').index($(this)), `animate.last.index ${$('.animated').index(animate.last())}`) - } - - }); - animate.last().each(function(){ - // console.log($(this), $(this).data('animation'), $(this).attr('class'), $('.animated').index($(this))); - }); - -}); -// console.log($('.animated')); diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/contacts.js b/Andrey_portfolio-master/Andrey_portfolio-master/src/js/contacts.js deleted file mode 100644 index 35f054c..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/contacts.js +++ /dev/null @@ -1,39 +0,0 @@ -import 'jquery'; - -let hrefs = $('.item').has('.fa-html5, .fa-vk'); -let vkFooter = $('.fa-vk'); - - -hrefs.css({ - 'cursor': 'pointer' -}); -hrefs.mouseover(function (event) { - $(this).css({ - 'textDecoration': 'underline' - }); - $(this).find('i').css({ - 'textShadow': '0 0 3px black' - }); -}) -hrefs.mouseout(function (event) { - $(this).css({ - 'textDecoration': 'none' - }); - $(this).find('i').css({ - 'textShadow': 'none' - }); -}); - - -hrefs.has('.fa-html5').click(() => { - location.assign('http://andrey_programmer.ru'); -}); - -hrefs.has('.fa-vk').click(() => { - window.open('https://vk.com/l0vec_snov', '_blank') -}); - -vkFooter.click(() => { - window.open('https://vk.com/l0vec_snov', '_blank') -}); - diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/index.js b/Andrey_portfolio-master/Andrey_portfolio-master/src/js/index.js deleted file mode 100644 index 831ddd1..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import './main_display'; -import './nav-menu'; -import '../image/andrey_programmer.ru.jpg'; -import '../image/favicon.ico'; -import '../image/logo.png'; -import '../image/my_photo.jpg'; - -import './portfolio'; -import './contacts'; -import '../css/animate.css'; -import '../css/style.css'; -import '../less/style.less'; -import '../less/animate.less'; -import './animation'; -import '../css/media.css'; -import './media'; - diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/main_display.js b/Andrey_portfolio-master/Andrey_portfolio-master/src/js/main_display.js deleted file mode 100644 index eccaf6b..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/main_display.js +++ /dev/null @@ -1,12 +0,0 @@ -// import * as $ from 'jquery'; - -import image from '../image/main_picture.jpg'; - -import './parallax.min'; - - -$('.parallax-window').parallax({imageSrc: image}); - - - - diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/media.js b/Andrey_portfolio-master/Andrey_portfolio-master/src/js/media.js deleted file mode 100644 index 286ef11..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/media.js +++ /dev/null @@ -1,18 +0,0 @@ -import 'jquery'; - - -if ($(window).width() < 768 ){ - $('.education h2:first').css({'marginBottom' : '39px'}).after($('
    ')); -// console.log( $('.education h2:first')); -} - -if($(window).width() < 680) { - $('.logo-line img').css({'height': '4rem', 'transform' : 'translateX(-174px)'}).after($('
    ')); - $('.logo-line').css('transform', 'translateX(0)'); -} - -if($(window).width() < 640) { - $('header p.web_html:contains("Web-разработчик /")').after($('
    ')); - console.log( $('header p.web_html:contains("Web-разработчик /")')); - -} \ No newline at end of file diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/nav-menu.js b/Andrey_portfolio-master/Andrey_portfolio-master/src/js/nav-menu.js deleted file mode 100644 index 96ca450..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/nav-menu.js +++ /dev/null @@ -1,20 +0,0 @@ - - -var i = 1; - - -$('button.navbar-toggler').click(function(event) { - $('.nav-menu').toggleClass('show'); - $('.navbar-toggler').find('.line-first, .line-second, .line-third').toggleClass('x'); - $('.navbar-collapse').toggleClass('show'); -}); - - -$('button.navbar-toggler').dblclick(function (event) { - event.preventDefault(); - event.stopPropagation(); -}) - -$('.nav-menu li').click(() => { - $('.navbar-toggler').click(); -}) \ No newline at end of file diff --git a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/parallax.min.js b/Andrey_portfolio-master/Andrey_portfolio-master/src/js/parallax.min.js deleted file mode 100644 index 8d85c99..0000000 --- a/Andrey_portfolio-master/Andrey_portfolio-master/src/js/parallax.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * parallax.js v1.5.0 (http://pixelcog.github.io/parallax.js/) - * @copyright 2016 PixelCog, Inc. - * @license MIT (https://github.com/pixelcog/parallax.js/blob/master/LICENSE) - */ -!function(t,i,e,s){function o(i,e){var h=this;"object"==typeof e&&(delete e.refresh,delete e.render,t.extend(this,e)),this.$element=t(i),!this.imageSrc&&this.$element.is("img")&&(this.imageSrc=this.$element.attr("src"));var r=(this.position+"").toLowerCase().match(/\S+/g)||[];if(r.length<1&&r.push("center"),1==r.length&&r.push(r[0]),"top"!=r[0]&&"bottom"!=r[0]&&"left"!=r[1]&&"right"!=r[1]||(r=[r[1],r[0]]),this.positionX!==s&&(r[0]=this.positionX.toLowerCase()),this.positionY!==s&&(r[1]=this.positionY.toLowerCase()),h.positionX=r[0],h.positionY=r[1],"left"!=this.positionX&&"right"!=this.positionX&&(isNaN(parseInt(this.positionX))?this.positionX="center":this.positionX=parseInt(this.positionX)),"top"!=this.positionY&&"bottom"!=this.positionY&&(isNaN(parseInt(this.positionY))?this.positionY="center":this.positionY=parseInt(this.positionY)),this.position=this.positionX+(isNaN(this.positionX)?"":"px")+" "+this.positionY+(isNaN(this.positionY)?"":"px"),navigator.userAgent.match(/(iPod|iPhone|iPad)/))return this.imageSrc&&this.iosFix&&!this.$element.is("img")&&this.$element.css({backgroundImage:"url("+this.imageSrc+")",backgroundSize:"cover",backgroundPosition:this.position}),this;if(navigator.userAgent.match(/(Android)/))return this.imageSrc&&this.androidFix&&!this.$element.is("img")&&this.$element.css({backgroundImage:"url("+this.imageSrc+")",backgroundSize:"cover",backgroundPosition:this.position}),this;this.$mirror=t("