global.js.map 210 KB

1
  1. {"version":3,"sources":["webpack:///js/global.js","webpack:///webpack/bootstrap a54dd0dff680e2ad31af","webpack:///./mobile/src/router/global.js","webpack:///./mobile/src/js/flexible.js","webpack:///./mobile/src/js/zepto.js","webpack:///./~/css-loader/lib/css-base.js","webpack:///./~/style-loader/addStyles.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","parentJsonpFunction","window","chunkIds","moreModules","executeModules","chunkId","result","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","s","4","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","undefined","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","createElement","type","charset","async","nc","setAttribute","src","p","setTimeout","appendChild","m","c","value","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error","a","b","styleSheet","disabled","cssText","innerHTML","innerText","f","getBoundingClientRect","width","style","fontSize","k","rem","documentElement","g","querySelector","h","j","flexible","warn","getAttribute","match","parseFloat","parseInt","toFixed","navigator","appVersion","q","devicePixelRatio","firstElementChild","r","write","addEventListener","persisted","readyState","body","dpr","refreshRem","rem2px","this","px2rem","lib","_typeof","Symbol","iterator","obj","constructor","Zepto","String","class2type","toString","isFunction","isWindow","isDocument","nodeType","DOCUMENT_NODE","isObject","isPlainObject","getPrototypeOf","likeArray","$","compact","array","filter","item","flatten","fn","concat","apply","dasherize","str","replace","toLowerCase","classRE","classCache","RegExp","maybeAddPx","cssNumber","defaultDisplay","nodeName","element","display","elementDisplay","getComputedStyle","getPropertyValue","parentNode","removeChild","children","slice","map","childNodes","node","Z","dom","selector","len","extend","target","source","deep","key","isArray","filtered","nodes","funcArg","context","arg","idx","payload","removeAttribute","className","klass","svg","baseVal","deserializeValue","test","parseJSON","traverseNode","fun","classList","camelize","uniq","emptyArray","column-count","columns","font-weight","line-height","opacity","z-index","zoom","fragmentRE","singleTagRE","tagExpanderRE","rootNodeRE","capitalRE","methodAttributes","adjacencyOperators","table","tableRow","containers","tr","tbody","thead","tfoot","td","th","*","readyRE","simpleSelectorRE","zepto","tempParent","propMap","tabindex","readonly","for","class","maxlength","cellspacing","cellpadding","rowspan","colspan","usemap","frameborder","contenteditable","Array","matches","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","parent","temp","qsa","indexOf","chr","toUpperCase","fragment","html","properties","container","$1","each","attr","isZ","init","trim","find","ready","args","arguments","forEach","found","maybeID","maybeClass","nameOnly","isSimple","getElementById","getElementsByClassName","querySelectorAll","contains","isEmptyObject","isNumeric","val","num","Number","isNaN","isFinite","inArray","elem","camelCase","uuid","support","expr","noop","elements","callback","values","grep","JSON","parse","split","reduce","sort","splice","toArray","el","size","remove","every","not","add","is","excludes","has","eq","first","last","$this","some","closest","collection","_","parents","ancestors","pluck","contents","contentDocument","siblings","child","empty","show","replaceWith","newContent","before","wrap","structure","func","clone","index","wrapAll","cloneNode","append","wrapInner","self","unwrap","hide","css","toggle","setting","prev","next","originHtml","text","newText","textContent","join","removeAttr","attribute","prop","removeProp","data","attrName","multiple","selected","offset","coordinates","coords","parentOffset","offsetParent","props","top","left","pageXOffset","pageYOffset","Math","round","height","computedStyle","removeProperty","hasClass","addClass","cls","removeClass","toggleClass","when","scrollTop","hasScrollTop","scrollTo","scrollX","scrollLeft","hasScrollLeft","scrollY","position","detach","dimension","dimensionProperty","operator","operatorIndex","inside","argType","arr","copyByClone","nextSibling","firstChild","parentInDocument","insertBefore","ownerDocument","defaultView","zid","_zid","findHandlers","event","ns","matcher","matcherFor","handlers","handler","sel","parts","eventCapture","captureSetting","del","focusinSupported","focus","realEvent","hover","events","delegator","capture","id","set","related","relatedTarget","proxy","compatible","isImmediatePropagationStopped","_args","preventDefault","stopPropagation","removeEventListener","isDefaultPrevented","eventMethods","predicate","sourceMethod","returnTrue","returnFalse","timeStamp","Date","now","defaultPrevented","returnValue","getPreventDefault","createProxy","originalEvent","ignoreProperties","isString","specialEvents","blur","mouseenter","mouseleave","click","mousedown","mouseup","mousemove","proxyFn","unshift","TypeError","bind","on","unbind","off","one","stopImmediatePropagation","delegate","undelegate","live","die","autoRemove","evt","currentTarget","liveFired","trigger","Event","dispatchEvent","triggerHandler","createEvent","bubbles","initEvent","triggerAndReturn","eventName","triggerGlobal","settings","global","ajaxStart","active","ajaxStop","ajaxBeforeSend","xhr","beforeSend","ajaxSuccess","deferred","success","resolveWith","ajaxComplete","ajaxError","rejectWith","status","complete","ajaxDataFilter","dataFilter","mimeToDataType","mime","htmlType","jsonType","scriptTypeRE","xmlTypeRE","appendQuery","url","query","serializeData","options","processData","param","traditional","dataType","parseArguments","serialize","params","scope","hash","jsonpID","rscript","blankRE","originAnchor","href","location","ajaxJSONP","ajax","responseData","abortTimeout","_callbackName","jsonpCallback","callbackName","originalCallback","abort","errorType","ajaxSettings","XMLHttpRequest","accepts","json","xml","crossDomain","cache","urlAnchor","hashIndex","Deferred","protocol","host","hasPlaceholder","jsonp","headers","setHeader","nativeSetHeader","setRequestHeader","mimeType","overrideMimeType","contentType","onreadystatechange","getResponseHeader","responseType","response","responseText","eval","responseXML","statusText","open","username","password","xhrFields","send","post","getJSON","load","escape","encodeURIComponent","serializeArray","field","checked","elm","submit","nativeGetComputedStyle","pseudoElement","list","mediaQuery","alreadyImportedModules","addStylesToDom","styles","domStyle","stylesInDom","refs","addStyle","listToStyles","newStyles","media","sourceMap","part","insertStyleElement","styleElement","getHeadElement","lastStyleElementInsertedAtTop","styleElementsInsertedAtTop","insertAt","removeStyleElement","createStyleElement","createLinkElement","linkElement","rel","update","singleton","styleIndex","singletonCounter","singletonElement","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","Blob","btoa","updateLink","applyToTag","newObj","replaceText","cssNode","createTextNode","unescape","stringify","blob","oldSrc","memoize","memo","isOldIE","userAgent","DEBUG","newList","mayRemove","textStore","replacement","Boolean"],"mappings":"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","file":"js/global.js?v=a54dd0df","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/ \t\tif(executeModules) {\n/******/ \t\t\tfor(i=0; i < executeModules.length; i++) {\n/******/ \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\treturn result;\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t4: 0\n/******/ \t};\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};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\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/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tvar installedChunkData = installedChunks[chunkId];\n/******/ \t\tif(installedChunkData === 0) {\n/******/ \t\t\treturn new Promise(function(resolve) { resolve(); });\n/******/ \t\t}\n/******/\n/******/ \t\t// a Promise means \"currently loading\".\n/******/ \t\tif(installedChunkData) {\n/******/ \t\t\treturn installedChunkData[2];\n/******/ \t\t}\n/******/\n/******/ \t\t// setup Promise in chunk cache\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\tinstalledChunkData[2] = promise;\n/******/\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = 'text/javascript';\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tif (__webpack_require__.nc) {\n/******/ \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n/******/ \t\t}\n/******/ \t\tscript.src = __webpack_require__.p + \"js/\" + chunkId + \".js?v=\" + \"a54dd0df\" + \"\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) {\n/******/ \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\treturn promise;\n/******/ \t};\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// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\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// 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// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 14);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(8);\n\n__webpack_require__(5);\n\n__webpack_require__(6);\n\n/***/ }),\n/* 1 */,\n/* 2 */,\n/* 3 */,\n/* 4 */,\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n!function () {\n var a = \"@charset \\\"utf-8\\\";html{overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}html *{outline:0;-webkit-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}html,body{font-family:sans-serif}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{margin:0;padding:0}input,select,textarea{font-size:100%}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}abbr,acronym{border:0;font-variant:normal}del{text-decoration:line-through}address,caption,cite,code,dfn,th,var{font-style:normal;font-weight:500}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:500}q:before,q:after{content:''}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}ins,a{text-decoration:none}\",\n b = document.createElement(\"style\");if (document.getElementsByTagName(\"head\")[0].appendChild(b), b.styleSheet) b.styleSheet.disabled || (b.styleSheet.cssText = a);else try {\n b.innerHTML = a;\n } catch (c) {\n b.innerText = a;\n }\n}();!function (a, b) {\n function c() {\n var b = f.getBoundingClientRect().width;b / i > 540 && (b = 540 * i);var c = b / 10;f.style.fontSize = c + \"px\", k.rem = a.rem = c;\n }var d,\n e = a.document,\n f = e.documentElement,\n g = e.querySelector('meta[name=\"viewport\"]'),\n h = e.querySelector('meta[name=\"flexible\"]'),\n i = 0,\n j = 0,\n k = b.flexible || (b.flexible = {});if (g) {\n console.warn(\"将根据已有的meta标签来设置缩放比例\");var l = g.getAttribute(\"content\").match(/initial\\-scale=([\\d\\.]+)/);l && (j = parseFloat(l[1]), i = parseInt(1 / j));\n } else if (h) {\n var m = h.getAttribute(\"content\");if (m) {\n var n = m.match(/initial\\-dpr=([\\d\\.]+)/),\n o = m.match(/maximum\\-dpr=([\\d\\.]+)/);n && (i = parseFloat(n[1]), j = parseFloat((1 / i).toFixed(2))), o && (i = parseFloat(o[1]), j = parseFloat((1 / i).toFixed(2)));\n }\n }if (!i && !j) {\n var p = (a.navigator.appVersion.match(/android/gi), a.navigator.appVersion.match(/iphone/gi)),\n q = a.devicePixelRatio;i = p ? q >= 3 && (!i || i >= 3) ? 3 : q >= 2 && (!i || i >= 2) ? 2 : 1 : 1, j = 1 / i;\n }if (f.setAttribute(\"data-dpr\", i), !g) if (g = e.createElement(\"meta\"), g.setAttribute(\"name\", \"viewport\"), g.setAttribute(\"content\", \"initial-scale=\" + j + \", maximum-scale=\" + j + \", minimum-scale=\" + j + \", user-scalable=no\"), f.firstElementChild) f.firstElementChild.appendChild(g);else {\n var r = e.createElement(\"div\");r.appendChild(g), e.write(r.innerHTML);\n }a.addEventListener(\"resize\", function () {\n clearTimeout(d), d = setTimeout(c, 300);\n }, !1), a.addEventListener(\"pageshow\", function (a) {\n a.persisted && (clearTimeout(d), d = setTimeout(c, 300));\n }, !1), \"complete\" === e.readyState ? e.body.style.fontSize = 12 * i + \"px\" : e.addEventListener(\"DOMContentLoaded\", function () {\n e.body.style.fontSize = 12 * i + \"px\";\n }, !1), c(), k.dpr = a.dpr = i, k.refreshRem = c, k.rem2px = function (a) {\n var b = parseFloat(a) * this.rem;return \"string\" == typeof a && a.match(/rem$/) && (b += \"px\"), b;\n }, k.px2rem = function (a) {\n var b = parseFloat(a) / this.rem;return \"string\" == typeof a && a.match(/px$/) && (b += \"rem\"), b;\n };\n}(window, window.lib || (window.lib = {}));\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */\nvar Zepto = function () {\n var undefined,\n key,\n $,\n classList,\n emptyArray = [],\n _concat = emptyArray.concat,\n _filter = emptyArray.filter,\n _slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {},\n classCache = {},\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1, 'opacity': 1, 'z-index': 1, 'zoom': 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n adjacencyOperators = ['after', 'prepend', 'before', 'append'],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n 'tr': document.createElement('tbody'),\n 'tbody': table, 'thead': table, 'tfoot': table,\n 'td': tableRow, 'th': tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize,\n uniq,\n tempParent = document.createElement('div'),\n propMap = {\n 'tabindex': 'tabIndex',\n 'readonly': 'readOnly',\n 'for': 'htmlFor',\n 'class': 'className',\n 'maxlength': 'maxLength',\n 'cellspacing': 'cellSpacing',\n 'cellpadding': 'cellPadding',\n 'rowspan': 'rowSpan',\n 'colspan': 'colSpan',\n 'usemap': 'useMap',\n 'frameborder': 'frameBorder',\n 'contenteditable': 'contentEditable'\n },\n isArray = Array.isArray || function (object) {\n return object instanceof Array;\n };\n\n zepto.matches = function (element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false;\n var matchesSelector = element.matches || element.webkitMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.matchesSelector;\n if (matchesSelector) return matchesSelector.call(element, selector);\n // fall back to performing a selector:\n var match,\n parent = element.parentNode,\n temp = !parent;\n if (temp) (parent = tempParent).appendChild(element);\n match = ~zepto.qsa(parent, selector).indexOf(element);\n temp && tempParent.removeChild(element);\n return match;\n };\n\n function type(obj) {\n return obj == null ? String(obj) : class2type[toString.call(obj)] || \"object\";\n }\n\n function isFunction(value) {\n return type(value) == \"function\";\n }\n function isWindow(obj) {\n return obj != null && obj == obj.window;\n }\n function isDocument(obj) {\n return obj != null && obj.nodeType == obj.DOCUMENT_NODE;\n }\n function isObject(obj) {\n return type(obj) == \"object\";\n }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype;\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj);\n\n return 'function' != type && !isWindow(obj) && ('array' == type || length === 0 || typeof length == 'number' && length > 0 && length - 1 in obj);\n }\n\n function compact(array) {\n return _filter.call(array, function (item) {\n return item != null;\n });\n }\n function flatten(array) {\n return array.length > 0 ? $.fn.concat.apply([], array) : array;\n }\n camelize = function camelize(str) {\n return str.replace(/-+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n });\n };\n function dasherize(str) {\n return str.replace(/::/g, '/').replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2').replace(/([a-z\\d])([A-Z])/g, '$1_$2').replace(/_/g, '-').toLowerCase();\n }\n uniq = function uniq(array) {\n return _filter.call(array, function (item, idx) {\n return array.indexOf(item) == idx;\n });\n };\n\n function classRE(name) {\n return name in classCache ? classCache[name] : classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)');\n }\n\n function maybeAddPx(name, value) {\n return typeof value == \"number\" && !cssNumber[dasherize(name)] ? value + \"px\" : value;\n }\n\n function defaultDisplay(nodeName) {\n var element, display;\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName);\n document.body.appendChild(element);\n display = getComputedStyle(element, '').getPropertyValue(\"display\");\n element.parentNode.removeChild(element);\n display == \"none\" && (display = \"block\");\n elementDisplay[nodeName] = display;\n }\n return elementDisplay[nodeName];\n }\n\n function _children(element) {\n return 'children' in element ? _slice.call(element.children) : $.map(element.childNodes, function (node) {\n if (node.nodeType == 1) return node;\n });\n }\n\n function Z(dom, selector) {\n var i,\n len = dom ? dom.length : 0;\n for (i = 0; i < len; i++) {\n this[i] = dom[i];\n }this.length = len;\n this.selector = selector || '';\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function (html, name, properties) {\n var dom, nodes, container;\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1));\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1></$2>\");\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1;\n if (!(name in containers)) name = '*';\n\n container = containers[name];\n container.innerHTML = '' + html;\n dom = $.each(_slice.call(container.childNodes), function () {\n container.removeChild(this);\n });\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom);\n $.each(properties, function (key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value);else nodes.attr(key, value);\n });\n }\n\n return dom;\n };\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function (dom, selector) {\n return new Z(dom, selector);\n };\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function (object) {\n return object instanceof zepto.Z;\n };\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function (selector, context) {\n var dom;\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z();\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim();\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector)) dom = zepto.fragment(selector, RegExp.$1, context), selector = null;\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector);\n // If it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector);\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector);\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector;else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector);\n // Wrap DOM nodes.\n else if (isObject(selector)) dom = [selector], selector = null;\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector)) dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null;\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector);\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector);\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector);\n };\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function $(selector, context) {\n return zepto.init(selector, context);\n };\n\n function extend(target, source, deep) {\n for (key in source) {\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) target[key] = {};\n if (isArray(source[key]) && !isArray(target[key])) target[key] = [];\n extend(target[key], source[key], deep);\n } else if (source[key] !== undefined) target[key] = source[key];\n }\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function (target) {\n var deep,\n args = _slice.call(arguments, 1);\n if (typeof target == 'boolean') {\n deep = target;\n target = args.shift();\n }\n args.forEach(function (arg) {\n extend(target, arg, deep);\n });\n return target;\n };\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function (element, selector) {\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,\n // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly);\n return element.getElementById && isSimple && maybeID ? // Safari DocumentFragment doesn't have getElementById\n (found = element.getElementById(nameOnly)) ? [found] : [] : element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11 ? [] : _slice.call(isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n );\n };\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector);\n }\n\n $.contains = document.documentElement.contains ? function (parent, node) {\n return parent !== node && parent.contains(node);\n } : function (parent, node) {\n while (node && (node = node.parentNode)) {\n if (node === parent) return true;\n }return false;\n };\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg;\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value);\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value) {\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined;\n\n if (value === undefined) return svg ? klass.baseVal : klass;\n svg ? klass.baseVal = value : node.className = value;\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ? value == \"true\" || (value == \"false\" ? false : value == \"null\" ? null : +value + \"\" == value ? +value : /^[\\[\\{]/.test(value) ? $.parseJSON(value) : value) : value;\n } catch (e) {\n return value;\n }\n }\n\n $.type = type;\n $.isFunction = isFunction;\n $.isWindow = isWindow;\n $.isArray = isArray;\n $.isPlainObject = isPlainObject;\n\n $.isEmptyObject = function (obj) {\n var name;\n for (name in obj) {\n return false;\n }return true;\n };\n\n $.isNumeric = function (val) {\n var num = Number(val),\n type = typeof val === 'undefined' ? 'undefined' : _typeof(val);\n return val != null && type != 'boolean' && (type != 'string' || val.length) && !isNaN(num) && isFinite(num) || false;\n };\n\n $.inArray = function (elem, array, i) {\n return emptyArray.indexOf.call(array, elem, i);\n };\n\n $.camelCase = camelize;\n $.trim = function (str) {\n return str == null ? \"\" : String.prototype.trim.call(str);\n };\n\n // plugin compatibility\n $.uuid = 0;\n $.support = {};\n $.expr = {};\n $.noop = function () {};\n\n $.map = function (elements, callback) {\n var value,\n values = [],\n i,\n key;\n if (likeArray(elements)) for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i);\n if (value != null) values.push(value);\n } else for (key in elements) {\n value = callback(elements[key], key);\n if (value != null) values.push(value);\n }\n return flatten(values);\n };\n\n $.each = function (elements, callback) {\n var i, key;\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++) {\n if (callback.call(elements[i], i, elements[i]) === false) return elements;\n }\n } else {\n for (key in elements) {\n if (callback.call(elements[key], key, elements[key]) === false) return elements;\n }\n }\n\n return elements;\n };\n\n $.grep = function (elements, callback) {\n return _filter.call(elements, callback);\n };\n\n if (window.JSON) $.parseJSON = JSON.parse;\n\n // Populate the class2type map\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function (i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function concat() {\n var i,\n value,\n args = [];\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i];\n args[i] = zepto.isZ(value) ? value.toArray() : value;\n }\n return _concat.apply(zepto.isZ(this) ? this.toArray() : this, args);\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function map(fn) {\n return $($.map(this, function (el, i) {\n return fn.call(el, i, el);\n }));\n },\n slice: function slice() {\n return $(_slice.apply(this, arguments));\n },\n\n ready: function ready(callback) {\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($);else document.addEventListener('DOMContentLoaded', function () {\n callback($);\n }, false);\n return this;\n },\n get: function get(idx) {\n return idx === undefined ? _slice.call(this) : this[idx >= 0 ? idx : idx + this.length];\n },\n toArray: function toArray() {\n return this.get();\n },\n size: function size() {\n return this.length;\n },\n remove: function remove() {\n return this.each(function () {\n if (this.parentNode != null) this.parentNode.removeChild(this);\n });\n },\n each: function each(callback) {\n emptyArray.every.call(this, function (el, idx) {\n return callback.call(el, idx, el) !== false;\n });\n return this;\n },\n filter: function filter(selector) {\n if (isFunction(selector)) return this.not(this.not(selector));\n return $(_filter.call(this, function (element) {\n return zepto.matches(element, selector);\n }));\n },\n add: function add(selector, context) {\n return $(uniq(this.concat($(selector, context))));\n },\n is: function is(selector) {\n return this.length > 0 && zepto.matches(this[0], selector);\n },\n not: function not(selector) {\n var nodes = [];\n if (isFunction(selector) && selector.call !== undefined) this.each(function (idx) {\n if (!selector.call(this, idx)) nodes.push(this);\n });else {\n var excludes = typeof selector == 'string' ? this.filter(selector) : likeArray(selector) && isFunction(selector.item) ? _slice.call(selector) : $(selector);\n this.forEach(function (el) {\n if (excludes.indexOf(el) < 0) nodes.push(el);\n });\n }\n return $(nodes);\n },\n has: function has(selector) {\n return this.filter(function () {\n return isObject(selector) ? $.contains(this, selector) : $(this).find(selector).size();\n });\n },\n eq: function eq(idx) {\n return idx === -1 ? this.slice(idx) : this.slice(idx, +idx + 1);\n },\n first: function first() {\n var el = this[0];\n return el && !isObject(el) ? el : $(el);\n },\n last: function last() {\n var el = this[this.length - 1];\n return el && !isObject(el) ? el : $(el);\n },\n find: function find(selector) {\n var result,\n $this = this;\n if (!selector) result = $();else if ((typeof selector === 'undefined' ? 'undefined' : _typeof(selector)) == 'object') result = $(selector).filter(function () {\n var node = this;\n return emptyArray.some.call($this, function (parent) {\n return $.contains(parent, node);\n });\n });else if (this.length == 1) result = $(zepto.qsa(this[0], selector));else result = this.map(function () {\n return zepto.qsa(this, selector);\n });\n return result;\n },\n closest: function closest(selector, context) {\n var nodes = [],\n collection = (typeof selector === 'undefined' ? 'undefined' : _typeof(selector)) == 'object' && $(selector);\n this.each(function (_, node) {\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector))) {\n node = node !== context && !isDocument(node) && node.parentNode;\n }if (node && nodes.indexOf(node) < 0) nodes.push(node);\n });\n return $(nodes);\n },\n parents: function parents(selector) {\n var ancestors = [],\n nodes = this;\n while (nodes.length > 0) {\n nodes = $.map(nodes, function (node) {\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node);\n return node;\n }\n });\n }return filtered(ancestors, selector);\n },\n parent: function parent(selector) {\n return filtered(uniq(this.pluck('parentNode')), selector);\n },\n children: function children(selector) {\n return filtered(this.map(function () {\n return _children(this);\n }), selector);\n },\n contents: function contents() {\n return this.map(function () {\n return this.contentDocument || _slice.call(this.childNodes);\n });\n },\n siblings: function siblings(selector) {\n return filtered(this.map(function (i, el) {\n return _filter.call(_children(el.parentNode), function (child) {\n return child !== el;\n });\n }), selector);\n },\n empty: function empty() {\n return this.each(function () {\n this.innerHTML = '';\n });\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function pluck(property) {\n return $.map(this, function (el) {\n return el[property];\n });\n },\n show: function show() {\n return this.each(function () {\n this.style.display == \"none\" && (this.style.display = '');\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\") this.style.display = defaultDisplay(this.nodeName);\n });\n },\n replaceWith: function replaceWith(newContent) {\n return this.before(newContent).remove();\n },\n wrap: function wrap(structure) {\n var func = isFunction(structure);\n if (this[0] && !func) var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1;\n\n return this.each(function (index) {\n $(this).wrapAll(func ? structure.call(this, index) : clone ? dom.cloneNode(true) : dom);\n });\n },\n wrapAll: function wrapAll(structure) {\n if (this[0]) {\n $(this[0]).before(structure = $(structure));\n var children;\n // drill down to the inmost element\n while ((children = structure.children()).length) {\n structure = children.first();\n }$(structure).append(this);\n }\n return this;\n },\n wrapInner: function wrapInner(structure) {\n var func = isFunction(structure);\n return this.each(function (index) {\n var self = $(this),\n contents = self.contents(),\n dom = func ? structure.call(this, index) : structure;\n contents.length ? contents.wrapAll(dom) : self.append(dom);\n });\n },\n unwrap: function unwrap() {\n this.parent().each(function () {\n $(this).replaceWith($(this).children());\n });\n return this;\n },\n clone: function clone() {\n return this.map(function () {\n return this.cloneNode(true);\n });\n },\n hide: function hide() {\n return this.css(\"display\", \"none\");\n },\n toggle: function toggle(setting) {\n return this.each(function () {\n var el = $(this);(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide();\n });\n },\n prev: function prev(selector) {\n return $(this.pluck('previousElementSibling')).filter(selector || '*');\n },\n next: function next(selector) {\n return $(this.pluck('nextElementSibling')).filter(selector || '*');\n },\n html: function html(_html) {\n return 0 in arguments ? this.each(function (idx) {\n var originHtml = this.innerHTML;\n $(this).empty().append(funcArg(this, _html, idx, originHtml));\n }) : 0 in this ? this[0].innerHTML : null;\n },\n text: function text(_text) {\n return 0 in arguments ? this.each(function (idx) {\n var newText = funcArg(this, _text, idx, this.textContent);\n this.textContent = newText == null ? '' : '' + newText;\n }) : 0 in this ? this.pluck('textContent').join(\"\") : null;\n },\n attr: function attr(name, value) {\n var result;\n return typeof name == 'string' && !(1 in arguments) ? 0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined : this.each(function (idx) {\n if (this.nodeType !== 1) return;\n if (isObject(name)) for (key in name) {\n setAttribute(this, key, name[key]);\n } else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)));\n });\n },\n removeAttr: function removeAttr(name) {\n return this.each(function () {\n this.nodeType === 1 && name.split(' ').forEach(function (attribute) {\n setAttribute(this, attribute);\n }, this);\n });\n },\n prop: function prop(name, value) {\n name = propMap[name] || name;\n return 1 in arguments ? this.each(function (idx) {\n this[name] = funcArg(this, value, idx, this[name]);\n }) : this[0] && this[0][name];\n },\n removeProp: function removeProp(name) {\n name = propMap[name] || name;\n return this.each(function () {\n delete this[name];\n });\n },\n data: function data(name, value) {\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase();\n\n var data = 1 in arguments ? this.attr(attrName, value) : this.attr(attrName);\n\n return data !== null ? deserializeValue(data) : undefined;\n },\n val: function val(value) {\n if (0 in arguments) {\n if (value == null) value = \"\";\n return this.each(function (idx) {\n this.value = funcArg(this, value, idx, this.value);\n });\n } else {\n return this[0] && (this[0].multiple ? $(this[0]).find('option').filter(function () {\n return this.selected;\n }).pluck('value') : this[0].value);\n }\n },\n offset: function offset(coordinates) {\n if (coordinates) return this.each(function (index) {\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n };\n\n if ($this.css('position') == 'static') props['position'] = 'relative';\n $this.css(props);\n });\n if (!this.length) return null;\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0])) return { top: 0, left: 0 };\n var obj = this[0].getBoundingClientRect();\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n };\n },\n css: function css(property, value) {\n if (arguments.length < 2) {\n var element = this[0];\n if (typeof property == 'string') {\n if (!element) return;\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property);\n } else if (isArray(property)) {\n if (!element) return;\n var props = {};\n var computedStyle = getComputedStyle(element, '');\n $.each(property, function (_, prop) {\n props[prop] = element.style[camelize(prop)] || computedStyle.getPropertyValue(prop);\n });\n return props;\n }\n }\n\n var css = '';\n if (type(property) == 'string') {\n if (!value && value !== 0) this.each(function () {\n this.style.removeProperty(dasherize(property));\n });else css = dasherize(property) + \":\" + maybeAddPx(property, value);\n } else {\n for (key in property) {\n if (!property[key] && property[key] !== 0) this.each(function () {\n this.style.removeProperty(dasherize(key));\n });else css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';';\n }\n }\n\n return this.each(function () {\n this.style.cssText += ';' + css;\n });\n },\n index: function index(element) {\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0]);\n },\n hasClass: function hasClass(name) {\n if (!name) return false;\n return emptyArray.some.call(this, function (el) {\n return this.test(className(el));\n }, classRE(name));\n },\n addClass: function addClass(name) {\n if (!name) return this;\n return this.each(function (idx) {\n if (!('className' in this)) return;\n classList = [];\n var cls = className(this),\n newName = funcArg(this, name, idx, cls);\n newName.split(/\\s+/g).forEach(function (klass) {\n if (!$(this).hasClass(klass)) classList.push(klass);\n }, this);\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"));\n });\n },\n removeClass: function removeClass(name) {\n return this.each(function (idx) {\n if (!('className' in this)) return;\n if (name === undefined) return className(this, '');\n classList = className(this);\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function (klass) {\n classList = classList.replace(classRE(klass), \" \");\n });\n className(this, classList.trim());\n });\n },\n toggleClass: function toggleClass(name, when) {\n if (!name) return this;\n return this.each(function (idx) {\n var $this = $(this),\n names = funcArg(this, name, idx, className(this));\n names.split(/\\s+/g).forEach(function (klass) {\n (when === undefined ? !$this.hasClass(klass) : when) ? $this.addClass(klass) : $this.removeClass(klass);\n });\n });\n },\n scrollTop: function scrollTop(value) {\n if (!this.length) return;\n var hasScrollTop = 'scrollTop' in this[0];\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset;\n return this.each(hasScrollTop ? function () {\n this.scrollTop = value;\n } : function () {\n this.scrollTo(this.scrollX, value);\n });\n },\n scrollLeft: function scrollLeft(value) {\n if (!this.length) return;\n var hasScrollLeft = 'scrollLeft' in this[0];\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset;\n return this.each(hasScrollLeft ? function () {\n this.scrollLeft = value;\n } : function () {\n this.scrollTo(value, this.scrollY);\n });\n },\n position: function position() {\n if (!this.length) return;\n\n var elem = this[0],\n\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat($(elem).css('margin-top')) || 0;\n offset.left -= parseFloat($(elem).css('margin-left')) || 0;\n\n // Add offsetParent borders\n parentOffset.top += parseFloat($(offsetParent[0]).css('border-top-width')) || 0;\n parentOffset.left += parseFloat($(offsetParent[0]).css('border-left-width')) || 0;\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n };\n },\n offsetParent: function offsetParent() {\n return this.map(function () {\n var parent = this.offsetParent || document.body;\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\") {\n parent = parent.offsetParent;\n }return parent;\n });\n }\n\n // for now\n };$.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;['width', 'height'].forEach(function (dimension) {\n var dimensionProperty = dimension.replace(/./, function (m) {\n return m[0].toUpperCase();\n });\n\n $.fn[dimension] = function (value) {\n var offset,\n el = this[0];\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] : isDocument(el) ? el.documentElement['scroll' + dimensionProperty] : (offset = this.offset()) && offset[dimension];else return this.each(function (idx) {\n el = $(this);\n el.css(dimension, funcArg(this, value, idx, el[dimension]()));\n });\n };\n });\n\n function traverseNode(node, fun) {\n fun(node);\n for (var i = 0, len = node.childNodes.length; i < len; i++) {\n traverseNode(node.childNodes[i], fun);\n }\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function (operator, operatorIndex) {\n var inside = operatorIndex % 2; //=> prepend, append\n\n $.fn[operator] = function () {\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType,\n nodes = $.map(arguments, function (arg) {\n var arr = [];\n argType = type(arg);\n if (argType == \"array\") {\n arg.forEach(function (el) {\n if (el.nodeType !== undefined) return arr.push(el);else if ($.zepto.isZ(el)) return arr = arr.concat(el.get());\n arr = arr.concat(zepto.fragment(el));\n });\n return arr;\n }\n return argType == \"object\" || arg == null ? arg : zepto.fragment(arg);\n }),\n parent,\n copyByClone = this.length > 1;\n if (nodes.length < 1) return this;\n\n return this.each(function (_, target) {\n parent = inside ? target : target.parentNode;\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling : operatorIndex == 1 ? target.firstChild : operatorIndex == 2 ? target : null;\n\n var parentInDocument = $.contains(document.documentElement, parent);\n\n nodes.forEach(function (node) {\n if (copyByClone) node = node.cloneNode(true);else if (!parent) return $(node).remove();\n\n parent.insertBefore(node, target);\n if (parentInDocument) traverseNode(node, function (el) {\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' && (!el.type || el.type === 'text/javascript') && !el.src) {\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window;\n target['eval'].call(target, el.innerHTML);\n }\n });\n });\n });\n };\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator + 'To' : 'insert' + (operatorIndex ? 'Before' : 'After')] = function (html) {\n $(html)[operator](this);\n return this;\n };\n });\n\n zepto.Z.prototype = Z.prototype = $.fn;\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq;\n zepto.deserializeValue = deserializeValue;\n $.zepto = zepto;\n\n return $;\n}();\n\nwindow.Zepto = Zepto;\nwindow.$ === undefined && (window.$ = Zepto);(function ($) {\n var _zid = 1,\n undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function isString(obj) {\n return typeof obj == 'string';\n },\n handlers = {},\n specialEvents = {},\n focusinSupported = 'onfocusin' in window,\n focus = { focus: 'focusin', blur: 'focusout' },\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' };\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents';\n\n function zid(element) {\n return element._zid || (element._zid = _zid++);\n }\n function findHandlers(element, event, fn, selector) {\n event = parse(event);\n if (event.ns) var matcher = matcherFor(event.ns);\n return (handlers[zid(element)] || []).filter(function (handler) {\n return handler && (!event.e || handler.e == event.e) && (!event.ns || matcher.test(handler.ns)) && (!fn || zid(handler.fn) === zid(fn)) && (!selector || handler.sel == selector);\n });\n }\n function parse(event) {\n var parts = ('' + event).split('.');\n return { e: parts[0], ns: parts.slice(1).sort().join(' ') };\n }\n function matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)');\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del && !focusinSupported && handler.e in focus || !!captureSetting;\n }\n\n function realEvent(type) {\n return hover[type] || focusinSupported && focus[type] || type;\n }\n\n function add(element, events, fn, data, selector, delegator, capture) {\n var id = zid(element),\n set = handlers[id] || (handlers[id] = []);\n events.split(/\\s/).forEach(function (event) {\n if (event == 'ready') return $(document).ready(fn);\n var handler = parse(event);\n handler.fn = fn;\n handler.sel = selector;\n // emulate mouseenter, mouseleave\n if (handler.e in hover) fn = function fn(e) {\n var related = e.relatedTarget;\n if (!related || related !== this && !$.contains(this, related)) return handler.fn.apply(this, arguments);\n };\n handler.del = delegator;\n var callback = delegator || fn;\n handler.proxy = function (e) {\n e = compatible(e);\n if (e.isImmediatePropagationStopped()) return;\n e.data = data;\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args));\n if (result === false) e.preventDefault(), e.stopPropagation();\n return result;\n };\n handler.i = set.length;\n set.push(handler);\n if ('addEventListener' in element) element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture));\n });\n }\n function remove(element, events, fn, selector, capture) {\n var id = zid(element);(events || '').split(/\\s/).forEach(function (event) {\n findHandlers(element, event, fn, selector).forEach(function (handler) {\n delete handlers[id][handler.i];\n if ('removeEventListener' in element) element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture));\n });\n });\n }\n\n $.event = { add: add, remove: remove };\n\n $.proxy = function (fn, context) {\n var args = 2 in arguments && slice.call(arguments, 2);\n if (isFunction(fn)) {\n var proxyFn = function proxyFn() {\n return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments);\n };\n proxyFn._zid = zid(fn);\n return proxyFn;\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn);\n return $.proxy.apply(null, args);\n } else {\n return $.proxy(fn[context], fn);\n }\n } else {\n throw new TypeError(\"expected function\");\n }\n };\n\n $.fn.bind = function (event, data, callback) {\n return this.on(event, data, callback);\n };\n $.fn.unbind = function (event, callback) {\n return this.off(event, callback);\n };\n $.fn.one = function (event, selector, data, callback) {\n return this.on(event, selector, data, callback, 1);\n };\n\n var returnTrue = function returnTrue() {\n return true;\n },\n returnFalse = function returnFalse() {\n return false;\n },\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: 'isDefaultPrevented',\n stopImmediatePropagation: 'isImmediatePropagationStopped',\n stopPropagation: 'isPropagationStopped'\n };\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event);\n\n $.each(eventMethods, function (name, predicate) {\n var sourceMethod = source[name];\n event[name] = function () {\n this[predicate] = returnTrue;\n return sourceMethod && sourceMethod.apply(source, arguments);\n };\n event[predicate] = returnFalse;\n });\n\n event.timeStamp || (event.timeStamp = Date.now());\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented : 'returnValue' in source ? source.returnValue === false : source.getPreventDefault && source.getPreventDefault()) event.isDefaultPrevented = returnTrue;\n }\n return event;\n }\n\n function createProxy(event) {\n var key,\n proxy = { originalEvent: event };\n for (key in event) {\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key];\n }return compatible(proxy, event);\n }\n\n $.fn.delegate = function (selector, event, callback) {\n return this.on(event, selector, callback);\n };\n $.fn.undelegate = function (selector, event, callback) {\n return this.off(event, selector, callback);\n };\n\n $.fn.live = function (event, callback) {\n $(document.body).delegate(this.selector, event, callback);\n return this;\n };\n $.fn.die = function (event, callback) {\n $(document.body).undelegate(this.selector, event, callback);\n return this;\n };\n\n $.fn.on = function (event, selector, data, callback, one) {\n var autoRemove,\n delegator,\n $this = this;\n if (event && !isString(event)) {\n $.each(event, function (type, fn) {\n $this.on(type, selector, data, fn, one);\n });\n return $this;\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false) callback = data, data = selector, selector = undefined;\n if (callback === undefined || data === false) callback = data, data = undefined;\n\n if (callback === false) callback = returnFalse;\n\n return $this.each(function (_, element) {\n if (one) autoRemove = function autoRemove(e) {\n remove(element, e.type, callback);\n return callback.apply(this, arguments);\n };\n\n if (selector) delegator = function delegator(e) {\n var evt,\n match = $(e.target).closest(selector, element).get(0);\n if (match && match !== element) {\n evt = $.extend(createProxy(e), { currentTarget: match, liveFired: element });\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)));\n }\n };\n\n add(element, event, callback, data, selector, delegator || autoRemove);\n });\n };\n $.fn.off = function (event, selector, callback) {\n var $this = this;\n if (event && !isString(event)) {\n $.each(event, function (type, fn) {\n $this.off(type, selector, fn);\n });\n return $this;\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false) callback = selector, selector = undefined;\n\n if (callback === false) callback = returnFalse;\n\n return $this.each(function () {\n remove(this, event, callback, selector);\n });\n };\n\n $.fn.trigger = function (event, args) {\n event = isString(event) || $.isPlainObject(event) ? $.Event(event) : compatible(event);\n event._args = args;\n return this.each(function () {\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]();\n // items in the collection might not be DOM elements\n else if ('dispatchEvent' in this) this.dispatchEvent(event);else $(this).triggerHandler(event, args);\n });\n };\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn't trigger an actual event, doesn't bubble\n $.fn.triggerHandler = function (event, args) {\n var e, result;\n this.each(function (i, element) {\n e = createProxy(isString(event) ? $.Event(event) : event);\n e._args = args;\n e.target = element;\n $.each(findHandlers(element, event.type || event), function (i, handler) {\n result = handler.proxy(e);\n if (e.isImmediatePropagationStopped()) return false;\n });\n });\n return result;\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;('focusin focusout focus blur load resize scroll unload click dblclick ' + 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave ' + 'change select keydown keypress keyup error').split(' ').forEach(function (event) {\n $.fn[event] = function (callback) {\n return 0 in arguments ? this.bind(event, callback) : this.trigger(event);\n };\n });\n\n $.Event = function (type, props) {\n if (!isString(type)) props = type, type = props.type;\n var event = document.createEvent(specialEvents[type] || 'Events'),\n bubbles = true;\n if (props) for (var name in props) {\n name == 'bubbles' ? bubbles = !!props[name] : event[name] = props[name];\n }event.initEvent(type, bubbles, true);\n return compatible(event);\n };\n})(Zepto);(function ($) {\n var jsonpID = +new Date(),\n document = window.document,\n key,\n name,\n rscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\n xmlTypeRE = /^(?:text|application)\\/xml/i,\n jsonType = 'application/json',\n htmlType = 'text/html',\n blankRE = /^\\s*$/,\n originAnchor = document.createElement('a');\n\n originAnchor.href = window.location.href;\n\n // trigger a custom event and return false if it was cancelled\n function triggerAndReturn(context, eventName, data) {\n var event = $.Event(eventName);\n $(context).trigger(event, data);\n return !event.isDefaultPrevented();\n }\n\n // trigger an Ajax \"global\" event\n function triggerGlobal(settings, context, eventName, data) {\n if (settings.global) return triggerAndReturn(context || document, eventName, data);\n }\n\n // Number of active Ajax requests\n $.active = 0;\n\n function ajaxStart(settings) {\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart');\n }\n function ajaxStop(settings) {\n if (settings.global && ! --$.active) triggerGlobal(settings, null, 'ajaxStop');\n }\n\n // triggers an extra global event \"ajaxBeforeSend\" that's like \"ajaxSend\" but cancelable\n function ajaxBeforeSend(xhr, settings) {\n var context = settings.context;\n if (settings.beforeSend.call(context, xhr, settings) === false || triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false) return false;\n\n triggerGlobal(settings, context, 'ajaxSend', [xhr, settings]);\n }\n function ajaxSuccess(data, xhr, settings, deferred) {\n var context = settings.context,\n status = 'success';\n settings.success.call(context, data, status, xhr);\n if (deferred) deferred.resolveWith(context, [data, status, xhr]);\n triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data]);\n ajaxComplete(status, xhr, settings);\n }\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\n function ajaxError(error, type, xhr, settings, deferred) {\n var context = settings.context;\n settings.error.call(context, xhr, type, error);\n if (deferred) deferred.rejectWith(context, [xhr, type, error]);\n triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type]);\n ajaxComplete(type, xhr, settings);\n }\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\n function ajaxComplete(status, xhr, settings) {\n var context = settings.context;\n settings.complete.call(context, xhr, status);\n triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings]);\n ajaxStop(settings);\n }\n\n function ajaxDataFilter(data, type, settings) {\n if (settings.dataFilter == empty) return data;\n var context = settings.context;\n return settings.dataFilter.call(context, data, type);\n }\n\n // Empty function, used as default callback\n function empty() {}\n\n $.ajaxJSONP = function (options, deferred) {\n if (!('type' in options)) return $.ajax(options);\n\n var _callbackName = options.jsonpCallback,\n callbackName = ($.isFunction(_callbackName) ? _callbackName() : _callbackName) || 'Zepto' + jsonpID++,\n script = document.createElement('script'),\n originalCallback = window[callbackName],\n responseData,\n abort = function abort(errorType) {\n $(script).triggerHandler('error', errorType || 'abort');\n },\n xhr = { abort: abort },\n abortTimeout;\n\n if (deferred) deferred.promise(xhr);\n\n $(script).on('load error', function (e, errorType) {\n clearTimeout(abortTimeout);\n $(script).off().remove();\n\n if (e.type == 'error' || !responseData) {\n ajaxError(null, errorType || 'error', xhr, options, deferred);\n } else {\n ajaxSuccess(responseData[0], xhr, options, deferred);\n }\n\n window[callbackName] = originalCallback;\n if (responseData && $.isFunction(originalCallback)) originalCallback(responseData[0]);\n\n originalCallback = responseData = undefined;\n });\n\n if (ajaxBeforeSend(xhr, options) === false) {\n abort('abort');\n return xhr;\n }\n\n window[callbackName] = function () {\n responseData = arguments;\n };\n\n script.src = options.url.replace(/\\?(.+)=\\?/, '?$1=' + callbackName);\n document.head.appendChild(script);\n\n if (options.timeout > 0) abortTimeout = setTimeout(function () {\n abort('timeout');\n }, options.timeout);\n\n return xhr;\n };\n\n $.ajaxSettings = {\n // Default type of request\n type: 'GET',\n // Callback that is executed before request\n beforeSend: empty,\n // Callback that is executed if the request succeeds\n success: empty,\n // Callback that is executed the the server drops error\n error: empty,\n // Callback that is executed on request complete (both: error and success)\n complete: empty,\n // The context for the callbacks\n context: null,\n // Whether to trigger \"global\" Ajax events\n global: true,\n // Transport\n xhr: function xhr() {\n return new window.XMLHttpRequest();\n },\n // MIME types mapping\n // IIS returns Javascript as \"application/x-javascript\"\n accepts: {\n script: 'text/javascript, application/javascript, application/x-javascript',\n json: jsonType,\n xml: 'application/xml, text/xml',\n html: htmlType,\n text: 'text/plain'\n },\n // Whether the request is to another domain\n crossDomain: false,\n // Default timeout\n timeout: 0,\n // Whether data should be serialized to string\n processData: true,\n // Whether the browser should be allowed to cache GET responses\n cache: true,\n //Used to handle the raw response data of XMLHttpRequest.\n //This is a pre-filtering function to sanitize the response.\n //The sanitized response should be returned\n dataFilter: empty\n };\n\n function mimeToDataType(mime) {\n if (mime) mime = mime.split(';', 2)[0];\n return mime && (mime == htmlType ? 'html' : mime == jsonType ? 'json' : scriptTypeRE.test(mime) ? 'script' : xmlTypeRE.test(mime) && 'xml') || 'text';\n }\n\n function appendQuery(url, query) {\n if (query == '') return url;\n return (url + '&' + query).replace(/[&?]{1,2}/, '?');\n }\n\n // serialize payload and append it to the URL for GET requests\n function serializeData(options) {\n if (options.processData && options.data && $.type(options.data) != \"string\") options.data = $.param(options.data, options.traditional);\n if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType)) options.url = appendQuery(options.url, options.data), options.data = undefined;\n }\n\n $.ajax = function (options) {\n var settings = $.extend({}, options || {}),\n deferred = $.Deferred && $.Deferred(),\n urlAnchor,\n hashIndex;\n for (key in $.ajaxSettings) {\n if (settings[key] === undefined) settings[key] = $.ajaxSettings[key];\n }ajaxStart(settings);\n\n if (!settings.crossDomain) {\n urlAnchor = document.createElement('a');\n urlAnchor.href = settings.url;\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\n urlAnchor.href = urlAnchor.href;\n settings.crossDomain = originAnchor.protocol + '//' + originAnchor.host !== urlAnchor.protocol + '//' + urlAnchor.host;\n }\n\n if (!settings.url) settings.url = window.location.toString();\n if ((hashIndex = settings.url.indexOf('#')) > -1) settings.url = settings.url.slice(0, hashIndex);\n serializeData(settings);\n\n var dataType = settings.dataType,\n hasPlaceholder = /\\?.+=\\?/.test(settings.url);\n if (hasPlaceholder) dataType = 'jsonp';\n\n if (settings.cache === false || (!options || options.cache !== true) && ('script' == dataType || 'jsonp' == dataType)) settings.url = appendQuery(settings.url, '_=' + Date.now());\n\n if ('jsonp' == dataType) {\n if (!hasPlaceholder) settings.url = appendQuery(settings.url, settings.jsonp ? settings.jsonp + '=?' : settings.jsonp === false ? '' : 'callback=?');\n return $.ajaxJSONP(settings, deferred);\n }\n\n var mime = settings.accepts[dataType],\n headers = {},\n setHeader = function setHeader(name, value) {\n headers[name.toLowerCase()] = [name, value];\n },\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\n xhr = settings.xhr(),\n nativeSetHeader = xhr.setRequestHeader,\n abortTimeout;\n\n if (deferred) deferred.promise(xhr);\n\n if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest');\n setHeader('Accept', mime || '*/*');\n if (mime = settings.mimeType || mime) {\n if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0];\n xhr.overrideMimeType && xhr.overrideMimeType(mime);\n }\n if (settings.contentType || settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET') setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded');\n\n if (settings.headers) for (name in settings.headers) {\n setHeader(name, settings.headers[name]);\n }xhr.setRequestHeader = setHeader;\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState == 4) {\n xhr.onreadystatechange = empty;\n clearTimeout(abortTimeout);\n var result,\n error = false;\n if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304 || xhr.status == 0 && protocol == 'file:') {\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'));\n\n if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob') result = xhr.response;else {\n result = xhr.responseText;\n\n try {\n // http://perfectionkills.com/global-eval-what-are-the-options/\n // sanitize response accordingly if data filter callback provided\n result = ajaxDataFilter(result, dataType, settings);\n if (dataType == 'script') (1, eval)(result);else if (dataType == 'xml') result = xhr.responseXML;else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result);\n } catch (e) {\n error = e;\n }\n\n if (error) return ajaxError(error, 'parsererror', xhr, settings, deferred);\n }\n\n ajaxSuccess(result, xhr, settings, deferred);\n } else {\n ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred);\n }\n }\n };\n\n if (ajaxBeforeSend(xhr, settings) === false) {\n xhr.abort();\n ajaxError(null, 'abort', xhr, settings, deferred);\n return xhr;\n }\n\n var async = 'async' in settings ? settings.async : true;\n xhr.open(settings.type, settings.url, async, settings.username, settings.password);\n\n if (settings.xhrFields) for (name in settings.xhrFields) {\n xhr[name] = settings.xhrFields[name];\n }for (name in headers) {\n nativeSetHeader.apply(xhr, headers[name]);\n }if (settings.timeout > 0) abortTimeout = setTimeout(function () {\n xhr.onreadystatechange = empty;\n xhr.abort();\n ajaxError(null, 'timeout', xhr, settings, deferred);\n }, settings.timeout);\n\n // avoid sending empty string (#319)\n xhr.send(settings.data ? settings.data : null);\n return xhr;\n };\n\n // handle optional data/success arguments\n function parseArguments(url, data, success, dataType) {\n if ($.isFunction(data)) dataType = success, success = data, data = undefined;\n if (!$.isFunction(success)) dataType = success, success = undefined;\n return {\n url: url,\n data: data,\n success: success,\n dataType: dataType\n };\n }\n\n $.get = function () /* url, data, success, dataType */{\n return $.ajax(parseArguments.apply(null, arguments));\n };\n\n $.post = function () /* url, data, success, dataType */{\n var options = parseArguments.apply(null, arguments);\n options.type = 'POST';\n return $.ajax(options);\n };\n\n $.getJSON = function () /* url, data, success */{\n var options = parseArguments.apply(null, arguments);\n options.dataType = 'json';\n return $.ajax(options);\n };\n\n $.fn.load = function (url, data, success) {\n if (!this.length) return this;\n var self = this,\n parts = url.split(/\\s/),\n selector,\n options = parseArguments(url, data, success),\n callback = options.success;\n if (parts.length > 1) options.url = parts[0], selector = parts[1];\n options.success = function (response) {\n self.html(selector ? $('<div>').html(response.replace(rscript, \"\")).find(selector) : response);\n callback && callback.apply(self, arguments);\n };\n $.ajax(options);\n return this;\n };\n\n var escape = encodeURIComponent;\n\n function serialize(params, obj, traditional, scope) {\n var type,\n array = $.isArray(obj),\n hash = $.isPlainObject(obj);\n $.each(obj, function (key, value) {\n type = $.type(value);\n if (scope) key = traditional ? scope : scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']';\n // handle data in serializeArray() format\n if (!scope && array) params.add(value.name, value.value);\n // recurse into nested objects\n else if (type == \"array\" || !traditional && type == \"object\") serialize(params, value, traditional, key);else params.add(key, value);\n });\n }\n\n $.param = function (obj, traditional) {\n var params = [];\n params.add = function (key, value) {\n if ($.isFunction(value)) value = value();\n if (value == null) value = \"\";\n this.push(escape(key) + '=' + escape(value));\n };\n serialize(params, obj, traditional);\n return params.join('&').replace(/%20/g, '+');\n };\n})(Zepto);(function ($) {\n $.fn.serializeArray = function () {\n var name,\n type,\n result = [],\n add = function add(value) {\n if (value.forEach) return value.forEach(add);\n result.push({ name: name, value: value });\n };\n if (this[0]) $.each(this[0].elements, function (_, field) {\n type = field.type, name = field.name;\n if (name && field.nodeName.toLowerCase() != 'fieldset' && !field.disabled && type != 'submit' && type != 'reset' && type != 'button' && type != 'file' && (type != 'radio' && type != 'checkbox' || field.checked)) add($(field).val());\n });\n return result;\n };\n\n $.fn.serialize = function () {\n var result = [];\n this.serializeArray().forEach(function (elm) {\n result.push(encodeURIComponent(elm.name) + '=' + encodeURIComponent(elm.value));\n });\n return result.join('&');\n };\n\n $.fn.submit = function (callback) {\n if (0 in arguments) this.bind('submit', callback);else if (this.length) {\n var event = $.Event('submit');\n this.eq(0).trigger(event);\n if (!event.isDefaultPrevented()) this.get(0).submit();\n }\n return this;\n };\n})(Zepto);(function () {\n // getComputedStyle shouldn't freak out when called\n // without a valid element as argument\n try {\n getComputedStyle(undefined);\n } catch (e) {\n var nativeGetComputedStyle = getComputedStyle;\n window.getComputedStyle = function (element, pseudoElement) {\n try {\n return nativeGetComputedStyle(element, pseudoElement);\n } catch (e) {\n return null;\n }\n };\n }\n})();\n\nmodule.exports = Zepto;\n\n/***/ }),\n/* 7 */,\n/* 8 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 9 */,\n/* 10 */,\n/* 11 */,\n/* 12 */,\n/* 13 */,\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(0);\n\n\n/***/ }),\n/* 15 */,\n/* 16 */,\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function () {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\tvar result = [];\n\t\tfor (var i = 0; i < this.length; i++) {\n\t\t\tvar item = this[i];\n\t\t\tif (item[2]) {\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\n\t\t\t} else {\n\t\t\t\tresult.push(item[1]);\n\t\t\t}\n\t\t}\n\t\treturn result.join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function (modules, mediaQuery) {\n\t\tif (typeof modules === \"string\") modules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor (var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif (typeof id === \"number\") alreadyImportedModules[id] = true;\n\t\t}\n\t\tfor (i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif (typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif (mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if (mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nvar stylesInDom = {},\n\tmemoize = function(fn) {\n\t\tvar memo;\n\t\treturn function () {\n\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\treturn memo;\n\t\t};\n\t},\n\tisOldIE = memoize(function() {\n\t\treturn /msie [6-9]\\b/.test(self.navigator.userAgent.toLowerCase());\n\t}),\n\tgetHeadElement = memoize(function () {\n\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\n\t}),\n\tsingletonElement = null,\n\tsingletonCounter = 0,\n\tstyleElementsInsertedAtTop = [];\n\nmodule.exports = function(list, options) {\n\tif(typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the bottom of <head>.\n\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list);\n\taddStylesToDom(styles, options);\n\n\treturn function update(newList) {\n\t\tvar mayRemove = [];\n\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\t\tfor(var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\n\t\t\t\t\tdomStyle.parts[j]();\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction addStylesToDom(styles, options) {\n\tfor(var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles(list) {\n\tvar styles = [];\n\tvar newStyles = {};\n\tfor(var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\t\tif(!newStyles[id])\n\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse\n\t\t\tnewStyles[id].parts.push(part);\n\t}\n\treturn styles;\n}\n\nfunction insertStyleElement(options, styleElement) {\n\tvar head = getHeadElement();\n\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\n\tif (options.insertAt === \"top\") {\n\t\tif(!lastStyleElementInsertedAtTop) {\n\t\t\thead.insertBefore(styleElement, head.firstChild);\n\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\thead.appendChild(styleElement);\n\t\t}\n\t\tstyleElementsInsertedAtTop.push(styleElement);\n\t} else if (options.insertAt === \"bottom\") {\n\t\thead.appendChild(styleElement);\n\t} else {\n\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\n\t}\n}\n\nfunction removeStyleElement(styleElement) {\n\tstyleElement.parentNode.removeChild(styleElement);\n\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\n\tif(idx >= 0) {\n\t\tstyleElementsInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement(options) {\n\tvar styleElement = document.createElement(\"style\");\n\tstyleElement.type = \"text/css\";\n\tinsertStyleElement(options, styleElement);\n\treturn styleElement;\n}\n\nfunction createLinkElement(options) {\n\tvar linkElement = document.createElement(\"link\");\n\tlinkElement.rel = \"stylesheet\";\n\tinsertStyleElement(options, linkElement);\n\treturn linkElement;\n}\n\nfunction addStyle(obj, options) {\n\tvar styleElement, update, remove;\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\n\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\n\t} else if(obj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\") {\n\t\tstyleElement = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t\tif(styleElement.href)\n\t\t\t\tURL.revokeObjectURL(styleElement.href);\n\t\t};\n\t} else {\n\t\tstyleElement = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle(newObj) {\n\t\tif(newObj) {\n\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\n\t\t\t\treturn;\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag(styleElement, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = styleElement.childNodes;\n\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\n\t\tif (childNodes.length) {\n\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyleElement.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag(styleElement, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyleElement.setAttribute(\"media\", media)\n\t}\n\n\tif(styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = css;\n\t} else {\n\t\twhile(styleElement.firstChild) {\n\t\t\tstyleElement.removeChild(styleElement.firstChild);\n\t\t}\n\t\tstyleElement.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink(linkElement, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\tif(sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = linkElement.href;\n\n\tlinkElement.href = URL.createObjectURL(blob);\n\n\tif(oldSrc)\n\t\tURL.revokeObjectURL(oldSrc);\n}\n\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// js/global.js?v=a54dd0df"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t4: 0\n \t};\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};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\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 \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"js/\" + chunkId + \".js?v=\" + \"a54dd0df\" + \"\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\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// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\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// 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// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 14);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap a54dd0dff680e2ad31af","import '../css/base.css';\r\nimport '../js/flexible.js';\r\nimport '../js/zepto.js';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/global.js","!function(){var a=\"@charset \\\"utf-8\\\";html{overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}html *{outline:0;-webkit-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}html,body{font-family:sans-serif}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{margin:0;padding:0}input,select,textarea{font-size:100%}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}abbr,acronym{border:0;font-variant:normal}del{text-decoration:line-through}address,caption,cite,code,dfn,th,var{font-style:normal;font-weight:500}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:500}q:before,q:after{content:''}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}ins,a{text-decoration:none}\",b=document.createElement(\"style\");if(document.getElementsByTagName(\"head\")[0].appendChild(b),b.styleSheet)b.styleSheet.disabled||(b.styleSheet.cssText=a);else try{b.innerHTML=a}catch(c){b.innerText=a}}();!function(a,b){function c(){var b=f.getBoundingClientRect().width;b/i>540&&(b=540*i);var c=b/10;f.style.fontSize=c+\"px\",k.rem=a.rem=c}var d,e=a.document,f=e.documentElement,g=e.querySelector('meta[name=\"viewport\"]'),h=e.querySelector('meta[name=\"flexible\"]'),i=0,j=0,k=b.flexible||(b.flexible={});if(g){console.warn(\"将根据已有的meta标签来设置缩放比例\");var l=g.getAttribute(\"content\").match(/initial\\-scale=([\\d\\.]+)/);l&&(j=parseFloat(l[1]),i=parseInt(1/j))}else if(h){var m=h.getAttribute(\"content\");if(m){var n=m.match(/initial\\-dpr=([\\d\\.]+)/),o=m.match(/maximum\\-dpr=([\\d\\.]+)/);n&&(i=parseFloat(n[1]),j=parseFloat((1/i).toFixed(2))),o&&(i=parseFloat(o[1]),j=parseFloat((1/i).toFixed(2)))}}if(!i&&!j){var p=(a.navigator.appVersion.match(/android/gi),a.navigator.appVersion.match(/iphone/gi)),q=a.devicePixelRatio;i=p?q>=3&&(!i||i>=3)?3:q>=2&&(!i||i>=2)?2:1:1,j=1/i}if(f.setAttribute(\"data-dpr\",i),!g)if(g=e.createElement(\"meta\"),g.setAttribute(\"name\",\"viewport\"),g.setAttribute(\"content\",\"initial-scale=\"+j+\", maximum-scale=\"+j+\", minimum-scale=\"+j+\", user-scalable=no\"),f.firstElementChild)f.firstElementChild.appendChild(g);else{var r=e.createElement(\"div\");r.appendChild(g),e.write(r.innerHTML)}a.addEventListener(\"resize\",function(){clearTimeout(d),d=setTimeout(c,300)},!1),a.addEventListener(\"pageshow\",function(a){a.persisted&&(clearTimeout(d),d=setTimeout(c,300))},!1),\"complete\"===e.readyState?e.body.style.fontSize=12*i+\"px\":e.addEventListener(\"DOMContentLoaded\",function(){e.body.style.fontSize=12*i+\"px\"},!1),c(),k.dpr=a.dpr=i,k.refreshRem=c,k.rem2px=function(a){var b=parseFloat(a)*this.rem;return\"string\"==typeof a&&a.match(/rem$/)&&(b+=\"px\"),b},k.px2rem=function(a){var b=parseFloat(a)/this.rem;return\"string\"==typeof a&&a.match(/px$/)&&(b+=\"rem\"),b}}(window,window.lib||(window.lib={}));\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/js/flexible.js","/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */\r\n var Zepto = (function() {\r\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\r\n document = window.document,\r\n elementDisplay = {}, classCache = {},\r\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 },\r\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\r\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\r\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\r\n rootNodeRE = /^(?:body|html)$/i,\r\n capitalRE = /([A-Z])/g,\r\n\r\n // special attributes that should be get/set via method calls\r\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\r\n\r\n adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],\r\n table = document.createElement('table'),\r\n tableRow = document.createElement('tr'),\r\n containers = {\r\n 'tr': document.createElement('tbody'),\r\n 'tbody': table, 'thead': table, 'tfoot': table,\r\n 'td': tableRow, 'th': tableRow,\r\n '*': document.createElement('div')\r\n },\r\n readyRE = /complete|loaded|interactive/,\r\n simpleSelectorRE = /^[\\w-]*$/,\r\n class2type = {},\r\n toString = class2type.toString,\r\n zepto = {},\r\n camelize, uniq,\r\n tempParent = document.createElement('div'),\r\n propMap = {\r\n 'tabindex': 'tabIndex',\r\n 'readonly': 'readOnly',\r\n 'for': 'htmlFor',\r\n 'class': 'className',\r\n 'maxlength': 'maxLength',\r\n 'cellspacing': 'cellSpacing',\r\n 'cellpadding': 'cellPadding',\r\n 'rowspan': 'rowSpan',\r\n 'colspan': 'colSpan',\r\n 'usemap': 'useMap',\r\n 'frameborder': 'frameBorder',\r\n 'contenteditable': 'contentEditable'\r\n },\r\n isArray = Array.isArray ||\r\n function(object){ return object instanceof Array }\r\n\r\n zepto.matches = function(element, selector) {\r\n if (!selector || !element || element.nodeType !== 1) return false\r\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\r\n element.mozMatchesSelector || element.oMatchesSelector ||\r\n element.matchesSelector\r\n if (matchesSelector) return matchesSelector.call(element, selector)\r\n // fall back to performing a selector:\r\n var match, parent = element.parentNode, temp = !parent\r\n if (temp) (parent = tempParent).appendChild(element)\r\n match = ~zepto.qsa(parent, selector).indexOf(element)\r\n temp && tempParent.removeChild(element)\r\n return match\r\n }\r\n\r\n function type(obj) {\r\n return obj == null ? String(obj) :\r\n class2type[toString.call(obj)] || \"object\"\r\n }\r\n\r\n function isFunction(value) { return type(value) == \"function\" }\r\n function isWindow(obj) { return obj != null && obj == obj.window }\r\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\r\n function isObject(obj) { return type(obj) == \"object\" }\r\n function isPlainObject(obj) {\r\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\r\n }\r\n\r\n function likeArray(obj) {\r\n var length = !!obj && 'length' in obj && obj.length,\r\n type = $.type(obj)\r\n\r\n return 'function' != type && !isWindow(obj) && (\r\n 'array' == type || length === 0 ||\r\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\r\n )\r\n }\r\n\r\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\r\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\r\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }\r\n function dasherize(str) {\r\n return str.replace(/::/g, '/')\r\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\r\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\r\n .replace(/_/g, '-')\r\n .toLowerCase()\r\n }\r\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\r\n\r\n function classRE(name) {\r\n return name in classCache ?\r\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'))\r\n }\r\n\r\n function maybeAddPx(name, value) {\r\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\r\n }\r\n\r\n function defaultDisplay(nodeName) {\r\n var element, display\r\n if (!elementDisplay[nodeName]) {\r\n element = document.createElement(nodeName)\r\n document.body.appendChild(element)\r\n display = getComputedStyle(element, '').getPropertyValue(\"display\")\r\n element.parentNode.removeChild(element)\r\n display == \"none\" && (display = \"block\")\r\n elementDisplay[nodeName] = display\r\n }\r\n return elementDisplay[nodeName]\r\n }\r\n\r\n function children(element) {\r\n return 'children' in element ?\r\n slice.call(element.children) :\r\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\r\n }\r\n\r\n function Z(dom, selector) {\r\n var i, len = dom ? dom.length : 0\r\n for (i = 0; i < len; i++) this[i] = dom[i]\r\n this.length = len\r\n this.selector = selector || ''\r\n }\r\n\r\n // `$.zepto.fragment` takes a html string and an optional tag name\r\n // to generate DOM nodes from the given html string.\r\n // The generated DOM nodes are returned as an array.\r\n // This function can be overridden in plugins for example to make\r\n // it compatible with browsers that don't support the DOM fully.\r\n zepto.fragment = function(html, name, properties) {\r\n var dom, nodes, container\r\n\r\n // A special case optimization for a single tag\r\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\r\n\r\n if (!dom) {\r\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1></$2>\")\r\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\r\n if (!(name in containers)) name = '*'\r\n\r\n container = containers[name]\r\n container.innerHTML = '' + html\r\n dom = $.each(slice.call(container.childNodes), function(){\r\n container.removeChild(this)\r\n })\r\n }\r\n\r\n if (isPlainObject(properties)) {\r\n nodes = $(dom)\r\n $.each(properties, function(key, value) {\r\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\r\n else nodes.attr(key, value)\r\n })\r\n }\r\n\r\n return dom\r\n }\r\n\r\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\r\n // of nodes with `$.fn` and thus supplying all the Zepto functions\r\n // to the array. This method can be overridden in plugins.\r\n zepto.Z = function(dom, selector) {\r\n return new Z(dom, selector)\r\n }\r\n\r\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\r\n // collection. This method can be overridden in plugins.\r\n zepto.isZ = function(object) {\r\n return object instanceof zepto.Z\r\n }\r\n\r\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\r\n // takes a CSS selector and an optional context (and handles various\r\n // special cases).\r\n // This method can be overridden in plugins.\r\n zepto.init = function(selector, context) {\r\n var dom\r\n // If nothing given, return an empty Zepto collection\r\n if (!selector) return zepto.Z()\r\n // Optimize for string selectors\r\n else if (typeof selector == 'string') {\r\n selector = selector.trim()\r\n // If it's a html fragment, create nodes from it\r\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\r\n // is thrown if the fragment doesn't begin with <\r\n if (selector[0] == '<' && fragmentRE.test(selector))\r\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\r\n // If there's a context, create a collection on that context first, and select\r\n // nodes from there\r\n else if (context !== undefined) return $(context).find(selector)\r\n // If it's a CSS selector, use it to select nodes.\r\n else dom = zepto.qsa(document, selector)\r\n }\r\n // If a function is given, call it when the DOM is ready\r\n else if (isFunction(selector)) return $(document).ready(selector)\r\n // If a Zepto collection is given, just return it\r\n else if (zepto.isZ(selector)) return selector\r\n else {\r\n // normalize array if an array of nodes is given\r\n if (isArray(selector)) dom = compact(selector)\r\n // Wrap DOM nodes.\r\n else if (isObject(selector))\r\n dom = [selector], selector = null\r\n // If it's a html fragment, create nodes from it\r\n else if (fragmentRE.test(selector))\r\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\r\n // If there's a context, create a collection on that context first, and select\r\n // nodes from there\r\n else if (context !== undefined) return $(context).find(selector)\r\n // And last but no least, if it's a CSS selector, use it to select nodes.\r\n else dom = zepto.qsa(document, selector)\r\n }\r\n // create a new Zepto collection from the nodes found\r\n return zepto.Z(dom, selector)\r\n }\r\n\r\n // `$` will be the base `Zepto` object. When calling this\r\n // function just call `$.zepto.init, which makes the implementation\r\n // details of selecting nodes and creating Zepto collections\r\n // patchable in plugins.\r\n $ = function(selector, context){\r\n return zepto.init(selector, context)\r\n }\r\n\r\n function extend(target, source, deep) {\r\n for (key in source)\r\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\r\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\r\n target[key] = {}\r\n if (isArray(source[key]) && !isArray(target[key]))\r\n target[key] = []\r\n extend(target[key], source[key], deep)\r\n }\r\n else if (source[key] !== undefined) target[key] = source[key]\r\n }\r\n\r\n // Copy all but undefined properties from one or more\r\n // objects to the `target` object.\r\n $.extend = function(target){\r\n var deep, args = slice.call(arguments, 1)\r\n if (typeof target == 'boolean') {\r\n deep = target\r\n target = args.shift()\r\n }\r\n args.forEach(function(arg){ extend(target, arg, deep) })\r\n return target\r\n }\r\n\r\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\r\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\r\n // This method can be overridden in plugins.\r\n zepto.qsa = function(element, selector){\r\n var found,\r\n maybeID = selector[0] == '#',\r\n maybeClass = !maybeID && selector[0] == '.',\r\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\r\n isSimple = simpleSelectorRE.test(nameOnly)\r\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById\r\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\r\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\r\n slice.call(\r\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\r\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\r\n element.getElementsByTagName(selector) : // Or a tag\r\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\r\n )\r\n }\r\n\r\n function filtered(nodes, selector) {\r\n return selector == null ? $(nodes) : $(nodes).filter(selector)\r\n }\r\n\r\n $.contains = document.documentElement.contains ?\r\n function(parent, node) {\r\n return parent !== node && parent.contains(node)\r\n } :\r\n function(parent, node) {\r\n while (node && (node = node.parentNode))\r\n if (node === parent) return true\r\n return false\r\n }\r\n\r\n function funcArg(context, arg, idx, payload) {\r\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\r\n }\r\n\r\n function setAttribute(node, name, value) {\r\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\r\n }\r\n\r\n // access className property while respecting SVGAnimatedString\r\n function className(node, value){\r\n var klass = node.className || '',\r\n svg = klass && klass.baseVal !== undefined\r\n\r\n if (value === undefined) return svg ? klass.baseVal : klass\r\n svg ? (klass.baseVal = value) : (node.className = value)\r\n }\r\n\r\n // \"true\" => true\r\n // \"false\" => false\r\n // \"null\" => null\r\n // \"42\" => 42\r\n // \"42.5\" => 42.5\r\n // \"08\" => \"08\"\r\n // JSON => parse if valid\r\n // String => self\r\n function deserializeValue(value) {\r\n try {\r\n return value ?\r\n value == \"true\" ||\r\n ( value == \"false\" ? false :\r\n value == \"null\" ? null :\r\n +value + \"\" == value ? +value :\r\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\r\n value )\r\n : value\r\n } catch(e) {\r\n return value\r\n }\r\n }\r\n\r\n $.type = type\r\n $.isFunction = isFunction\r\n $.isWindow = isWindow\r\n $.isArray = isArray\r\n $.isPlainObject = isPlainObject\r\n\r\n $.isEmptyObject = function(obj) {\r\n var name\r\n for (name in obj) return false\r\n return true\r\n }\r\n\r\n $.isNumeric = function(val) {\r\n var num = Number(val), type = typeof val\r\n return val != null && type != 'boolean' &&\r\n (type != 'string' || val.length) &&\r\n !isNaN(num) && isFinite(num) || false\r\n }\r\n\r\n $.inArray = function(elem, array, i){\r\n return emptyArray.indexOf.call(array, elem, i)\r\n }\r\n\r\n $.camelCase = camelize\r\n $.trim = function(str) {\r\n return str == null ? \"\" : String.prototype.trim.call(str)\r\n }\r\n\r\n // plugin compatibility\r\n $.uuid = 0\r\n $.support = { }\r\n $.expr = { }\r\n $.noop = function() {}\r\n\r\n $.map = function(elements, callback){\r\n var value, values = [], i, key\r\n if (likeArray(elements))\r\n for (i = 0; i < elements.length; i++) {\r\n value = callback(elements[i], i)\r\n if (value != null) values.push(value)\r\n }\r\n else\r\n for (key in elements) {\r\n value = callback(elements[key], key)\r\n if (value != null) values.push(value)\r\n }\r\n return flatten(values)\r\n }\r\n\r\n $.each = function(elements, callback){\r\n var i, key\r\n if (likeArray(elements)) {\r\n for (i = 0; i < elements.length; i++)\r\n if (callback.call(elements[i], i, elements[i]) === false) return elements\r\n } else {\r\n for (key in elements)\r\n if (callback.call(elements[key], key, elements[key]) === false) return elements\r\n }\r\n\r\n return elements\r\n }\r\n\r\n $.grep = function(elements, callback){\r\n return filter.call(elements, callback)\r\n }\r\n\r\n if (window.JSON) $.parseJSON = JSON.parse\r\n\r\n // Populate the class2type map\r\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\r\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\r\n })\r\n\r\n // Define methods that will be available on all\r\n // Zepto collections\r\n $.fn = {\r\n constructor: zepto.Z,\r\n length: 0,\r\n\r\n // Because a collection acts like an array\r\n // copy over these useful array functions.\r\n forEach: emptyArray.forEach,\r\n reduce: emptyArray.reduce,\r\n push: emptyArray.push,\r\n sort: emptyArray.sort,\r\n splice: emptyArray.splice,\r\n indexOf: emptyArray.indexOf,\r\n concat: function(){\r\n var i, value, args = []\r\n for (i = 0; i < arguments.length; i++) {\r\n value = arguments[i]\r\n args[i] = zepto.isZ(value) ? value.toArray() : value\r\n }\r\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\r\n },\r\n\r\n // `map` and `slice` in the jQuery API work differently\r\n // from their array counterparts\r\n map: function(fn){\r\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\r\n },\r\n slice: function(){\r\n return $(slice.apply(this, arguments))\r\n },\r\n\r\n ready: function(callback){\r\n // need to check if document.body exists for IE as that browser reports\r\n // document ready when it hasn't yet created the body element\r\n if (readyRE.test(document.readyState) && document.body) callback($)\r\n else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)\r\n return this\r\n },\r\n get: function(idx){\r\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\r\n },\r\n toArray: function(){ return this.get() },\r\n size: function(){\r\n return this.length\r\n },\r\n remove: function(){\r\n return this.each(function(){\r\n if (this.parentNode != null)\r\n this.parentNode.removeChild(this)\r\n })\r\n },\r\n each: function(callback){\r\n emptyArray.every.call(this, function(el, idx){\r\n return callback.call(el, idx, el) !== false\r\n })\r\n return this\r\n },\r\n filter: function(selector){\r\n if (isFunction(selector)) return this.not(this.not(selector))\r\n return $(filter.call(this, function(element){\r\n return zepto.matches(element, selector)\r\n }))\r\n },\r\n add: function(selector,context){\r\n return $(uniq(this.concat($(selector,context))))\r\n },\r\n is: function(selector){\r\n return this.length > 0 && zepto.matches(this[0], selector)\r\n },\r\n not: function(selector){\r\n var nodes=[]\r\n if (isFunction(selector) && selector.call !== undefined)\r\n this.each(function(idx){\r\n if (!selector.call(this,idx)) nodes.push(this)\r\n })\r\n else {\r\n var excludes = typeof selector == 'string' ? this.filter(selector) :\r\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\r\n this.forEach(function(el){\r\n if (excludes.indexOf(el) < 0) nodes.push(el)\r\n })\r\n }\r\n return $(nodes)\r\n },\r\n has: function(selector){\r\n return this.filter(function(){\r\n return isObject(selector) ?\r\n $.contains(this, selector) :\r\n $(this).find(selector).size()\r\n })\r\n },\r\n eq: function(idx){\r\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\r\n },\r\n first: function(){\r\n var el = this[0]\r\n return el && !isObject(el) ? el : $(el)\r\n },\r\n last: function(){\r\n var el = this[this.length - 1]\r\n return el && !isObject(el) ? el : $(el)\r\n },\r\n find: function(selector){\r\n var result, $this = this\r\n if (!selector) result = $()\r\n else if (typeof selector == 'object')\r\n result = $(selector).filter(function(){\r\n var node = this\r\n return emptyArray.some.call($this, function(parent){\r\n return $.contains(parent, node)\r\n })\r\n })\r\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\r\n else result = this.map(function(){ return zepto.qsa(this, selector) })\r\n return result\r\n },\r\n closest: function(selector, context){\r\n var nodes = [], collection = typeof selector == 'object' && $(selector)\r\n this.each(function(_, node){\r\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\r\n node = node !== context && !isDocument(node) && node.parentNode\r\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\r\n })\r\n return $(nodes)\r\n },\r\n parents: function(selector){\r\n var ancestors = [], nodes = this\r\n while (nodes.length > 0)\r\n nodes = $.map(nodes, function(node){\r\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\r\n ancestors.push(node)\r\n return node\r\n }\r\n })\r\n return filtered(ancestors, selector)\r\n },\r\n parent: function(selector){\r\n return filtered(uniq(this.pluck('parentNode')), selector)\r\n },\r\n children: function(selector){\r\n return filtered(this.map(function(){ return children(this) }), selector)\r\n },\r\n contents: function() {\r\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\r\n },\r\n siblings: function(selector){\r\n return filtered(this.map(function(i, el){\r\n return filter.call(children(el.parentNode), function(child){ return child!==el })\r\n }), selector)\r\n },\r\n empty: function(){\r\n return this.each(function(){ this.innerHTML = '' })\r\n },\r\n // `pluck` is borrowed from Prototype.js\r\n pluck: function(property){\r\n return $.map(this, function(el){ return el[property] })\r\n },\r\n show: function(){\r\n return this.each(function(){\r\n this.style.display == \"none\" && (this.style.display = '')\r\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\")\r\n this.style.display = defaultDisplay(this.nodeName)\r\n })\r\n },\r\n replaceWith: function(newContent){\r\n return this.before(newContent).remove()\r\n },\r\n wrap: function(structure){\r\n var func = isFunction(structure)\r\n if (this[0] && !func)\r\n var dom = $(structure).get(0),\r\n clone = dom.parentNode || this.length > 1\r\n\r\n return this.each(function(index){\r\n $(this).wrapAll(\r\n func ? structure.call(this, index) :\r\n clone ? dom.cloneNode(true) : dom\r\n )\r\n })\r\n },\r\n wrapAll: function(structure){\r\n if (this[0]) {\r\n $(this[0]).before(structure = $(structure))\r\n var children\r\n // drill down to the inmost element\r\n while ((children = structure.children()).length) structure = children.first()\r\n $(structure).append(this)\r\n }\r\n return this\r\n },\r\n wrapInner: function(structure){\r\n var func = isFunction(structure)\r\n return this.each(function(index){\r\n var self = $(this), contents = self.contents(),\r\n dom = func ? structure.call(this, index) : structure\r\n contents.length ? contents.wrapAll(dom) : self.append(dom)\r\n })\r\n },\r\n unwrap: function(){\r\n this.parent().each(function(){\r\n $(this).replaceWith($(this).children())\r\n })\r\n return this\r\n },\r\n clone: function(){\r\n return this.map(function(){ return this.cloneNode(true) })\r\n },\r\n hide: function(){\r\n return this.css(\"display\", \"none\")\r\n },\r\n toggle: function(setting){\r\n return this.each(function(){\r\n var el = $(this)\r\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\r\n })\r\n },\r\n prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },\r\n next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },\r\n html: function(html){\r\n return 0 in arguments ?\r\n this.each(function(idx){\r\n var originHtml = this.innerHTML\r\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\r\n }) :\r\n (0 in this ? this[0].innerHTML : null)\r\n },\r\n text: function(text){\r\n return 0 in arguments ?\r\n this.each(function(idx){\r\n var newText = funcArg(this, text, idx, this.textContent)\r\n this.textContent = newText == null ? '' : ''+newText\r\n }) :\r\n (0 in this ? this.pluck('textContent').join(\"\") : null)\r\n },\r\n attr: function(name, value){\r\n var result\r\n return (typeof name == 'string' && !(1 in arguments)) ?\r\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\r\n this.each(function(idx){\r\n if (this.nodeType !== 1) return\r\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\r\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\r\n })\r\n },\r\n removeAttr: function(name){\r\n return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){\r\n setAttribute(this, attribute)\r\n }, this)})\r\n },\r\n prop: function(name, value){\r\n name = propMap[name] || name\r\n return (1 in arguments) ?\r\n this.each(function(idx){\r\n this[name] = funcArg(this, value, idx, this[name])\r\n }) :\r\n (this[0] && this[0][name])\r\n },\r\n removeProp: function(name){\r\n name = propMap[name] || name\r\n return this.each(function(){ delete this[name] })\r\n },\r\n data: function(name, value){\r\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()\r\n\r\n var data = (1 in arguments) ?\r\n this.attr(attrName, value) :\r\n this.attr(attrName)\r\n\r\n return data !== null ? deserializeValue(data) : undefined\r\n },\r\n val: function(value){\r\n if (0 in arguments) {\r\n if (value == null) value = \"\"\r\n return this.each(function(idx){\r\n this.value = funcArg(this, value, idx, this.value)\r\n })\r\n } else {\r\n return this[0] && (this[0].multiple ?\r\n $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :\r\n this[0].value)\r\n }\r\n },\r\n offset: function(coordinates){\r\n if (coordinates) return this.each(function(index){\r\n var $this = $(this),\r\n coords = funcArg(this, coordinates, index, $this.offset()),\r\n parentOffset = $this.offsetParent().offset(),\r\n props = {\r\n top: coords.top - parentOffset.top,\r\n left: coords.left - parentOffset.left\r\n }\r\n\r\n if ($this.css('position') == 'static') props['position'] = 'relative'\r\n $this.css(props)\r\n })\r\n if (!this.length) return null\r\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\r\n return {top: 0, left: 0}\r\n var obj = this[0].getBoundingClientRect()\r\n return {\r\n left: obj.left + window.pageXOffset,\r\n top: obj.top + window.pageYOffset,\r\n width: Math.round(obj.width),\r\n height: Math.round(obj.height)\r\n }\r\n },\r\n css: function(property, value){\r\n if (arguments.length < 2) {\r\n var element = this[0]\r\n if (typeof property == 'string') {\r\n if (!element) return\r\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)\r\n } else if (isArray(property)) {\r\n if (!element) return\r\n var props = {}\r\n var computedStyle = getComputedStyle(element, '')\r\n $.each(property, function(_, prop){\r\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\r\n })\r\n return props\r\n }\r\n }\r\n\r\n var css = ''\r\n if (type(property) == 'string') {\r\n if (!value && value !== 0)\r\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\r\n else\r\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\r\n } else {\r\n for (key in property)\r\n if (!property[key] && property[key] !== 0)\r\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\r\n else\r\n css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'\r\n }\r\n\r\n return this.each(function(){ this.style.cssText += ';' + css })\r\n },\r\n index: function(element){\r\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\r\n },\r\n hasClass: function(name){\r\n if (!name) return false\r\n return emptyArray.some.call(this, function(el){\r\n return this.test(className(el))\r\n }, classRE(name))\r\n },\r\n addClass: function(name){\r\n if (!name) return this\r\n return this.each(function(idx){\r\n if (!('className' in this)) return\r\n classList = []\r\n var cls = className(this), newName = funcArg(this, name, idx, cls)\r\n newName.split(/\\s+/g).forEach(function(klass){\r\n if (!$(this).hasClass(klass)) classList.push(klass)\r\n }, this)\r\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\r\n })\r\n },\r\n removeClass: function(name){\r\n return this.each(function(idx){\r\n if (!('className' in this)) return\r\n if (name === undefined) return className(this, '')\r\n classList = className(this)\r\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\r\n classList = classList.replace(classRE(klass), \" \")\r\n })\r\n className(this, classList.trim())\r\n })\r\n },\r\n toggleClass: function(name, when){\r\n if (!name) return this\r\n return this.each(function(idx){\r\n var $this = $(this), names = funcArg(this, name, idx, className(this))\r\n names.split(/\\s+/g).forEach(function(klass){\r\n (when === undefined ? !$this.hasClass(klass) : when) ?\r\n $this.addClass(klass) : $this.removeClass(klass)\r\n })\r\n })\r\n },\r\n scrollTop: function(value){\r\n if (!this.length) return\r\n var hasScrollTop = 'scrollTop' in this[0]\r\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\r\n return this.each(hasScrollTop ?\r\n function(){ this.scrollTop = value } :\r\n function(){ this.scrollTo(this.scrollX, value) })\r\n },\r\n scrollLeft: function(value){\r\n if (!this.length) return\r\n var hasScrollLeft = 'scrollLeft' in this[0]\r\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\r\n return this.each(hasScrollLeft ?\r\n function(){ this.scrollLeft = value } :\r\n function(){ this.scrollTo(value, this.scrollY) })\r\n },\r\n position: function() {\r\n if (!this.length) return\r\n\r\n var elem = this[0],\r\n // Get *real* offsetParent\r\n offsetParent = this.offsetParent(),\r\n // Get correct offsets\r\n offset = this.offset(),\r\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\r\n\r\n // Subtract element margins\r\n // note: when an element has margin: auto the offsetLeft and marginLeft\r\n // are the same in Safari causing offset.left to incorrectly be 0\r\n offset.top -= parseFloat( $(elem).css('margin-top') ) || 0\r\n offset.left -= parseFloat( $(elem).css('margin-left') ) || 0\r\n\r\n // Add offsetParent borders\r\n parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0\r\n parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0\r\n\r\n // Subtract the two offsets\r\n return {\r\n top: offset.top - parentOffset.top,\r\n left: offset.left - parentOffset.left\r\n }\r\n },\r\n offsetParent: function() {\r\n return this.map(function(){\r\n var parent = this.offsetParent || document.body\r\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\r\n parent = parent.offsetParent\r\n return parent\r\n })\r\n }\r\n }\r\n\r\n // for now\r\n $.fn.detach = $.fn.remove\r\n\r\n // Generate the `width` and `height` functions\r\n ;['width', 'height'].forEach(function(dimension){\r\n var dimensionProperty =\r\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\r\n\r\n $.fn[dimension] = function(value){\r\n var offset, el = this[0]\r\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :\r\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\r\n (offset = this.offset()) && offset[dimension]\r\n else return this.each(function(idx){\r\n el = $(this)\r\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\r\n })\r\n }\r\n })\r\n\r\n function traverseNode(node, fun) {\r\n fun(node)\r\n for (var i = 0, len = node.childNodes.length; i < len; i++)\r\n traverseNode(node.childNodes[i], fun)\r\n }\r\n\r\n // Generate the `after`, `prepend`, `before`, `append`,\r\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\r\n adjacencyOperators.forEach(function(operator, operatorIndex) {\r\n var inside = operatorIndex % 2 //=> prepend, append\r\n\r\n $.fn[operator] = function(){\r\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\r\n var argType, nodes = $.map(arguments, function(arg) {\r\n var arr = []\r\n argType = type(arg)\r\n if (argType == \"array\") {\r\n arg.forEach(function(el) {\r\n if (el.nodeType !== undefined) return arr.push(el)\r\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\r\n arr = arr.concat(zepto.fragment(el))\r\n })\r\n return arr\r\n }\r\n return argType == \"object\" || arg == null ?\r\n arg : zepto.fragment(arg)\r\n }),\r\n parent, copyByClone = this.length > 1\r\n if (nodes.length < 1) return this\r\n\r\n return this.each(function(_, target){\r\n parent = inside ? target : target.parentNode\r\n\r\n // convert all methods to a \"before\" operation\r\n target = operatorIndex == 0 ? target.nextSibling :\r\n operatorIndex == 1 ? target.firstChild :\r\n operatorIndex == 2 ? target :\r\n null\r\n\r\n var parentInDocument = $.contains(document.documentElement, parent)\r\n\r\n nodes.forEach(function(node){\r\n if (copyByClone) node = node.cloneNode(true)\r\n else if (!parent) return $(node).remove()\r\n\r\n parent.insertBefore(node, target)\r\n if (parentInDocument) traverseNode(node, function(el){\r\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\r\n (!el.type || el.type === 'text/javascript') && !el.src){\r\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\r\n target['eval'].call(target, el.innerHTML)\r\n }\r\n })\r\n })\r\n })\r\n }\r\n\r\n // after => insertAfter\r\n // prepend => prependTo\r\n // before => insertBefore\r\n // append => appendTo\r\n $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){\r\n $(html)[operator](this)\r\n return this\r\n }\r\n })\r\n\r\n zepto.Z.prototype = Z.prototype = $.fn\r\n\r\n // Export internal API functions in the `$.zepto` namespace\r\n zepto.uniq = uniq\r\n zepto.deserializeValue = deserializeValue\r\n $.zepto = zepto\r\n\r\n return $\r\n})()\r\n\r\nwindow.Zepto = Zepto\r\nwindow.$ === undefined && (window.$ = Zepto)\r\n\r\n;(function($){\r\n var _zid = 1, undefined,\r\n slice = Array.prototype.slice,\r\n isFunction = $.isFunction,\r\n isString = function(obj){ return typeof obj == 'string' },\r\n handlers = {},\r\n specialEvents={},\r\n focusinSupported = 'onfocusin' in window,\r\n focus = { focus: 'focusin', blur: 'focusout' },\r\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }\r\n\r\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents'\r\n\r\n function zid(element) {\r\n return element._zid || (element._zid = _zid++)\r\n }\r\n function findHandlers(element, event, fn, selector) {\r\n event = parse(event)\r\n if (event.ns) var matcher = matcherFor(event.ns)\r\n return (handlers[zid(element)] || []).filter(function(handler) {\r\n return handler\r\n && (!event.e || handler.e == event.e)\r\n && (!event.ns || matcher.test(handler.ns))\r\n && (!fn || zid(handler.fn) === zid(fn))\r\n && (!selector || handler.sel == selector)\r\n })\r\n }\r\n function parse(event) {\r\n var parts = ('' + event).split('.')\r\n return {e: parts[0], ns: parts.slice(1).sort().join(' ')}\r\n }\r\n function matcherFor(ns) {\r\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)')\r\n }\r\n\r\n function eventCapture(handler, captureSetting) {\r\n return handler.del &&\r\n (!focusinSupported && (handler.e in focus)) ||\r\n !!captureSetting\r\n }\r\n\r\n function realEvent(type) {\r\n return hover[type] || (focusinSupported && focus[type]) || type\r\n }\r\n\r\n function add(element, events, fn, data, selector, delegator, capture){\r\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\r\n events.split(/\\s/).forEach(function(event){\r\n if (event == 'ready') return $(document).ready(fn)\r\n var handler = parse(event)\r\n handler.fn = fn\r\n handler.sel = selector\r\n // emulate mouseenter, mouseleave\r\n if (handler.e in hover) fn = function(e){\r\n var related = e.relatedTarget\r\n if (!related || (related !== this && !$.contains(this, related)))\r\n return handler.fn.apply(this, arguments)\r\n }\r\n handler.del = delegator\r\n var callback = delegator || fn\r\n handler.proxy = function(e){\r\n e = compatible(e)\r\n if (e.isImmediatePropagationStopped()) return\r\n e.data = data\r\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\r\n if (result === false) e.preventDefault(), e.stopPropagation()\r\n return result\r\n }\r\n handler.i = set.length\r\n set.push(handler)\r\n if ('addEventListener' in element)\r\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\r\n })\r\n }\r\n function remove(element, events, fn, selector, capture){\r\n var id = zid(element)\r\n ;(events || '').split(/\\s/).forEach(function(event){\r\n findHandlers(element, event, fn, selector).forEach(function(handler){\r\n delete handlers[id][handler.i]\r\n if ('removeEventListener' in element)\r\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\r\n })\r\n })\r\n }\r\n\r\n $.event = { add: add, remove: remove }\r\n\r\n $.proxy = function(fn, context) {\r\n var args = (2 in arguments) && slice.call(arguments, 2)\r\n if (isFunction(fn)) {\r\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\r\n proxyFn._zid = zid(fn)\r\n return proxyFn\r\n } else if (isString(context)) {\r\n if (args) {\r\n args.unshift(fn[context], fn)\r\n return $.proxy.apply(null, args)\r\n } else {\r\n return $.proxy(fn[context], fn)\r\n }\r\n } else {\r\n throw new TypeError(\"expected function\")\r\n }\r\n }\r\n\r\n $.fn.bind = function(event, data, callback){\r\n return this.on(event, data, callback)\r\n }\r\n $.fn.unbind = function(event, callback){\r\n return this.off(event, callback)\r\n }\r\n $.fn.one = function(event, selector, data, callback){\r\n return this.on(event, selector, data, callback, 1)\r\n }\r\n\r\n var returnTrue = function(){return true},\r\n returnFalse = function(){return false},\r\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\r\n eventMethods = {\r\n preventDefault: 'isDefaultPrevented',\r\n stopImmediatePropagation: 'isImmediatePropagationStopped',\r\n stopPropagation: 'isPropagationStopped'\r\n }\r\n\r\n function compatible(event, source) {\r\n if (source || !event.isDefaultPrevented) {\r\n source || (source = event)\r\n\r\n $.each(eventMethods, function(name, predicate) {\r\n var sourceMethod = source[name]\r\n event[name] = function(){\r\n this[predicate] = returnTrue\r\n return sourceMethod && sourceMethod.apply(source, arguments)\r\n }\r\n event[predicate] = returnFalse\r\n })\r\n\r\n event.timeStamp || (event.timeStamp = Date.now())\r\n\r\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\r\n 'returnValue' in source ? source.returnValue === false :\r\n source.getPreventDefault && source.getPreventDefault())\r\n event.isDefaultPrevented = returnTrue\r\n }\r\n return event\r\n }\r\n\r\n function createProxy(event) {\r\n var key, proxy = { originalEvent: event }\r\n for (key in event)\r\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\r\n\r\n return compatible(proxy, event)\r\n }\r\n\r\n $.fn.delegate = function(selector, event, callback){\r\n return this.on(event, selector, callback)\r\n }\r\n $.fn.undelegate = function(selector, event, callback){\r\n return this.off(event, selector, callback)\r\n }\r\n\r\n $.fn.live = function(event, callback){\r\n $(document.body).delegate(this.selector, event, callback)\r\n return this\r\n }\r\n $.fn.die = function(event, callback){\r\n $(document.body).undelegate(this.selector, event, callback)\r\n return this\r\n }\r\n\r\n $.fn.on = function(event, selector, data, callback, one){\r\n var autoRemove, delegator, $this = this\r\n if (event && !isString(event)) {\r\n $.each(event, function(type, fn){\r\n $this.on(type, selector, data, fn, one)\r\n })\r\n return $this\r\n }\r\n\r\n if (!isString(selector) && !isFunction(callback) && callback !== false)\r\n callback = data, data = selector, selector = undefined\r\n if (callback === undefined || data === false)\r\n callback = data, data = undefined\r\n\r\n if (callback === false) callback = returnFalse\r\n\r\n return $this.each(function(_, element){\r\n if (one) autoRemove = function(e){\r\n remove(element, e.type, callback)\r\n return callback.apply(this, arguments)\r\n }\r\n\r\n if (selector) delegator = function(e){\r\n var evt, match = $(e.target).closest(selector, element).get(0)\r\n if (match && match !== element) {\r\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\r\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\r\n }\r\n }\r\n\r\n add(element, event, callback, data, selector, delegator || autoRemove)\r\n })\r\n }\r\n $.fn.off = function(event, selector, callback){\r\n var $this = this\r\n if (event && !isString(event)) {\r\n $.each(event, function(type, fn){\r\n $this.off(type, selector, fn)\r\n })\r\n return $this\r\n }\r\n\r\n if (!isString(selector) && !isFunction(callback) && callback !== false)\r\n callback = selector, selector = undefined\r\n\r\n if (callback === false) callback = returnFalse\r\n\r\n return $this.each(function(){\r\n remove(this, event, callback, selector)\r\n })\r\n }\r\n\r\n $.fn.trigger = function(event, args){\r\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\r\n event._args = args\r\n return this.each(function(){\r\n // handle focus(), blur() by calling them directly\r\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\r\n // items in the collection might not be DOM elements\r\n else if ('dispatchEvent' in this) this.dispatchEvent(event)\r\n else $(this).triggerHandler(event, args)\r\n })\r\n }\r\n\r\n // triggers event handlers on current element just as if an event occurred,\r\n // doesn't trigger an actual event, doesn't bubble\r\n $.fn.triggerHandler = function(event, args){\r\n var e, result\r\n this.each(function(i, element){\r\n e = createProxy(isString(event) ? $.Event(event) : event)\r\n e._args = args\r\n e.target = element\r\n $.each(findHandlers(element, event.type || event), function(i, handler){\r\n result = handler.proxy(e)\r\n if (e.isImmediatePropagationStopped()) return false\r\n })\r\n })\r\n return result\r\n }\r\n\r\n // shortcut methods for `.bind(event, fn)` for each event type\r\n ;('focusin focusout focus blur load resize scroll unload click dblclick '+\r\n 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+\r\n 'change select keydown keypress keyup error').split(' ').forEach(function(event) {\r\n $.fn[event] = function(callback) {\r\n return (0 in arguments) ?\r\n this.bind(event, callback) :\r\n this.trigger(event)\r\n }\r\n })\r\n\r\n $.Event = function(type, props) {\r\n if (!isString(type)) props = type, type = props.type\r\n var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true\r\n if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name])\r\n event.initEvent(type, bubbles, true)\r\n return compatible(event)\r\n }\r\n\r\n})(Zepto)\r\n\r\n;(function($){\r\n var jsonpID = +new Date(),\r\n document = window.document,\r\n key,\r\n name,\r\n rscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\r\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\r\n xmlTypeRE = /^(?:text|application)\\/xml/i,\r\n jsonType = 'application/json',\r\n htmlType = 'text/html',\r\n blankRE = /^\\s*$/,\r\n originAnchor = document.createElement('a')\r\n\r\n originAnchor.href = window.location.href\r\n\r\n // trigger a custom event and return false if it was cancelled\r\n function triggerAndReturn(context, eventName, data) {\r\n var event = $.Event(eventName)\r\n $(context).trigger(event, data)\r\n return !event.isDefaultPrevented()\r\n }\r\n\r\n // trigger an Ajax \"global\" event\r\n function triggerGlobal(settings, context, eventName, data) {\r\n if (settings.global) return triggerAndReturn(context || document, eventName, data)\r\n }\r\n\r\n // Number of active Ajax requests\r\n $.active = 0\r\n\r\n function ajaxStart(settings) {\r\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart')\r\n }\r\n function ajaxStop(settings) {\r\n if (settings.global && !(--$.active)) triggerGlobal(settings, null, 'ajaxStop')\r\n }\r\n\r\n // triggers an extra global event \"ajaxBeforeSend\" that's like \"ajaxSend\" but cancelable\r\n function ajaxBeforeSend(xhr, settings) {\r\n var context = settings.context\r\n if (settings.beforeSend.call(context, xhr, settings) === false ||\r\n triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false)\r\n return false\r\n\r\n triggerGlobal(settings, context, 'ajaxSend', [xhr, settings])\r\n }\r\n function ajaxSuccess(data, xhr, settings, deferred) {\r\n var context = settings.context, status = 'success'\r\n settings.success.call(context, data, status, xhr)\r\n if (deferred) deferred.resolveWith(context, [data, status, xhr])\r\n triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data])\r\n ajaxComplete(status, xhr, settings)\r\n }\r\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\r\n function ajaxError(error, type, xhr, settings, deferred) {\r\n var context = settings.context\r\n settings.error.call(context, xhr, type, error)\r\n if (deferred) deferred.rejectWith(context, [xhr, type, error])\r\n triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type])\r\n ajaxComplete(type, xhr, settings)\r\n }\r\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\r\n function ajaxComplete(status, xhr, settings) {\r\n var context = settings.context\r\n settings.complete.call(context, xhr, status)\r\n triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings])\r\n ajaxStop(settings)\r\n }\r\n\r\n function ajaxDataFilter(data, type, settings) {\r\n if (settings.dataFilter == empty) return data\r\n var context = settings.context\r\n return settings.dataFilter.call(context, data, type)\r\n }\r\n\r\n // Empty function, used as default callback\r\n function empty() {}\r\n\r\n $.ajaxJSONP = function(options, deferred){\r\n if (!('type' in options)) return $.ajax(options)\r\n\r\n var _callbackName = options.jsonpCallback,\r\n callbackName = ($.isFunction(_callbackName) ?\r\n _callbackName() : _callbackName) || ('Zepto' + (jsonpID++)),\r\n script = document.createElement('script'),\r\n originalCallback = window[callbackName],\r\n responseData,\r\n abort = function(errorType) {\r\n $(script).triggerHandler('error', errorType || 'abort')\r\n },\r\n xhr = { abort: abort }, abortTimeout\r\n\r\n if (deferred) deferred.promise(xhr)\r\n\r\n $(script).on('load error', function(e, errorType){\r\n clearTimeout(abortTimeout)\r\n $(script).off().remove()\r\n\r\n if (e.type == 'error' || !responseData) {\r\n ajaxError(null, errorType || 'error', xhr, options, deferred)\r\n } else {\r\n ajaxSuccess(responseData[0], xhr, options, deferred)\r\n }\r\n\r\n window[callbackName] = originalCallback\r\n if (responseData && $.isFunction(originalCallback))\r\n originalCallback(responseData[0])\r\n\r\n originalCallback = responseData = undefined\r\n })\r\n\r\n if (ajaxBeforeSend(xhr, options) === false) {\r\n abort('abort')\r\n return xhr\r\n }\r\n\r\n window[callbackName] = function(){\r\n responseData = arguments\r\n }\r\n\r\n script.src = options.url.replace(/\\?(.+)=\\?/, '?$1=' + callbackName)\r\n document.head.appendChild(script)\r\n\r\n if (options.timeout > 0) abortTimeout = setTimeout(function(){\r\n abort('timeout')\r\n }, options.timeout)\r\n\r\n return xhr\r\n }\r\n\r\n $.ajaxSettings = {\r\n // Default type of request\r\n type: 'GET',\r\n // Callback that is executed before request\r\n beforeSend: empty,\r\n // Callback that is executed if the request succeeds\r\n success: empty,\r\n // Callback that is executed the the server drops error\r\n error: empty,\r\n // Callback that is executed on request complete (both: error and success)\r\n complete: empty,\r\n // The context for the callbacks\r\n context: null,\r\n // Whether to trigger \"global\" Ajax events\r\n global: true,\r\n // Transport\r\n xhr: function () {\r\n return new window.XMLHttpRequest()\r\n },\r\n // MIME types mapping\r\n // IIS returns Javascript as \"application/x-javascript\"\r\n accepts: {\r\n script: 'text/javascript, application/javascript, application/x-javascript',\r\n json: jsonType,\r\n xml: 'application/xml, text/xml',\r\n html: htmlType,\r\n text: 'text/plain'\r\n },\r\n // Whether the request is to another domain\r\n crossDomain: false,\r\n // Default timeout\r\n timeout: 0,\r\n // Whether data should be serialized to string\r\n processData: true,\r\n // Whether the browser should be allowed to cache GET responses\r\n cache: true,\r\n //Used to handle the raw response data of XMLHttpRequest.\r\n //This is a pre-filtering function to sanitize the response.\r\n //The sanitized response should be returned\r\n dataFilter: empty\r\n }\r\n\r\n function mimeToDataType(mime) {\r\n if (mime) mime = mime.split(';', 2)[0]\r\n return mime && ( mime == htmlType ? 'html' :\r\n mime == jsonType ? 'json' :\r\n scriptTypeRE.test(mime) ? 'script' :\r\n xmlTypeRE.test(mime) && 'xml' ) || 'text'\r\n }\r\n\r\n function appendQuery(url, query) {\r\n if (query == '') return url\r\n return (url + '&' + query).replace(/[&?]{1,2}/, '?')\r\n }\r\n\r\n // serialize payload and append it to the URL for GET requests\r\n function serializeData(options) {\r\n if (options.processData && options.data && $.type(options.data) != \"string\")\r\n options.data = $.param(options.data, options.traditional)\r\n if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType))\r\n options.url = appendQuery(options.url, options.data), options.data = undefined\r\n }\r\n\r\n $.ajax = function(options){\r\n var settings = $.extend({}, options || {}),\r\n deferred = $.Deferred && $.Deferred(),\r\n urlAnchor, hashIndex\r\n for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key]\r\n\r\n ajaxStart(settings)\r\n\r\n if (!settings.crossDomain) {\r\n urlAnchor = document.createElement('a')\r\n urlAnchor.href = settings.url\r\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\r\n urlAnchor.href = urlAnchor.href\r\n settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host)\r\n }\r\n\r\n if (!settings.url) settings.url = window.location.toString()\r\n if ((hashIndex = settings.url.indexOf('#')) > -1) settings.url = settings.url.slice(0, hashIndex)\r\n serializeData(settings)\r\n\r\n var dataType = settings.dataType, hasPlaceholder = /\\?.+=\\?/.test(settings.url)\r\n if (hasPlaceholder) dataType = 'jsonp'\r\n\r\n if (settings.cache === false || (\r\n (!options || options.cache !== true) &&\r\n ('script' == dataType || 'jsonp' == dataType)\r\n ))\r\n settings.url = appendQuery(settings.url, '_=' + Date.now())\r\n\r\n if ('jsonp' == dataType) {\r\n if (!hasPlaceholder)\r\n settings.url = appendQuery(settings.url,\r\n settings.jsonp ? (settings.jsonp + '=?') : settings.jsonp === false ? '' : 'callback=?')\r\n return $.ajaxJSONP(settings, deferred)\r\n }\r\n\r\n var mime = settings.accepts[dataType],\r\n headers = { },\r\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] },\r\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\r\n xhr = settings.xhr(),\r\n nativeSetHeader = xhr.setRequestHeader,\r\n abortTimeout\r\n\r\n if (deferred) deferred.promise(xhr)\r\n\r\n if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest')\r\n setHeader('Accept', mime || '*/*')\r\n if (mime = settings.mimeType || mime) {\r\n if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0]\r\n xhr.overrideMimeType && xhr.overrideMimeType(mime)\r\n }\r\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET'))\r\n setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded')\r\n\r\n if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name])\r\n xhr.setRequestHeader = setHeader\r\n\r\n xhr.onreadystatechange = function(){\r\n if (xhr.readyState == 4) {\r\n xhr.onreadystatechange = empty\r\n clearTimeout(abortTimeout)\r\n var result, error = false\r\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == 'file:')) {\r\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'))\r\n\r\n if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob')\r\n result = xhr.response\r\n else {\r\n result = xhr.responseText\r\n\r\n try {\r\n // http://perfectionkills.com/global-eval-what-are-the-options/\r\n // sanitize response accordingly if data filter callback provided\r\n result = ajaxDataFilter(result, dataType, settings)\r\n if (dataType == 'script') (1,eval)(result)\r\n else if (dataType == 'xml') result = xhr.responseXML\r\n else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result)\r\n } catch (e) { error = e }\r\n\r\n if (error) return ajaxError(error, 'parsererror', xhr, settings, deferred)\r\n }\r\n\r\n ajaxSuccess(result, xhr, settings, deferred)\r\n } else {\r\n ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred)\r\n }\r\n }\r\n }\r\n\r\n if (ajaxBeforeSend(xhr, settings) === false) {\r\n xhr.abort()\r\n ajaxError(null, 'abort', xhr, settings, deferred)\r\n return xhr\r\n }\r\n\r\n var async = 'async' in settings ? settings.async : true\r\n xhr.open(settings.type, settings.url, async, settings.username, settings.password)\r\n\r\n if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]\r\n\r\n for (name in headers) nativeSetHeader.apply(xhr, headers[name])\r\n\r\n if (settings.timeout > 0) abortTimeout = setTimeout(function(){\r\n xhr.onreadystatechange = empty\r\n xhr.abort()\r\n ajaxError(null, 'timeout', xhr, settings, deferred)\r\n }, settings.timeout)\r\n\r\n // avoid sending empty string (#319)\r\n xhr.send(settings.data ? settings.data : null)\r\n return xhr\r\n }\r\n\r\n // handle optional data/success arguments\r\n function parseArguments(url, data, success, dataType) {\r\n if ($.isFunction(data)) dataType = success, success = data, data = undefined\r\n if (!$.isFunction(success)) dataType = success, success = undefined\r\n return {\r\n url: url\r\n , data: data\r\n , success: success\r\n , dataType: dataType\r\n }\r\n }\r\n\r\n $.get = function(/* url, data, success, dataType */){\r\n return $.ajax(parseArguments.apply(null, arguments))\r\n }\r\n\r\n $.post = function(/* url, data, success, dataType */){\r\n var options = parseArguments.apply(null, arguments)\r\n options.type = 'POST'\r\n return $.ajax(options)\r\n }\r\n\r\n $.getJSON = function(/* url, data, success */){\r\n var options = parseArguments.apply(null, arguments)\r\n options.dataType = 'json'\r\n return $.ajax(options)\r\n }\r\n\r\n $.fn.load = function(url, data, success){\r\n if (!this.length) return this\r\n var self = this, parts = url.split(/\\s/), selector,\r\n options = parseArguments(url, data, success),\r\n callback = options.success\r\n if (parts.length > 1) options.url = parts[0], selector = parts[1]\r\n options.success = function(response){\r\n self.html(selector ?\r\n $('<div>').html(response.replace(rscript, \"\")).find(selector)\r\n : response)\r\n callback && callback.apply(self, arguments)\r\n }\r\n $.ajax(options)\r\n return this\r\n }\r\n\r\n var escape = encodeURIComponent\r\n\r\n function serialize(params, obj, traditional, scope){\r\n var type, array = $.isArray(obj), hash = $.isPlainObject(obj)\r\n $.each(obj, function(key, value) {\r\n type = $.type(value)\r\n if (scope) key = traditional ? scope :\r\n scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']'\r\n // handle data in serializeArray() format\r\n if (!scope && array) params.add(value.name, value.value)\r\n // recurse into nested objects\r\n else if (type == \"array\" || (!traditional && type == \"object\"))\r\n serialize(params, value, traditional, key)\r\n else params.add(key, value)\r\n })\r\n }\r\n\r\n $.param = function(obj, traditional){\r\n var params = []\r\n params.add = function(key, value) {\r\n if ($.isFunction(value)) value = value()\r\n if (value == null) value = \"\"\r\n this.push(escape(key) + '=' + escape(value))\r\n }\r\n serialize(params, obj, traditional)\r\n return params.join('&').replace(/%20/g, '+')\r\n }\r\n})(Zepto)\r\n\r\n;(function($){\r\n $.fn.serializeArray = function() {\r\n var name, type, result = [],\r\n add = function(value) {\r\n if (value.forEach) return value.forEach(add)\r\n result.push({ name: name, value: value })\r\n }\r\n if (this[0]) $.each(this[0].elements, function(_, field){\r\n type = field.type, name = field.name\r\n if (name && field.nodeName.toLowerCase() != 'fieldset' &&\r\n !field.disabled && type != 'submit' && type != 'reset' && type != 'button' && type != 'file' &&\r\n ((type != 'radio' && type != 'checkbox') || field.checked))\r\n add($(field).val())\r\n })\r\n return result\r\n }\r\n\r\n $.fn.serialize = function(){\r\n var result = []\r\n this.serializeArray().forEach(function(elm){\r\n result.push(encodeURIComponent(elm.name) + '=' + encodeURIComponent(elm.value))\r\n })\r\n return result.join('&')\r\n }\r\n\r\n $.fn.submit = function(callback) {\r\n if (0 in arguments) this.bind('submit', callback)\r\n else if (this.length) {\r\n var event = $.Event('submit')\r\n this.eq(0).trigger(event)\r\n if (!event.isDefaultPrevented()) this.get(0).submit()\r\n }\r\n return this\r\n }\r\n\r\n})(Zepto)\r\n\r\n;(function(){\r\n // getComputedStyle shouldn't freak out when called\r\n // without a valid element as argument\r\n try {\r\n getComputedStyle(undefined)\r\n } catch(e) {\r\n var nativeGetComputedStyle = getComputedStyle\r\n window.getComputedStyle = function(element, pseudoElement){\r\n try {\r\n return nativeGetComputedStyle(element, pseudoElement)\r\n } catch(e) {\r\n return null\r\n }\r\n }\r\n }\r\n})()\r\n\r\nmodule.exports = Zepto\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/js/zepto.js","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function() {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\tvar result = [];\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar item = this[i];\n\t\t\tif(item[2]) {\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\n\t\t\t} else {\n\t\t\t\tresult.push(item[1]);\n\t\t\t}\n\t\t}\n\t\treturn result.join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/css-loader/lib/css-base.js","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nvar stylesInDom = {},\n\tmemoize = function(fn) {\n\t\tvar memo;\n\t\treturn function () {\n\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\treturn memo;\n\t\t};\n\t},\n\tisOldIE = memoize(function() {\n\t\treturn /msie [6-9]\\b/.test(self.navigator.userAgent.toLowerCase());\n\t}),\n\tgetHeadElement = memoize(function () {\n\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\n\t}),\n\tsingletonElement = null,\n\tsingletonCounter = 0,\n\tstyleElementsInsertedAtTop = [];\n\nmodule.exports = function(list, options) {\n\tif(typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the bottom of <head>.\n\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list);\n\taddStylesToDom(styles, options);\n\n\treturn function update(newList) {\n\t\tvar mayRemove = [];\n\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\t\tfor(var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\n\t\t\t\t\tdomStyle.parts[j]();\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction addStylesToDom(styles, options) {\n\tfor(var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles(list) {\n\tvar styles = [];\n\tvar newStyles = {};\n\tfor(var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\t\tif(!newStyles[id])\n\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse\n\t\t\tnewStyles[id].parts.push(part);\n\t}\n\treturn styles;\n}\n\nfunction insertStyleElement(options, styleElement) {\n\tvar head = getHeadElement();\n\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\n\tif (options.insertAt === \"top\") {\n\t\tif(!lastStyleElementInsertedAtTop) {\n\t\t\thead.insertBefore(styleElement, head.firstChild);\n\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\thead.appendChild(styleElement);\n\t\t}\n\t\tstyleElementsInsertedAtTop.push(styleElement);\n\t} else if (options.insertAt === \"bottom\") {\n\t\thead.appendChild(styleElement);\n\t} else {\n\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\n\t}\n}\n\nfunction removeStyleElement(styleElement) {\n\tstyleElement.parentNode.removeChild(styleElement);\n\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\n\tif(idx >= 0) {\n\t\tstyleElementsInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement(options) {\n\tvar styleElement = document.createElement(\"style\");\n\tstyleElement.type = \"text/css\";\n\tinsertStyleElement(options, styleElement);\n\treturn styleElement;\n}\n\nfunction createLinkElement(options) {\n\tvar linkElement = document.createElement(\"link\");\n\tlinkElement.rel = \"stylesheet\";\n\tinsertStyleElement(options, linkElement);\n\treturn linkElement;\n}\n\nfunction addStyle(obj, options) {\n\tvar styleElement, update, remove;\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\n\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\n\t} else if(obj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\") {\n\t\tstyleElement = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t\tif(styleElement.href)\n\t\t\t\tURL.revokeObjectURL(styleElement.href);\n\t\t};\n\t} else {\n\t\tstyleElement = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle(newObj) {\n\t\tif(newObj) {\n\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\n\t\t\t\treturn;\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag(styleElement, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = styleElement.childNodes;\n\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\n\t\tif (childNodes.length) {\n\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyleElement.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag(styleElement, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyleElement.setAttribute(\"media\", media)\n\t}\n\n\tif(styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = css;\n\t} else {\n\t\twhile(styleElement.firstChild) {\n\t\t\tstyleElement.removeChild(styleElement.firstChild);\n\t\t}\n\t\tstyleElement.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink(linkElement, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\tif(sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = linkElement.href;\n\n\tlinkElement.href = URL.createObjectURL(blob);\n\n\tif(oldSrc)\n\t\tURL.revokeObjectURL(oldSrc);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/style-loader/addStyles.js\n// module id = 18\n// module chunks = 4"],"sourceRoot":""}