diff options
author | Alex Xu <alex_y_xu@yahoo.ca> | 2013-12-31 09:51:43 -0800 |
---|---|---|
committer | Alex Xu <alex_y_xu@yahoo.ca> | 2013-12-31 09:51:43 -0800 |
commit | 7ee7422bf7b347320179b0c370c2ddee7519b05b (patch) | |
tree | f1fb4bc874546771172ac8ab0fd568e6ca947658 | |
parent | 68efde1b5d94cbf0b994f5922fa4fc81d2d3cc95 (diff) | |
download | html5ks-7ee7422bf7b347320179b0c370c2ddee7519b05b.tar.xz html5ks-7ee7422bf7b347320179b0c370c2ddee7519b05b.zip |
Stuff.
-rw-r--r-- | Makefile | 27 | ||||
-rw-r--r-- | README | 5 | ||||
-rw-r--r-- | www/css/anim.css | 31 | ||||
-rw-r--r-- | www/css/index.css | 27 | ||||
-rw-r--r-- | www/index.html | 8 | ||||
-rw-r--r-- | www/js/api.js | 134 | ||||
-rw-r--r-- | www/js/html5ks.js | 17 | ||||
-rw-r--r-- | www/js/imachine.js | 4 | ||||
-rw-r--r-- | www/js/lib/apng-canvas.min.js | 49 | ||||
-rw-r--r-- | www/js/lib/jquery-2.0.2.min.js | 6 | ||||
-rw-r--r-- | www/js/lib/modernizr-build.js | 1429 | ||||
-rw-r--r-- | www/js/lib/modernizr-build.min.js | 4 |
12 files changed, 1273 insertions, 468 deletions
@@ -1,10 +1,15 @@ +null := +SPACE := $(null) $(null) + FFMPEG ?= ffmpeg FFMPEG += -v warning $(FFMPEGFLAGS) OPUSENC ?= opusenc ZOPFLIPNG ?= zopflipng JPEGOPTIM ?= jpegoptim CWEBP ?= cwebp +WEBPMUX ?= webpmux CONVERT ?= convert +APNGASM ?= apngasm DUMP ?= www/dump @@ -53,8 +58,12 @@ PNG := $(shell find $(DUMP) -name '*.png') JPG := $(shell find $(DUMP) -name '*.jpg') WEBP := $(patsubst %.png,%.webp,$(PNG)) \ $(patsubst %.jpg,%.webp,$(JPG)) +CTC_ANIM_SRC := $(DUMP)/ui/ctc_strip.png +CTC_ANIM_TMP := $(DUMP)/ui/ctc_strip-0.png $(DUMP)/ui/ctc_strip-1.png $(DUMP)/ui/ctc_strip-2.png $(DUMP)/ui/ctc_strip-3.png $(DUMP)/ui/ctc_strip-4.png $(DUMP)/ui/ctc_strip-5.png $(DUMP)/ui/ctc_strip-6.png $(DUMP)/ui/ctc_strip-7.png $(DUMP)/ui/ctc_strip-8.png $(DUMP)/ui/ctc_strip-9.png $(DUMP)/ui/ctc_strip-10.png $(DUMP)/ui/ctc_strip-11.png $(DUMP)/ui/ctc_strip-12.png $(DUMP)/ui/ctc_strip-13.png $(DUMP)/ui/ctc_strip-14.png $(DUMP)/ui/ctc_strip-15.png $(DUMP)/ui/ctc_strip-16.png $(DUMP)/ui/ctc_strip-17.png $(DUMP)/ui/ctc_strip-18.png $(DUMP)/ui/ctc_strip-19.png $(DUMP)/ui/ctc_strip-20.png $(DUMP)/ui/ctc_strip-21.png $(DUMP)/ui/ctc_strip-22.png $(DUMP)/ui/ctc_strip-23.png $(DUMP)/ui/ctc_strip-24.png $(DUMP)/ui/ctc_strip-25.png $(DUMP)/ui/ctc_strip-26.png $(DUMP)/ui/ctc_strip-27.png $(DUMP)/ui/ctc_strip-28.png $(DUMP)/ui/ctc_strip-29.png $(DUMP)/ui/ctc_strip-30.png $(DUMP)/ui/ctc_strip-31.png $(DUMP)/ui/ctc_strip-32.png $(DUMP)/ui/ctc_strip-33.png $(DUMP)/ui/ctc_strip-34.png $(DUMP)/ui/ctc_strip-35.png $(DUMP)/ui/ctc_strip-36.png $(DUMP)/ui/ctc_strip-37.png $(DUMP)/ui/ctc_strip-38.png $(DUMP)/ui/ctc_strip-39.png $(DUMP)/ui/ctc_strip-40.png $(DUMP)/ui/ctc_strip-41.png $(DUMP)/ui/ctc_strip-42.png $(DUMP)/ui/ctc_strip-43.png $(DUMP)/ui/ctc_strip-44.png $(DUMP)/ui/ctc_strip-45.png $(DUMP)/ui/ctc_strip-46.png $(DUMP)/ui/ctc_strip-47.png $(DUMP)/ui/ctc_strip-48.png $(DUMP)/ui/ctc_strip-49.png $(DUMP)/ui/ctc_strip-50.png $(DUMP)/ui/ctc_strip-51.png $(DUMP)/ui/ctc_strip-52.png $(DUMP)/ui/ctc_strip-53.png $(DUMP)/ui/ctc_strip-54.png $(DUMP)/ui/ctc_strip-55.png $(DUMP)/ui/ctc_strip-56.png $(DUMP)/ui/ctc_strip-57.png $(DUMP)/ui/ctc_strip-58.png $(DUMP)/ui/ctc_strip-59.png $(DUMP)/ui/ctc_strip-60.png $(DUMP)/ui/ctc_strip-61.png $(DUMP)/ui/ctc_strip-62.png $(DUMP)/ui/ctc_strip-63.png +CTC_ANIM_TMP_WEBP := $(patsubst %.png,%.webp,$(CTC_ANIM_TMP)) +CTC_ANIM := $(DUMP)/ui/ctc_anim.png $(DUMP)/ui/ctc_anim.webp -images: $(WEBP) favicon.ico +images: $(WEBP) $(CTC_ANIM) www/favicon.ico %.webp: %.png $(ZOPFLIPNG) -m -y $< $< @@ -64,10 +73,22 @@ images: $(WEBP) favicon.ico $(JPEGOPTIM) --strip-all $< $(CWEBP) -q 90 -m 6 $< -o $@ -www/favicon.ico: www/dump/ui/icon.png +www/favicon.ico: $(DUMP)/ui/icon.png $(CONVERT) $< -resize 256x256 -transparent white $@ +$(DUMP)/ui/ctc_strip-0.png: $(CTC_ANIM_SRC) + $(CONVERT) $< -crop 16x16 $(patsubst %.png,%*.png,$<) + +$(DUMP)/ui/ctc_strip-%.png: $(CTC_ANIM_SRC) $(DUMP)/ui/ctc_strip-0.png + @touch $@ + +$(DUMP)/ui/ctc_anim.png: $(CTC_ANIM_TMP) + $(APNGASM) $@ $^ 3 100 + +$(DUMP)/ui/ctc_anim.webp: $(CTC_ANIM_TMP_WEBP) + $(WEBPMUX) -frame $(subst $(SPACE), +30 -frame ,$^) +0 -loop 0 -o $@ + clean: - $(RM) $(CVIDEO) $(CAUDIO) $(WEBP) + $(RM) $(CVIDEO) $(CAUDIO) $(WEBP) www/favicon.ico .PHONY: video audio images clean @@ -7,15 +7,16 @@ jQuery is not used, but when.js [1] is used as a sensible Promises/A+ implementa - when.js - Bash - Firefox/Chrome/a sensible browser -- ffmpeg with AAC, libtheora, libvpx, libx264 +- ffmpeg with fdk-aac, libtheora, libvpx, libx264 - opusenc from opus-tools - cwebp from libwebp - zopfli +- nginx How to use: 0. Get Katawa Shoujo. 1. Copy *.rpyc from Katawa Shoujo/game into unrpyc/ directory. -2. Extract files from data.rpa with an appropriate tool. Put files in www/dump. +2. Extract files from data.rpa with an rpa extractor, e.g. unrpa. Put files in www/dump. 3. Run setup.sh. 4. Run nginx.sh [2] to start nginx with appropriate options for development, then connect to localhost:8080. diff --git a/www/css/anim.css b/www/css/anim.css index e89959d..f6a321b 100644 --- a/www/css/anim.css +++ b/www/css/anim.css @@ -1,40 +1,21 @@ -@-webkit-keyframes dissolvein { - 0% { opacity: 0; } - 100% { opacity: 1; } -} -@-moz-keyframes dissolvein { - 0% { opacity: 0; } - 100% { opacity: 1; } -} -@keyframes dissolvein { - 0% { opacity: 0; } - 100% { opacity: 1; } -} -@-webkit-keyframes dissolveout { - 0% { opacity: 1; } - 100% { opacity: 0; } -} -@-moz-keyframes dissolveout { - 0% { opacity: 1; } - 100% { opacity: 0; } -} -@keyframes dissolveout { - 0% { opacity: 1; } - 100% { opacity: 0; } -} - @-webkit-keyframes blink { 0% { opacity: 0; } + 25% { opacity: 0; } 50% { opacity: 1; } + 75% { opacity: 1; } 100% { opacity: 0; } } @-moz-keyframes blink { 0% { opacity: 0; } + 25% { opacity: 0; } 50% { opacity: 1; } + 75% { opacity: 1; } 100% { opacity: 0; } } @keyframes blink { 0% { opacity: 0; } + 25% { opacity: 0; } 50% { opacity: 1; } + 75% { opacity: 1; } 100% { opacity: 0; } } diff --git a/www/css/index.css b/www/css/index.css index 1f147a7..cf58427 100644 --- a/www/css/index.css +++ b/www/css/index.css @@ -68,7 +68,6 @@ html.audio #warn li#audio { display: none; } #warn li#opus { display: none; } html.fontface #warn li#fontface { display: none; } html.csstransforms #warn li#csstransforms { display: none; } -html.csstransitions #warn li#csstransitions { display: none; } #gotit { text-align: center; } @@ -166,13 +165,31 @@ html.no-js #gotit { display: block; margin: 10px 8px; } -#ctc, #nvlctc { +.ctc { position: absolute; bottom: 20px; right: 10px; - -webkit-animation: blink 2s infinite; - -moz-animation: blink 2s infinite; - animation: blink 2s infinite; + width: 16px; + height: 16px; + background-image: url("../dump/ui/ctc.png"); + -o-animation: blink 2s infinite linear; + -moz-animation: blink 2s infinite linear; + -webkit-animation: blink 2s infinite linear; + animation: blink 2s infinite linear; +} +.apng .ctc { + background-image: url("../dump/ui/ctc_anim.png"); + -o-animation: none; + -moz-animation: none; + -webkit-animation: none; + animation: none; +} +.webpanimation .ctc { + background-image: url("../dump/ui/ctc_anim.webp"); + -o-animation: none; + -moz-animation: none; + -webkit-animation: none; + animation: none; } #nvlctc { bottom: 25px; diff --git a/www/index.html b/www/index.html index 5e5208e..cd8682f 100644 --- a/www/index.html +++ b/www/index.html @@ -18,6 +18,7 @@ <link rel="stylesheet" type="text/css" href="css/index.css"> <script src="js/lib/when/when.js"></script> <script src="js/lib/modernizr-build.js"></script> + <script src="js/lib/apng-canvas.min.js"></script> <script src="js/html5ks.js"></script> <script src="js/menu.js"></script> <script src="js/api.js"></script> @@ -39,7 +40,6 @@ <li id="opus">It doesn't seem to support the <a href="https://en.wikipedia.org/wiki/Opus_%28audio_codec%29">Opus audio codec</a>, which is much smaller in size. Unless stated above, you should be able to listen to music using an inferior codec.</li> <li id="fontface">It doesn't seem to support <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face">the @font-face at-rule</a>, which lets us display the Playtime and Gentium fonts used in Katawa Shoujo. <a href="http://caniuse.com/#feat=fontface">Any browser released in the last 2 years or so should support it.</a></li> <li id="csstransforms">It doesn't seem to support <a href="https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Using_CSS_transforms">CSS transforms</a>, which means that we won't be able to scale the window or show most transitions. <a href="http://caniuse.com/#feat=transforms2d">Any browser released in the last 2 years ago should work.</a></li> - <li id="csstransitions">It doesn't seem to support <a href="https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Using_CSS_transitions">CSS transitions</a>, which means that almost all animations won't work. Videos should still work though, unless stated above. <a href="http://caniuse.com/#feat=css-transitions">You should definitely consider upgrading.</a></li> </ul> <div id="gotit" class="button">I know it's broken, let me play!</div> </div> @@ -50,11 +50,11 @@ <div id="window" style="display: none;"> <div id="who"></div> <div id="say" class="say"></div> - <img id="ctc" src="dump/ui/ctc.png" style="display: none" alt="Click to continue..."> + <span class="ctc" id="ctc" style="display: none" alt="Click to continue..."> </div> <div id="nvl" style="display: none;"> <div id="nvlsay" class="say"></div> - <img id="nvlctc" src="dump/ui/ctc.png" alt="Click to continue..."> + <img class="ctc" id="nvlctc" src="dump/ui/ctc_anim.png" alt="Click to continue..."> </div> <div id="choices" class="centered"></div> <div id="centered" class="centered say"></div> @@ -82,7 +82,7 @@ <label class="button"><input type="checkbox" class="option" id="skipUnread"> <span class="config_skip_unseen_label"></span></label> <label class="button"><input type="checkbox" class="option" id="skipAfterChoices"> <span class="config_skip_after_choice_label"></span></label> - <label><input type="range" min="0.0" max="1.0" step="0.001" class="option" id="textSpeed"> <span class="tr config_textspeed_label"></span></label> + <label><input type="range" min="1.0" max="200.0" step="0.001" class="option" id="textSpeed"> <span class="tr config_textspeed_label"></span></label> <label><input type="range" min="0.0" max="1.0" step="0.001" class="option" id="autoModeDelay"> <span class="tr config_afmspeed_label"></span></label> <label><input type="range" min="0.0" max="1.0" step="0.001" class="option" id="musicVolume"> <span class="tr config_musicvol_label"></span></label> diff --git a/www/js/api.js b/www/js/api.js index 7ae4e38..2c31c7b 100644 --- a/www/js/api.js +++ b/www/js/api.js @@ -1,5 +1,5 @@ -"use strict"; -window.html5ks.api = new (function () { return { +window.html5ks.api = new (function () { + "use strict"; return { init: function () { var chrs = html5ks.data.characters; for (var ch in chrs) { @@ -56,10 +56,6 @@ window.html5ks.api = new (function () { return { } }); - audio.load(); - var volume = html5ks.persistent[channel + "Volume"]; - audio.volume = fade ? 0 : volume; - audio.play(); audio.addEventListener("playing", function playing() { audio.removeEventListener("playing", playing, false); if (fade) { @@ -67,9 +63,13 @@ window.html5ks.api = new (function () { return { } deferred.resolve(); }, false); - audio.onerror = function () { - throw new Error(); + audio.onerror = function (e) { + throw new Error(e); }; + audio.load(); + var volume = html5ks.persistent[channel + "Volume"]; + audio.volume = fade ? 0 : volume; + audio.play(); return deferred.promise; }, @@ -282,7 +282,7 @@ window.html5ks.api = new (function () { return { image = {image: image}; } var src = ""; - if (html5ks.persistent.useWebP) { + if (Modernizr.webp) { src = image.image.replace(/\.[a-z]+$/, ".webp"); } else { src = image.image; @@ -331,9 +331,40 @@ window.html5ks.api = new (function () { return { }, + dlgTag: function (str) { + var text = []; + for (var i = 0; i < str.length; i++) { + switch (str[i]) { + case '{': + var close = str.indexOf('}', i), + tag = str.slice(i, close + 1); + i = close; + if (tag[1] === '/') { + text.push(''); + } else { + text.push(tag); + } + break; + default: + text.push(str[i]); + } + } + var br = document.createElement("br"); + var span = document.createElement("span"); + span.style.visibility = "hidden"; + return text.map(function (txt) { + if (txt == '\n') { + return br.cloneNode(false); + } else { + span = span.cloneNode(false); + span.appendChild(document.createTextNode(txt)); + return span; + } + }); + }, + say: function (chrName, str, extend) { var deferred = when.defer(), - text = this.tag(str), chr = typeof chrName === "string" ? html5ks.data.characters[chrName] : chrName, w = /{w=?(\d*\.\d*)?}(.*)/.exec(str); @@ -350,19 +381,20 @@ window.html5ks.api = new (function () { return { this._lastchar = chr; if (!extend && chr.what_prefix) { - text = chr.what_prefix + text; + str = chr.what_prefix + str; } if ((!w || !w[1]) && chr.what_suffix) { - text = text + chr.what_suffix; + str = str + chr.what_suffix; } + var text = this.dlgTag(str), + say, ctc; + if (chr.kind === "nvl") { - html5ks.elements.nvlsay.innerHTML += "<span class='nvl-block'>" + text + "</span>"; - html5ks.elements.nvlctc.style.display = "block"; - html5ks._next = function () { - html5ks.elements.nvlctc.style.display = "none"; - deferred.resolve(); - }; + say = document.createElement("span"); + say.className = "nvl-block"; + html5ks.elements.nvlsay.appendChild(say); + ctc = html5ks.elements.nvlctc; } else { var who = html5ks.elements.who; if (!extend) { @@ -374,36 +406,48 @@ window.html5ks.api = new (function () { return { } } - var newText = extend ? - html5ks.elements.say.innerHTML + text : - text; - - html5ks.elements.say.innerHTML = newText; - - if (w) { - html5ks._next = function () { - html5ks.api.extend(w[2]).then(function () { - deferred.resolve(); - }); - }; - if (w[1]) { - setTimeout(function () { - html5ks.next(); - }, parseFloat(w[1], 10) * 1000); - return deferred.promise; - } + say = html5ks.elements.say; + say.innerHTML = ""; + ctc = html5ks.elements.ctc; + } + + var tm, done; + + text.forEach(function (txt) { + say.appendChild(txt); + }); + + var ptxt = function (immed) { + var txt = text.shift(); + if (typeof txt !== 'undefined') { + txt.style.visibility = "visible"; + if (immed) return ptxt(immed); + else tm = setTimeout(ptxt, 1000 / html5ks.persistent.textSpeed); } else { - html5ks._next = function () { - html5ks.elements.ctc.style.display = "none"; - deferred.resolve(text); - }; + done = true; + ctc.style.display = "block"; } - html5ks.elements.ctc.style.display = "block"; - } + }; + + ptxt(); + + html5ks._next = function _next() { + if (!done) { + clearTimeout(tm); + ptxt(true); + } else { + ctc.style.display = "none"; + if (html5ks.state.auto) { + setTimeout(html5ks.next, 3.5 * html5ks.persistent.autoModeDelay); + } + deferred.resolve(); + } + html5ks._next = _next; + }; + if (html5ks.state.skip || str.indexOf("{nw}") > -1) { - html5ks.next(); - } else if (html5ks.state.auto) { - setTimeout(html5ks.next, 3.5 * html5ks.persistent.autoModeDelay * (3000 + text.length)); + html5ks._next(); + setTimeout(html5ks._next, 50); } return deferred.promise; }, diff --git a/www/js/html5ks.js b/www/js/html5ks.js index 4b2b0e8..e5f6c07 100644 --- a/www/js/html5ks.js +++ b/www/js/html5ks.js @@ -10,7 +10,6 @@ window.html5ks = { hdisable: false, skipUnread: false, skipAfterChoices: false, - useWebP: null, fullscreen: false, scaleAll: true, scaleVideo: true, @@ -41,14 +40,6 @@ window.html5ks = { document.addEventListener("DOMContentLoaded", function () { html5ks.onload(); }, false); - - if (html5ks.persistent.useWebP === null) { - var img = new Image(); - img.onload = function () { - html5ks.persistent.useWebP = img.width === 4; - }; - img.src = 'data:image/webp;base64,UklGRjgAAABXRUJQVlA4ICwAAAAQAgCdASoEAAQAAAcIhYWIhYSIgIIADA1gAAUAAAEAAAEAAP7%2F2fIAAAAA'; - } }, store: { seen_scenes: {}, @@ -239,11 +230,9 @@ window.html5ks = { deferred.resolve(); } else { xhr.open("GET", "json/" + name + ".json"); - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - html5ks.data[name] = JSON.parse(xhr.responseText); - deferred.resolve(); - } + xhr.onload = function () { + html5ks.data[name] = JSON.parse(xhr.responseText); + deferred.resolve(); }; xhr.send(); } diff --git a/www/js/imachine.js b/www/js/imachine.js index 5e8423c..8ca9cd6 100644 --- a/www/js/imachine.js +++ b/www/js/imachine.js @@ -1,4 +1,4 @@ -html5ks.imachine = (function () { +html5ks.imachine = new (function () { "use strict"; return { seen_scene: function (scene) { @@ -103,4 +103,4 @@ html5ks.imachine = (function () { return deferred.promise; } }; -}()); +}); diff --git a/www/js/lib/apng-canvas.min.js b/www/js/lib/apng-canvas.min.js new file mode 100644 index 0000000..b7b0657 --- /dev/null +++ b/www/js/lib/apng-canvas.min.js @@ -0,0 +1,49 @@ +// Input 0 +/* + + uDeferred library + + @author David Mzareulyan + @copyright 2011 David Mzareulyan + @license http://creativecommons.org/licenses/by/3.0/ +*/ +(function(){var a=function(){return this}(),f;f=typeof a.jQuery!=="undefined"&&typeof a.jQuery.Deferred!=="undefined"?a.Deferred=a.jQuery.Deferred:a.Deferred=function(){if(!(this instanceof arguments.callee))return new f;var h=[0,[],[]],a=0,o,e=null,n,m=this,i=function(k,e,n){if(!a){a=k;o=e;for(k=h[k];k.length;)k.shift().apply(n,o);h=null;return m}},t=function(k,e){a==k?e.apply(this,o):a||h[k].push(e);return this};m.promise=function(k){if(!k&&e)return e;e=k?k:e?e:{};for(var a in n)n.hasOwnProperty(a)&& +(e[a]=n[a]);return e};m.resolve=function(){return i(1,arguments,e)};m.reject=function(){return i(2,arguments,e)};m.resolveWith=function(){var k=Array.prototype.slice.call(arguments),a=k.shift();return i(1,k,a)};m.rejectWith=function(){var a=Array.prototype.slice.call(arguments),e=a.shift();return i(2,a,e)};n={done:function(a){return t.call(this,1,a)},fail:function(a){return t.call(this,2,a)},then:function(a,e){return this.done(a).fail(e)},always:function(a){return this.then(a,a)},isResolved:function(){return a== +1},isRejected:function(){return a==2},promise:function(){return this}}};var i=function(a,i){return function(){return a.apply(i,arguments)}};f.pipeline=function(){var a,p=arguments,o,e=function(){if(o.length){var n=o.shift().apply(null,arguments);typeof n.promise=="function"?n.promise().then(e,i(a.reject,a)):e.apply(null,[n])}else a.resolve.apply(a,arguments)};return function(){a=new f;o=Array.prototype.slice.call(arguments);e.apply(null,p);return a.promise()}}})(); +// Input 1 +/* + + CRC32 + + @author David Mzareulyan + @copyright 2011 David Mzareulyan + @license http://creativecommons.org/licenses/by/3.0/ +*/ +(function(){for(var a=function(){return this}(),f=Array(256),i=0;i<256;i++){for(var h=i,p=0;p<8;p++)h=h&1?3988292384^h>>>1:h>>>1;f[i]=h}a.crc32=function(a){for(var e=-1,h=0,m=a.length;h<m;h++)e=e>>>8^f[(e^a.charCodeAt(h))&255];return e^-1}})(); +// Input 2 +/* + + APNG-canvas + + @author David Mzareulyan + @copyright 2011 David Mzareulyan + @link https://github.com/davidmz/apng-canvas + @license https://github.com/davidmz/apng-canvas/blob/master/LICENSE (MIT License) +*/ +(function(){var a=function(){return this}(),f=a.jQuery||null,i=!!document.getCSSCanvasContext,h=a.APNG={},p=null;h.checkNativeFeatures=function(b){var d=!p,c=d?p=new Deferred:p;b&&c.promise().done(b);if(!d)return c.promise();var a={canvas:!1,apng:!1},e=document.createElement("canvas");if(typeof e.getContext=="undefined")c.resolve(a);else{a.canvas=!0;var g=new Image;g.onload=function(){var b=e.getContext("2d");b.drawImage(g,0,0);if(b.getImageData(0,0,1,1).data[3]===0)a.apng=!0;c.resolve(a)};g.src= +"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg=="}return c.promise()};var o=null;h.ifNeeded=function(b){var a=!o,c=a?o=new Deferred:o;b&&c.promise().done(b);if(!a)return c.promise();if(location.protocol!="http:"&&location.protocol!="https:")return c.reject("apng-canvas doesn't work on pages loaded by '"+location.protocol+ +"' protocol"),c.promise();this.checkNativeFeatures().done(function(b){b.canvas&&!b.apng?c.resolve():(b.canvas||c.reject("Browser doesn't support canvas"),b.apng&&c.reject("Browser has native APNG support"))}).done(function(){c.reject()});return c.promise()};h.createAPNGCanvas=function(b,a){var c=new Deferred;a&&c.promise().done(a);s.createFromUrl(b).done(function(){c.resolve(this.addCanvas())}).fail(r(c.reject,c));return c.promise()};h.animateImage=function(b){if(i){var d=new Deferred;b.hasAttribute("data-is-apng")? +d.reject("Image already animated"):(b.setAttribute("data-is-apng","progress"),s.createFromUrl(b.src).done(function(){var c=this.getCSSCanvasContextName();if(!b.hasAttribute("width")&&!b.style.width)b.style.width=a.getComputedStyle(b).width;if(!b.hasAttribute("height")&&!b.style.height)b.style.height=a.getComputedStyle(b).height;b.setAttribute("data-is-apng","yes");b.style.content="-webkit-canvas("+c+")";d.resolve()}).fail(function(){b.setAttribute("data-is-apng","no")}).fail(r(d.reject,d)));return d.promise()}else return this.replaceImage(b)}; +h.replaceImage=function(b){if(b.hasAttribute("data-is-apng")){var a=new Deferred;a.reject("Image already animated");return a.promise()}else return b.setAttribute("data-is-apng","progress"),h.createAPNGCanvas(b.src).done(function(a){for(var d=0;d<b.attributes.length;d++){var e=b.attributes[d];["alt","src","usemap","ismap"].indexOf(e.nodeName)==-1&&a.setAttributeNode(e.cloneNode())}a.setAttribute("data-apng-src",b.src);if(f&&(d=f(b).data("events")))for(var g in d)for(var e=0,h=d[g].length;e<h;e++){var u= +d[g][e];f(a).bind(g+(u.namespace?".":"")+u.namespace,u.data,u.handler)}g=b.parentNode;g.insertBefore(a,b);g.removeChild(b)}).fail(function(){b.setAttribute("data-is-apng","no")})};var e=String.fromCharCode(137,80,78,71,13,10,26,10),n=1,m=function(b){for(var a=0,c=0;c<4;c++)a+=b.charCodeAt(c)<<(3-c)*8;return a},A=function(b){for(var a=0,c=0;c<2;c++)a+=b.charCodeAt(c)<<(1-c)*8;return a},t=function(b,a){var c="";c+=k(a.length);c+=b;c+=a;c+=k(crc32(b+a));return c},k=function(b){return String.fromCharCode(b>> +24&255,b>>16&255,b>>8&255,b&255)},x=function(){this.parts=[]};x.prototype.append=function(b){this.parts.push(b)};x.prototype.getUrl=function(b){return a.btoa?"data:"+b+";base64,"+btoa(this.parts.join("")):"data:"+b+","+escape(this.parts.join(""))};var r=function(b,a){return function(){return b.apply(a,arguments)}};typeof XMLHttpRequest.prototype.responseBody!="undefined"&&typeof document.addEventListener!="undefined"&&document.addEventListener("DOMContentLoaded",function(){var b=document.createElement("script"); +b.setAttribute("type","text/vbscript");b.text="Function APNGIEBinaryToBinStr(Binary)\r\n APNGIEBinaryToBinStr = CStr(Binary)\r\nEnd Function\r\n";document.body.appendChild(b)});var v=[];(function(){if(v.length)for(var b=v.splice(0,v.length),a=(new Date).getTime();b.length;)b.shift().call(null,a);setTimeout(arguments.callee,1E3/60)})();var w=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||function(a){v.push(a)},B=function(a){typeof a!= +"number"&&(a=a.getTime());for(var d=0;d<y.length;d++)for(var c=y[d];c.isActive&&c.nextRenderTime<=a;)c.renderFrame(a);w(B)};w(B);var s=function(){var a=this;this.isActive=!1;this.numPlays=this.height=this.width=this.nextRenderTime=0;this.frames=[];this.playTime=0;var d=new Deferred;this.whenReady=r(d.promise,d);this.parsePNGData=function(c){if(c.substr(0,8)!=e)return d.reject("Invalid PNG file signature"),d.promise();var g,C="",h="",i=!1,l=8,j=null;do{var f=m(c.substr(l,4)),n=c.substr(l+4,4),q;switch(n){case "IHDR":g= +q=c.substr(l+8,f);this.width=m(q.substr(0,4));this.height=m(q.substr(4,4));break;case "acTL":i=!0;this.numPlays=m(c.substr(l+8+4,4));break;case "fcTL":j&&this.frames.push(j);q=c.substr(l+8,f);j={};j.width=m(q.substr(4,4));j.height=m(q.substr(8,4));j.left=m(q.substr(12,4));j.top=m(q.substr(16,4));var o=A(q.substr(20,2)),p=A(q.substr(22,2));p==0&&(p=100);j.delay=1E3*o/p;if(j.delay<=10)j.delay=100;this.playTime+=j.delay;j.disposeOp=q.charCodeAt(24);j.blendOp=q.charCodeAt(25);j.dataParts=[];break;case "fdAT":j&& +j.dataParts.push(c.substr(l+8+4,f-4));break;case "IDAT":j&&j.dataParts.push(c.substr(l+8,f));break;case "IEND":h=c.substr(l,f+12);break;default:C+=c.substr(l,f+12)}l+=12+f}while(n!="IEND"&&l<c.length);j&&this.frames.push(j);if(!i)return d.reject("Non-animated PNG"),d.promise();for(var r=0,s=this,c=0;c<this.frames.length;c++){i=new Image;j=this.frames[c];j.img=i;i.onload=function(){r++;r==s.frames.length&&d.resolveWith(a)};i.onerror=function(){d.reject("Image creation error")};l=new x;l.append(e); +g=k(j.width)+k(j.height)+g.substr(8);l.append(t("IHDR",g));l.append(C);for(f=0;f<j.dataParts.length;f++)l.append(t("IDAT",j.dataParts[f]));l.append(h);i.src=l.getUrl("image/png");delete j.dataParts}return d.promise()};var c=[];this.addCanvas=function(){var a=document.createElement("canvas");a.width=this.width;a.height=this.height;var b=a.getContext("2d");c.push(b);c.length>1&&w(function(){b.putImageData(c[0].getImageData(0,0,a.width,a.height),0,0)});this.isActive=!0;return a};var h=null;this.getCSSCanvasContextName= +function(){if(!h){h="apng-canvas-css-"+n++;var d=document.getCSSCanvasContext("2d",h,this.width,this.height);c.push(d);c.length>1&&w(function(){d.putImageData(c[0].getImageData(0,0,a.width,a.height),0,0)});this.isActive=!0}return h};var i=0,g=null,f=function(a,b){for(var d=0;d<c.length;d++)c[d][a].apply(c[d],b)};this.renderFrame=function(a){if(c.length!=0){var b=i++%this.frames.length,d=this.frames[b];if(b==0&&(f("clearRect",[0,0,this.width,this.height]),g=null,d.disposeOp==2))d.disposeOp=1;g&&g.disposeOp== +1?f("clearRect",[g.left,g.top,g.width,g.height]):g&&g.disposeOp==2&&f("putImageData",[g.iData,g.left,g.top]);g=d;g.iData=null;if(g.disposeOp==2)g.iData=c[0].getImageData(d.left,d.top,d.width,d.height);d.blendOp==0&&f("clearRect",[d.left,d.top,d.width,d.height]);f("drawImage",[d.img,d.left,d.top]);if(this.numPlays==0||i/this.frames.length<this.numPlays){if(this.nextRenderTime==0)this.nextRenderTime=a;for(;a>this.nextRenderTime+this.playTime;)this.nextRenderTime+=this.playTime;this.nextRenderTime+= +d.delay}else this.isActive=!1}}},D=function(b){var d=new Deferred,c=new XMLHttpRequest,e=a.BlobBuilder||a.WebKitBlobBuilder,h=typeof c.responseBody!="undefined",g=typeof c.responseType!="undefined"&&typeof e!="undefined",f=typeof c.overrideMimeType!="undefined"&&!g;c.open("GET",b,!0);g?c.responseType="arraybuffer":f&&c.overrideMimeType("text/plain; charset=x-user-defined");c.onreadystatechange=function(){if(this.readyState==4&&this.status==200)if(g){var a=new e;a.append(this.response);var b=new FileReader; +b.onload=function(){d.resolve(this.result)};b.readAsBinaryString(a.getBlob())}else{a="";if(h)for(var b=APNGIEBinaryToBinStr(this.responseBody),f=0,i=b.length;f<i;f++){var k=b.charCodeAt(f);a+=String.fromCharCode(k&255,k>>8&255)}else{b=this.responseText;f=0;for(i=b.length;f<i;++f)a+=String.fromCharCode(b.charCodeAt(f)&255)}d.resolve(a)}else this.readyState==4&&d.reject(c)};c.send();return d.promise()},y=[],z={};s.createFromUrl=function(a){var d;a in z?d=z[a]:(d=new s,z[a]=d,y.push(d),Deferred.pipeline(a)(D, +r(d.parsePNGData,d)));return d.whenReady()}})(); diff --git a/www/js/lib/jquery-2.0.2.min.js b/www/js/lib/jquery-2.0.2.min.js deleted file mode 100644 index 73e5218..0000000 --- a/www/js/lib/jquery-2.0.2.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! jQuery v2.0.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license -//@ sourceMappingURL=jquery-2.0.2.min.map -*/ -(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p="2.0.2",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v="sizzle"+-new Date,b=e.document,w=0,T=0,C=at(),k=at(),N=at(),E=!1,S=function(){return 0},j=typeof undefined,D=1<<31,A={}.hasOwnProperty,L=[],H=L.pop,q=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",W="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",$=W.replace("w","w#"),B="\\["+M+"*("+W+")"+M+"*(?:([*^$|!~]?=)"+M+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+$+")|)|)"+M+"*\\]",I=":("+W+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+B.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=RegExp("^"+M+"*,"+M+"*"),X=RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=RegExp(M+"*[+~]"),Y=RegExp("="+M+"*([^\\]'\"]*)"+M+"*\\]","g"),V=RegExp(I),G=RegExp("^"+$+"$"),J={ID:RegExp("^#("+W+")"),CLASS:RegExp("^\\.("+W+")"),TAG:RegExp("^("+W.replace("w","w*")+")"),ATTR:RegExp("^"+B),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\d$/i,tt=/'|\\/g,nt=RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),rt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){q.apply(e,F.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p&&c(t),t=t||p,r=r||[],!e||"string"!=typeof e)return r;if(1!==(u=t.nodeType)&&9!==u)return[];if(h&&!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(s=t.getElementById(a),!s||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(a))&&y(t,s)&&s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&(!d||!d.test(e))){if(m=g=v,x=t,w=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){f=vt(e),(g=t.getAttribute("id"))?m=g.replace(tt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=f.length;while(l--)f[l]=m+xt(f[l]);x=U.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute("id")}}}return St(e.replace(z,"$1"),t,r,i)}function st(e){return Q.test(e+"")}function at(){var e=[];function t(n,r){return e.push(n+=" ")>i.cacheLength&&delete t[e.shift()],t[n]=r}return t}function ut(e){return e[v]=!0,e}function lt(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t,n){e=e.split("|");var r,o=e.length,s=n?null:t;while(o--)(r=i.attrHandle[e[o]])&&r!==t||(i.attrHandle[e[o]]=s)}function pt(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:e[t]===!0?t.toLowerCase():null}function ft(e,t){return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function ht(e){return"input"===e.nodeName.toLowerCase()?e.defaultValue:undefined}function dt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function gt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function mt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function yt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}s=ot.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.parentWindow;return t!==p&&9===t.nodeType&&t.documentElement?(p=t,f=t.documentElement,h=!s(t),r&&r.frameElement&&r.attachEvent("onbeforeunload",function(){c()}),n.attributes=lt(function(e){return e.innerHTML="<a href='#'></a>",ct("type|href|height|width",ft,"#"===e.firstChild.getAttribute("href")),ct(R,pt,null==e.getAttribute("disabled")),e.className="i",!e.getAttribute("className")}),n.input=lt(function(e){return e.innerHTML="<input>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}),ct("value",ht,n.attributes&&n.input),n.getElementsByTagName=lt(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=lt(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),n.getById=lt(function(e){return f.appendChild(e).id=v,!t.getElementsByName||!t.getElementsByName(v).length}),n.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){return e.getAttribute("id")===t}}):(delete i.find.ID,i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=n.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&h?t.getElementsByClassName(e):undefined},g=[],d=[],(n.qsa=st(t.querySelectorAll))&&(lt(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll(":checked").length||d.push(":checked")}),lt(function(e){var n=t.createElement("input");n.setAttribute("type","hidden"),e.appendChild(n).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&d.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||d.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),d.push(",.*:")})),(n.matchesSelector=st(m=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&<(function(e){n.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",I)}),d=d.length&&RegExp(d.join("|")),g=g.length&&RegExp(g.join("|")),y=st(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},n.sortDetached=lt(function(e){return 1&e.compareDocumentPosition(t.createElement("div"))}),S=f.compareDocumentPosition?function(e,r){if(e===r)return E=!0,0;var i=r.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(r);return i?1&i||!n.sortDetached&&r.compareDocumentPosition(e)===i?e===t||y(b,e)?-1:r===t||y(b,r)?1:l?P.call(l,e)-P.call(l,r):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],u=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:l?P.call(l,e)-P.call(l,n):0;if(o===s)return dt(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)u.unshift(r);while(a[i]===u[i])i++;return i?dt(a[i],u[i]):a[i]===b?-1:u[i]===b?1:0},t):p},ot.matches=function(e,t){return ot(e,null,null,t)},ot.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Y,"='$1']"),!(!n.matchesSelector||!h||g&&g.test(t)||d&&d.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return ot(t,p,null,[e]).length>0},ot.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},ot.attr=function(e,t){(e.ownerDocument||e)!==p&&c(e);var r=i.attrHandle[t.toLowerCase()],o=r&&A.call(i.attrHandle,t.toLowerCase())?r(e,t,!h):undefined;return o===undefined?n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null:o},ot.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ot.uniqueSort=function(e){var t,r=[],i=0,o=0;if(E=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),E){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return e},o=ot.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=ot.selectors={cacheLength:50,createPseudo:ut,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(nt,rt),e[3]=(e[4]||e[5]||"").replace(nt,rt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ot.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ot.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return J.CHILD.test(e[0])?null:(e[3]&&e[4]!==undefined?e[2]=e[4]:n&&V.test(n)&&(t=vt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(nt,rt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ot.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,y=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){while(g){p=t;while(p=p[g])if(a?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){c=m[v]||(m[v]={}),l=c[e]||[],h=l[0]===w&&l[1],f=l[0]===w&&l[2],p=h&&m.childNodes[h];while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[w,h,f];break}}else if(x&&(l=(t[v]||(t[v]={}))[e])&&l[0]===w)f=l[1];else while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if((a?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(x&&((p[v]||(p[v]={}))[e]=[w,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ot.error("unsupported pseudo: "+e);return r[v]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var i,o=r(e,t),s=o.length;while(s--)i=P.call(e,o[s]),e[i]=!(n[i]=o[s])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ut(function(e){var t=[],n=[],r=a(e.replace(z,"$1"));return r[v]?ut(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ut(function(e){return function(t){return ot(e,t).length>0}}),contains:ut(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ut(function(e){return G.test(e||"")||ot.error("unsupported lang: "+e),e=e.replace(nt,rt).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return et.test(e.nodeName)},input:function(e){return Z.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:yt(function(){return[0]}),last:yt(function(e,t){return[t-1]}),eq:yt(function(e,t,n){return[0>n?n+t:n]}),even:yt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:yt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:yt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:yt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=gt(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=mt(t);function vt(e,t){var n,r,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);a=e,u=[],l=i.preFilter;while(a){(!n||(r=_.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=X.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(z," ")}),a=a.slice(n.length));for(s in i.filter)!(r=J[s].exec(a))||l[s]&&!(r=l[s](r))||(n=r.shift(),o.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ot.error(e):k(e,u).slice(0)}function xt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function bt(e,t,n){var i=t.dir,o=n&&"parentNode"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,a){var u,l,c,p=w+" "+s;if(a){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[v]||(t[v]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,a)||r,l[1]===!0)return!0}}function wt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Tt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function Ct(e,t,n,r,i,o){return r&&!r[v]&&(r=Ct(r)),i&&!i[v]&&(i=Ct(i,o)),ut(function(o,s,a,u){var l,c,p,f=[],h=[],d=s.length,g=o||Et(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:Tt(g,f,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r){l=Tt(y,h),r(l,[],a,u),c=l.length;while(c--)(p=l[c])&&(y[h[c]]=!(m[h[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?P.call(o,p):f[c])>-1&&(o[l]=!(s[l]=p))}}else y=Tt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):O.apply(s,y)})}function kt(e){var t,n,r,o=e.length,s=i.relative[e[0].type],a=s||i.relative[" "],l=s?1:0,c=bt(function(e){return e===t},a,!0),p=bt(function(e){return P.call(t,e)>-1},a,!0),f=[function(e,n,r){return!s&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>l;l++)if(n=i.relative[e[l].type])f=[bt(wt(f),n)];else{if(n=i.filter[e[l].type].apply(null,e[l].matches),n[v]){for(r=++l;o>r;r++)if(i.relative[e[r].type])break;return Ct(l>1&&wt(f),l>1&&xt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&kt(e.slice(l,r)),o>r&&kt(e=e.slice(r)),o>r&&xt(e))}f.push(n)}return wt(f)}function Nt(e,t){var n=0,o=t.length>0,s=e.length>0,a=function(a,l,c,f,h){var d,g,m,y=[],v=0,x="0",b=a&&[],T=null!=h,C=u,k=a||s&&i.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(u=l!==p&&l,r=n);null!=(d=k[x]);x++){if(s&&d){g=0;while(m=e[g++])if(m(d,l,c)){f.push(d);break}T&&(w=N,r=++n)}o&&((d=!m&&d)&&v--,a&&b.push(d))}if(v+=x,o&&x!==v){g=0;while(m=t[g++])m(b,y,l,c);if(a){if(v>0)while(x--)b[x]||y[x]||(y[x]=H.call(f));y=Tt(y)}O.apply(f,y),T&&!a&&y.length>0&&v+t.length>1&&ot.uniqueSort(f)}return T&&(w=N,u=C),b};return o?ut(a):a}a=ot.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){t||(t=vt(e)),n=t.length;while(n--)o=kt(t[n]),o[v]?r.push(o):i.push(o);o=N(e,Nt(i,r))}return o};function Et(e,t,n){var r=0,i=t.length;for(;i>r;r++)ot(e,t[r],n);return n}function St(e,t,r,o){var s,u,l,c,p,f=vt(e);if(!o&&1===f.length){if(u=f[0]=f[0].slice(0),u.length>2&&"ID"===(l=u[0]).type&&n.getById&&9===t.nodeType&&h&&i.relative[u[1].type]){if(t=(i.find.ID(l.matches[0].replace(nt,rt),t)||[])[0],!t)return r;e=e.slice(u.shift().value.length)}s=J.needsContext.test(e)?0:u.length;while(s--){if(l=u[s],i.relative[c=l.type])break;if((p=i.find[c])&&(o=p(l.matches[0].replace(nt,rt),U.test(u[0].type)&&t.parentNode||t))){if(u.splice(s,1),e=o.length&&xt(u),!e)return O.apply(r,o),r;break}}}return a(e,f)(o,t,!h,r,U.test(e)),r}i.pseudos.nth=i.pseudos.eq;function jt(){}jt.prototype=i.filters=i.pseudos,i.setFilters=new jt,n.sortStable=v.split("").sort(S).join("")===v,c(),[0,0].sort(S),n.detectDuplicates=E,x.find=ot,x.expr=ot.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ot.uniqueSort,x.text=ot.getText,x.isXMLDoc=ot.isXML,x.contains=ot.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(p){for(t=e.memory&&p,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(a[s].apply(p[0],p[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))>-1)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!a||n&&!u||(r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,s="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,H,q=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))x.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){return t===undefined||t&&"string"==typeof t&&n===undefined?this.get(e,t):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(t===undefined)this.cache[o]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):(i=x.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(w)||[])),n=r.length;while(n--)delete s[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}},L=new F,H=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||H.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return H.access(e,t,n)},_removeData:function(e,t){H.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!H.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.slice(5)),P(i,r,s[r]));H.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:q.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=H.get(e,t),n&&(!r||x.isArray(n)?r=H.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire() -},_queueHooks:function(e,t){var n=t+"queueHooks";return H.get(e,n)||H.access(e,n,{empty:x.Callbacks("once memory").add(function(){H.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=undefined),e=e||"fx";while(s--)n=H.get(o[s],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n\f]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,i="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,s=0,a=x(this),u=t,l=e.match(w)||[];while(o=l[s++])u=i?u:!a.hasClass(o),a[u?"addClass":"removeClass"](o)}else(n===r||"boolean"===n)&&(this.className&&H.set(this,"__className__",this.className),this.className=this.className||e===!1?"":H.get(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,x(this).val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;for(;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.bool.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,p,f,h,d,g,m,y=H.get(e);if(y){n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(f=x.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=x.event.special[d]||{},p=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,f.setup&&f.setup.call(e,i,g,a)!==!1||e.addEventListener&&e.addEventListener(d,a,!1)),f.add&&(f.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,p):h.push(p),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,p,f,h,d,g,m=H.hasData(e)&&H.get(e);if(m&&(u=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){p=x.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;while(o--)c=f[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(e,c));s&&!f.length&&(p.teardown&&p.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,H.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,p,f,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),f=x.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!x.isWindow(r)){for(l=f.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])&&!t.isPropagationStopped())t.type=s>1?l:f.bindType||d,p=(H.get(a,"events")||{})[t.type]&&H.get(a,"handle"),p&&p.apply(a,n),p=c&&a[c],p&&x.acceptData(a)&&p.apply&&p.apply(a,n)===!1&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(H.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,s=e,a=this.fixHooks[i];a||(this.fixHooks[i]=a=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new x.Event(s),t=r.length;while(t--)n=r[t],e[n]=s[n];return e.target||(e.target=o),3===e.target.nodeType&&(e.target=e.target.parentNode),a.filter?a.filter(e,s):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=undefined),n===!1&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=/^(?:parents|prev(?:Until|All))/,Q=x.expr.match.needsContext,K={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(et(this,e||[],!0))},filter:function(e){return this.pushStack(et(this,e||[],!1))},is:function(e){return!!et(this,"string"==typeof e&&Q.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],s=Q.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function Z(e,t){while((e=e[t])&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return Z(e,"nextSibling")},prev:function(e){return Z(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return e.contentDocument||x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(K[e]||x.unique(i),J.test(e)&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function et(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}var tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,nt=/<([\w:]+)/,rt=/<|&#?\w+;/,it=/<(?:script|style|link)/i,ot=/^(?:checkbox|radio)$/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,at=/^$|\/(?:java|ecma)script/i,ut=/^true\/(.*)/,lt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ct={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ct.optgroup=ct.option,ct.tbody=ct.tfoot=ct.colgroup=ct.caption=ct.thead,ct.th=ct.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(mt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&dt(mt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(mt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!it.test(e)&&!ct[(nt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(tt,"<$1></$2>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(mt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=f.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,p=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&st.test(d))return this.each(function(r){var i=p.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(mt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,mt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,ht),l=0;s>l;l++)a=o[l],at.test(a.type||"")&&!H.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(lt,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=mt(a),o=mt(e),r=0,i=o.length;i>r;r++)yt(o[r],s[r]);if(t)if(n)for(o=o||mt(e),s=s||mt(a),r=0,i=o.length;i>r;r++)gt(o[r],s[r]);else gt(e,a);return s=mt(a,"script"),s.length>0&&dt(s,!u&&mt(e,"script")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,p=e.length,f=t.createDocumentFragment(),h=[];for(;p>c;c++)if(i=e[c],i||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(rt.test(i)){o=o||f.appendChild(t.createElement("div")),s=(nt.exec(i)||["",""])[1].toLowerCase(),a=ct[s]||ct._default,o.innerHTML=a[1]+i.replace(tt,"<$1></$2>")+a[2],l=a[0];while(l--)o=o.firstChild;x.merge(h,o.childNodes),o=f.firstChild,o.textContent=""}else h.push(t.createTextNode(i));f.textContent="",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=mt(f.appendChild(i),"script"),u&&dt(o),n)){l=0;while(i=o[l++])at.test(i.type||"")&&n.push(i)}return f},cleanData:function(e){var t,n,r,i,o,s,a=x.event.special,u=0;for(;(n=e[u])!==undefined;u++){if(F.accepts(n)&&(o=n[H.expando],o&&(t=H.cache[o]))){if(r=Object.keys(t.events||{}),r.length)for(s=0;(i=r[s])!==undefined;s++)a[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);H.cache[o]&&delete H.cache[o]}delete L.cache[n[L.expando]]}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}});function pt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ht(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function dt(e,t){var n=e.length,r=0;for(;n>r;r++)H.set(e[r],"globalEval",!t||H.get(t[r],"globalEval"))}function gt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(H.hasData(e)&&(o=H.access(e),s=H.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function mt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function yt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ot.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var vt,xt,bt=/^(none|table(?!-c[ea]).+)/,wt=/^margin/,Tt=RegExp("^("+b+")(.*)$","i"),Ct=RegExp("^("+b+")(?!px)[a-z%]+$","i"),kt=RegExp("^([+-])=("+b+")","i"),Nt={BODY:"block"},Et={position:"absolute",visibility:"hidden",display:"block"},St={letterSpacing:0,fontWeight:400},jt=["Top","Right","Bottom","Left"],Dt=["Webkit","O","Moz","ms"];function At(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Dt.length;while(i--)if(t=Dt[i]+n,t in e)return t;return r}function Lt(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function Ht(t){return e.getComputedStyle(t,null)}function qt(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a>s;s++)r=e[s],r.style&&(o[s]=H.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&Lt(r)&&(o[s]=H.access(r,"olddisplay",Rt(r.nodeName)))):o[s]||(i=Lt(r),(n&&"none"!==n||!i)&&H.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=Ht(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return qt(this,!0)},hide:function(){return qt(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:Lt(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=vt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=At(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=kt.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=At(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=vt(e,t,r)),"normal"===i&&t in St&&(i=St[t]),""===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),vt=function(e,t,n){var r,i,o,s=n||Ht(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Ct.test(a)&&wt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ot(e,t,n){var r=Tt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ft(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;for(;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+jt[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+jt[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+jt[o]+"Width",!0,i))):(s+=x.css(e,"padding"+jt[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+jt[o]+"Width",!0,i)));return s}function Pt(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Ht(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=vt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Ct.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ft(e,t,n||(s?"border":"content"),r,o)+"px"}function Rt(e){var t=o,n=Nt[e];return n||(n=Mt(e,t),"none"!==n&&n||(xt=(xt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(xt[0].contentWindow||xt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=Mt(e,t),xt.detach()),Nt[e]=n),n}function Mt(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,t){x.cssHooks[t]={get:function(e,n,r){return n?0===e.offsetWidth&&bt.test(x.css(e,"display"))?x.swap(e,Et,function(){return Pt(e,t,r)}):Pt(e,t,r):undefined},set:function(e,n,r){var i=r&&Ht(e);return Ot(e,n,r?Ft(e,t,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,t){return t?x.swap(e,{display:"inline-block"},vt,[e,"marginRight"]):undefined}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,t){x.cssHooks[t]={get:function(e,n){return n?(n=vt(e,t),Ct.test(n)?x(e).position()[t]+"px":n):undefined}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+jt[r]+t]=o[r]||o[r-2]||o[0];return i}},wt.test(e)||(x.cssHooks[e+t].set=Ot)});var Wt=/%20/g,$t=/\[\]$/,Bt=/\r?\n/g,It=/^(?:submit|button|image|reset|file)$/i,zt=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&zt.test(this.nodeName)&&!It.test(e)&&(this.checked||!ot.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(Bt,"\r\n")}}):{name:t.name,value:n.replace(Bt,"\r\n")}}).get()}}),x.param=function(e,t){var n,r=[],i=function(e,t){t=x.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(t===undefined&&(t=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){i(this.name,this.value)});else for(n in e)_t(n,e[n],t,i);return r.join("&").replace(Wt,"+")};function _t(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||$t.test(e)?r(e,i):_t(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)_t(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var Xt,Ut,Yt=x.now(),Vt=/\?/,Gt=/#.*$/,Jt=/([?&])_=[^&]*/,Qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Kt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Zt=/^(?:GET|HEAD)$/,en=/^\/\//,tn=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,nn=x.fn.load,rn={},on={},sn="*/".concat("*"); -try{Ut=i.href}catch(an){Ut=o.createElement("a"),Ut.href="",Ut=Ut.href}Xt=tn.exec(Ut.toLowerCase())||[];function un(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function ln(e,t,n,r){var i={},o=e===on;function s(a){var u;return i[a]=!0,x.each(e[a]||[],function(e,a){var l=a(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):undefined:(t.dataTypes.unshift(l),s(l),!1)}),u}return s(t.dataTypes[0])||!i["*"]&&s("*")}function cn(e,t){var n,r,i=x.ajaxSettings.flatOptions||{};for(n in t)t[n]!==undefined&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,t,n){if("string"!=typeof e&&nn)return nn.apply(this,arguments);var r,i,o,s=this,a=e.indexOf(" ");return a>=0&&(r=e.slice(a),e=e.slice(0,a)),x.isFunction(t)?(n=t,t=undefined):t&&"object"==typeof t&&(i="POST"),s.length>0&&x.ajax({url:e,type:i,dataType:"html",data:t}).done(function(e){o=arguments,s.html(r?x("<div>").append(x.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){s.each(n,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ut,type:"GET",isLocal:Kt.test(Xt[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":sn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?cn(cn(e,x.ajaxSettings),t):cn(x.ajaxSettings,e)},ajaxPrefilter:un(rn),ajaxTransport:un(on),ajax:function(e,t){"object"==typeof e&&(t=e,e=undefined),t=t||{};var n,r,i,o,s,a,u,l,c=x.ajaxSetup({},t),p=c.context||c,f=c.context&&(p.nodeType||p.jquery)?x(p):x.event,h=x.Deferred(),d=x.Callbacks("once memory"),g=c.statusCode||{},m={},y={},v=0,b="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===v){if(!o){o={};while(t=Qt.exec(i))o[t[1].toLowerCase()]=t[2]}t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===v?i:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return v||(e=y[n]=y[n]||e,m[e]=t),this},overrideMimeType:function(e){return v||(c.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>v)for(t in e)g[t]=[g[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||b;return n&&n.abort(t),k(0,t),this}};if(h.promise(T).complete=d.add,T.success=T.done,T.error=T.fail,c.url=((e||c.url||Ut)+"").replace(Gt,"").replace(en,Xt[1]+"//"),c.type=t.method||t.type||c.method||c.type,c.dataTypes=x.trim(c.dataType||"*").toLowerCase().match(w)||[""],null==c.crossDomain&&(a=tn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===Xt[1]&&a[2]===Xt[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(Xt[3]||("http:"===Xt[1]?"80":"443")))),c.data&&c.processData&&"string"!=typeof c.data&&(c.data=x.param(c.data,c.traditional)),ln(rn,c,t,T),2===v)return T;u=c.global,u&&0===x.active++&&x.event.trigger("ajaxStart"),c.type=c.type.toUpperCase(),c.hasContent=!Zt.test(c.type),r=c.url,c.hasContent||(c.data&&(r=c.url+=(Vt.test(r)?"&":"?")+c.data,delete c.data),c.cache===!1&&(c.url=Jt.test(r)?r.replace(Jt,"$1_="+Yt++):r+(Vt.test(r)?"&":"?")+"_="+Yt++)),c.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(c.data&&c.hasContent&&c.contentType!==!1||t.contentType)&&T.setRequestHeader("Content-Type",c.contentType),T.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+("*"!==c.dataTypes[0]?", "+sn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)T.setRequestHeader(l,c.headers[l]);if(c.beforeSend&&(c.beforeSend.call(p,T,c)===!1||2===v))return T.abort();b="abort";for(l in{success:1,error:1,complete:1})T[l](c[l]);if(n=ln(on,c,t,T)){T.readyState=1,u&&f.trigger("ajaxSend",[T,c]),c.async&&c.timeout>0&&(s=setTimeout(function(){T.abort("timeout")},c.timeout));try{v=1,n.send(m,k)}catch(C){if(!(2>v))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,t,o,a){var l,m,y,b,w,C=t;2!==v&&(v=2,s&&clearTimeout(s),n=undefined,i=a||"",T.readyState=e>0?4:0,l=e>=200&&300>e||304===e,o&&(b=pn(c,T,o)),b=fn(c,b,T,l),l?(c.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(x.lastModified[r]=w),w=T.getResponseHeader("etag"),w&&(x.etag[r]=w)),204===e||"HEAD"===c.type?C="nocontent":304===e?C="notmodified":(C=b.state,m=b.data,y=b.error,l=!y)):(y=C,(e||!C)&&(C="error",0>e&&(e=0))),T.status=e,T.statusText=(t||C)+"",l?h.resolveWith(p,[m,C,T]):h.rejectWith(p,[T,C,y]),T.statusCode(g),g=undefined,u&&f.trigger(l?"ajaxSuccess":"ajaxError",[T,c,l?m:y]),d.fireWith(p,[T,C]),u&&(f.trigger("ajaxComplete",[T,c]),--x.active||x.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,undefined,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,r,i){return x.isFunction(n)&&(i=i||r,r=n,n=undefined),x.ajax({url:e,type:t,dataType:i,data:n,success:r})}});function pn(e,t,n){var r,i,o,s,a=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),r===undefined&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):undefined}function fn(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(s=l[u+" "+o]||l["* "+o],!s)for(i in l)if(a=i.split(" "),a[1]===o&&(s=l[u+" "+a[0]]||l["* "+a[0]])){s===!0?s=l[i]:l[i]!==!0&&(o=a[0],c.unshift(a[1]));break}if(s!==!0)if(s&&e["throws"])t=s(t);else try{t=s(t)}catch(p){return{state:"parsererror",error:s?p:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===undefined&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=x("<script>").prop({async:!0,charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),o.head.appendChild(t[0])},abort:function(){n&&n()}}}});var hn=[],dn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=hn.pop()||x.expando+"_"+Yt++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,s,a=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");return a||"jsonp"===t.dataTypes[0]?(i=t.jsonpCallback=x.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(Vt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return s||x.error(i+" was not called"),s[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){s=arguments},r.always(function(){e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,hn.push(i)),s&&x.isFunction(o)&&o(s[0]),s=o=undefined}),"script"):undefined}),x.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var gn=x.ajaxSettings.xhr(),mn={0:200,1223:204},yn=0,vn={};e.ActiveXObject&&x(e).on("unload",function(){for(var e in vn)vn[e]();vn=undefined}),x.support.cors=!!gn&&"withCredentials"in gn,x.support.ajax=gn=!!gn,x.ajaxTransport(function(e){var t;return x.support.cors||gn&&!e.crossDomain?{send:function(n,r){var i,o,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)s[i]=e.xhrFields[i];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(i in n)s.setRequestHeader(i,n[i]);t=function(e){return function(){t&&(delete vn[o],t=s.onload=s.onerror=null,"abort"===e?s.abort():"error"===e?r(s.status||404,s.statusText):r(mn[s.status]||s.status,s.statusText,"string"==typeof s.responseText?{text:s.responseText}:undefined,s.getAllResponseHeaders()))}},s.onload=t(),s.onerror=t("error"),t=vn[o=yn++]=t("abort"),s.send(e.hasContent&&e.data||null)},abort:function(){t&&t()}}:undefined});var xn,bn,wn=/^(?:toggle|show|hide)$/,Tn=RegExp("^(?:([+-])=|)("+b+")([a-z%]*)$","i"),Cn=/queueHooks$/,kn=[An],Nn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Tn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),s=(x.cssNumber[e]||"px"!==o&&+r)&&Tn.exec(x.css(n.elem,e)),a=1,u=20;if(s&&s[3]!==o){o=o||s[3],i=i||[],s=+r||1;do a=a||".5",s/=a,x.style(n.elem,e,s+o);while(a!==(a=n.cur()/r)&&1!==a&&--u)}return i&&(s=n.start=+s||+r||0,n.unit=o,n.end=i[1]?s+(i[1]+1)*i[2]:+i[2]),n}]};function En(){return setTimeout(function(){xn=undefined}),xn=x.now()}function Sn(e,t,n){var r,i=(Nn[t]||[]).concat(Nn["*"]),o=0,s=i.length;for(;s>o;o++)if(r=i[o].call(n,t,e))return r}function jn(e,t,n){var r,i,o=0,s=kn.length,a=x.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=xn||En(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,s=0,u=l.tweens.length;for(;u>s;s++)l.tweens[s].run(o);return a.notifyWith(e,[l,o,n]),1>o&&u?n:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:xn||En(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?a.resolveWith(e,[l,t]):a.rejectWith(e,[l,t]),this}}),c=l.props;for(Dn(c,l.opts.specialEasing);s>o;o++)if(r=kn[o].call(l,e,c,l.opts))return r;return x.map(c,Sn,l),x.isFunction(l.opts.start)&&l.opts.start.call(e,l),x.fx.timer(x.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function Dn(e,t){var n,r,i,o,s;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),s=x.cssHooks[r],s&&"expand"in s){o=s.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(jn,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Nn[n]=Nn[n]||[],Nn[n].unshift(t)},prefilter:function(e,t){t?kn.unshift(e):kn.push(e)}});function An(e,t,n){var r,i,o,s,a,u,l=this,c={},p=e.style,f=e.nodeType&&Lt(e),h=H.get(e,"fxshow");n.queue||(a=x._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,u=a.empty.fire,a.empty.fire=function(){a.unqueued||u()}),a.unqueued++,l.always(function(){l.always(function(){a.unqueued--,x.queue(e,"fx").length||a.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(p.display="inline-block")),n.overflow&&(p.overflow="hidden",l.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],wn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show")){if("show"!==i||!h||h[r]===undefined)continue;f=!0}c[r]=h&&h[r]||x.style(e,r)}if(!x.isEmptyObject(c)){h?"hidden"in h&&(f=h.hidden):h=H.access(e,"fxshow",{}),o&&(h.hidden=!f),f?x(e).show():l.done(function(){x(e).hide()}),l.done(function(){var t;H.remove(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)s=Sn(f?h[r]:0,r,l),r in h||(h[r]=s.start,f&&(s.end=s.start,s.start="width"===r||"height"===r?1:0))}}function Ln(e,t,n,r,i){return new Ln.prototype.init(e,t,n,r,i)}x.Tween=Ln,Ln.prototype={constructor:Ln,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=Ln.propHooks[this.prop];return e&&e.get?e.get(this):Ln.propHooks._default.get(this)},run:function(e){var t,n=Ln.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ln.propHooks._default.set(this),this}},Ln.prototype.init.prototype=Ln.prototype,Ln.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Ln.propHooks.scrollTop=Ln.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(Hn(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Lt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),s=function(){var t=jn(this,x.extend({},e),o);(i||H.get(this,"finish"))&&t.stop(!0)};return s.finish=s,i||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=undefined),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=x.timers,s=H.get(this);if(i)s[i]&&s[i].stop&&r(s[i]);else for(i in s)s[i]&&s[i].stop&&Cn.test(i)&&r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));(t||!n)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=H.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,s=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function Hn(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=jt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:Hn("show"),slideUp:Hn("hide"),slideToggle:Hn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=Ln.prototype.init,x.fx.tick=function(){var e,t=x.timers,n=0;for(xn=x.now();t.length>n;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||x.fx.stop(),xn=undefined},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){bn||(bn=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(bn),bn=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===undefined?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,i=this[0],o={top:0,left:0},s=i&&i.ownerDocument;if(s)return t=s.documentElement,x.contains(t,i)?(typeof i.getBoundingClientRect!==r&&(o=i.getBoundingClientRect()),n=qn(s),{top:o.top+n.pageYOffset-t.clientTop,left:o.left+n.pageXOffset-t.clientLeft}):o},x.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l,c=x.css(e,"position"),p=x(e),f={};"static"===c&&(e.style.position="relative"),a=p.offset(),o=x.css(e,"top"),u=x.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1,l?(r=p.position(),s=r.top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),x.isFunction(t)&&(t=t.call(e,n,a)),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+i),"using"in t?t.using.call(e,f):p.css(f)}},x.fn.extend({position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===x.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(r=e.offset()),r.top+=x.css(e[0],"borderTopWidth",!0),r.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-r.top-x.css(n,"marginTop",!0),left:t.left-r.left-x.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,n){var r="pageYOffset"===n;x.fn[t]=function(i){return x.access(this,function(t,i,o){var s=qn(t);return o===undefined?s?s[n]:t[i]:(s?s.scrollTo(r?e.pageXOffset:o,r?o:e.pageYOffset):t[i]=o,undefined)},t,i,arguments.length,null)}});function qn(e){return x.isWindow(e)?e:9===e.nodeType&&e.defaultView}x.each({Height:"height",Width:"width"},function(e,t){x.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){x.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),s=n||(r===!0||i===!0?"margin":"border");return x.access(this,function(t,n,r){var i;return x.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):r===undefined?x.css(t,n,s):x.style(t,n,r,s)},t,o?r:undefined,o,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}),"object"==typeof e&&"object"==typeof e.document&&(e.jQuery=e.$=x)})(window); diff --git a/www/js/lib/modernizr-build.js b/www/js/lib/modernizr-build.js index a719e2a..6349009 100644 --- a/www/js/lib/modernizr-build.js +++ b/www/js/lib/modernizr-build.js @@ -1,5 +1,5 @@ /*! - * Modernizr v3.0.0pre + * modernizr v3.0.0pre * modernizr.com * * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton, Ryan Seddon, Alexander Farkas, Ben Alman, Stu Cox @@ -94,8 +94,6 @@ var nameIdx; var featureName; var featureNameSplit; - var modernizrProp; - var mPropCount; for ( var featureIdx in tests ) { featureNames = []; @@ -154,8 +152,6 @@ // ['no-webp', 'borderradius', ...] function setClasses( classes ) { var className = docElement.className; - var removeClasses = []; - var regex; var classPrefix = Modernizr._config.classPrefix || ''; // Change `no-js` to `js` (we do this regardles of the `enableClasses` @@ -165,21 +161,8 @@ className = className.replace(reJS, '$1'+classPrefix+'js$2'); if(Modernizr._config.enableClasses) { - // Need to remove any existing `no-*` classes for features we've detected - for(var i = 0; i < classes.length; i++) { - if(!classes[i].match('^no-')) { - removeClasses.push('no-' + classes[i]); - } - } - - // Use a regex to remove the old... - regex = new RegExp('(^|\\s)' + removeClasses.join('|') + '(\\s|$)', 'g'); - className = className.replace(regex, '$1$2'); - - // Then add the new... + // Add the new classes className += ' ' + classPrefix + classes.join(' ' + classPrefix); - - // Apply docElement.className = className; } @@ -1030,7 +1013,7 @@ var docElement = doc.documentElement, if ( first ) { if ( elem != "img" ) { sTimeout( function () { - insBeforeObj.removeChild( preloadElem ); + insBeforeObj.removeChild( preloadElem ); }, 50); } @@ -1315,7 +1298,7 @@ var docElement = doc.documentElement, // the always stuff always loads second. always && handleGroup( always ); - // If complete callback is used without loading anything + // If complete callback is used without loading anything !always && !!testObject['complete'] && handleGroup(''); } @@ -1597,7 +1580,7 @@ ModernizrProto['load'] = function() { } // Otherwise do it properly - var afterInit, i, j, prop, before; + var afterInit, i, prop, before; // If we don't have a style element, that means // we're running async or after the core tests, @@ -1621,7 +1604,7 @@ ModernizrProto['load'] = function() { prop = props[i]; before = mStyle.style[prop]; - if ( !contains(prop, "-") && mStyle.style[prop] !== undefined ) { + if ( !contains(prop, '-') && mStyle.style[prop] !== undefined ) { // If value to test has been passed in, do a set-and-check test. // 0 (integer) is a valid property value, so check that `value` isn't @@ -1678,7 +1661,7 @@ ModernizrProto['load'] = function() { var target = this; - if (typeof target != "function") { + if (typeof target != 'function') { throw new TypeError(); } @@ -1761,20 +1744,23 @@ The API has been [heavily criticized](http://alistapart.com/article/application- /*! { - "name": "Web Audio API", - "property": "webaudio", - "caniuse": "audio-api", - "polyfills": ["xaudiojs", "dynamicaudiojs", "audiolibjs"], - "tags": ["audio", "media"], - "authors": ["Addy Osmani"], - "notes": [{ - "name": "W3 Specification", - "href": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html" - }] + "name": "Audio Loop Attribute", + "property": "audioloop", + "tags": ["audio", "media"] +} +!*/ + + Modernizr.addTest('audioloop', 'loop' in createElement('audio')); + +/*! +{ + "name": "Audio Preload Attribute", + "property": "audiopreload", + "tags": ["audio", "media"] } !*/ - Modernizr.addTest('webaudio', 'webkitAudioContext' in window || 'AudioContext' in window); + Modernizr.addTest('audiopreload', 'preload' in createElement('audio')); /*! { @@ -1825,166 +1811,6 @@ The API has been [heavily criticized](http://alistapart.com/article/application- return bool; }); - - // Following spec is to expose vendor-specific style properties as: - // elem.style.WebkitBorderRadius - // and the following would be incorrect: - // elem.style.webkitBorderRadius - - // Webkit ghosts their properties in lowercase but Opera & Moz do not. - // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+ - // erik.eae.net/archives/2008/03/10/21.48.10/ - - // More here: github.com/Modernizr/Modernizr/issues/issue/21 - var omPrefixes = 'Webkit Moz O ms'; - - - var cssomPrefixes = omPrefixes.split(' '); - ModernizrProto._cssomPrefixes = cssomPrefixes; - - - var domPrefixes = omPrefixes.toLowerCase().split(' '); - ModernizrProto._domPrefixes = domPrefixes; - - - /** - * testDOMProps is a generic DOM property test; if a browser supports - * a certain property, it won't return undefined for it. - */ - function testDOMProps( props, obj, elem ) { - var item; - - for ( var i in props ) { - if ( props[i] in obj ) { - - // return the property name as a string - if (elem === false) return props[i]; - - item = obj[props[i]]; - - // let's bind a function (and it has a bind method -- certain native objects that report that they are a - // function don't [such as webkitAudioContext]) - if (is(item, 'function') && 'bind' in item){ - // default to autobind unless override - return item.bind(elem || obj); - } - - // return the unbound function or obj or value - return item; - } - } - return false; - } - - ; - - // List of property values to set for css tests. See ticket #21 - var prefixes = ' -webkit- -moz- -o- -ms- '.split(' '); - - // expose these for the plugin API. Look in the source for how to join() them against your input - ModernizrProto._prefixes = prefixes; - - - - /** - * testPropsAll tests a list of DOM properties we want to check against. - * We specify literally ALL possible (known and/or likely) properties on - * the element including the non-vendor prefixed one, for forward- - * compatibility. - */ - function testPropsAll( prop, prefixed, elem, value, skipValueTest ) { - - var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), - props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' '); - - // did they call .prefixed('boxSizing') or are we just testing a prop? - if(is(prefixed, "string") || is(prefixed, "undefined")) { - return testProps(props, prefixed, value, skipValueTest); - - // otherwise, they called .prefixed('requestAnimationFrame', window[, elem]) - } else { - props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' '); - return testDOMProps(props, prefixed, elem); - } - } - - // Modernizr.testAllProps() investigates whether a given style property, - // or any of its vendor-prefixed variants, is recognized - // Note that the property names must be provided in the camelCase variant. - // Modernizr.testAllProps('boxSizing') - ModernizrProto.testAllProps = testPropsAll; - - - - // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input - // Modernizr.prefixed('boxSizing') // 'MozBoxSizing' - - // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style. - // Return values will also be the camelCase variant, if you need to translate that to hypenated style use: - // - // str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-'); - - // If you're trying to ascertain which transition end event to bind to, you might do something like... - // - // var transEndEventNames = { - // 'WebkitTransition' : 'webkitTransitionEnd',// Saf 6, Android Browser - // 'MozTransition' : 'transitionend', // only for FF < 15 - // 'transition' : 'transitionend' // IE10, Opera, Chrome, FF 15+, Saf 7+ - // }, - // transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ]; - - var prefixed = ModernizrProto.prefixed = function( prop, obj, elem ) { - if (!obj) { - return testPropsAll(prop, 'pfx'); - } else { - // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame' - return testPropsAll(prop, obj, elem); - } - }; - - -/*! -{ - "name": "Low Battery Level", - "property": "lowbattery", - "tags": ["hardware", "mobile"], - "authors": ["Paul Sayre"], - "notes": [{ - "name": "MDN Docs", - "href": "http://developer.mozilla.org/en/DOM/window.navigator.mozBattery" - }] -} -!*//* DOC -Enable a developer to remove CPU intensive CSS/JS when battery is low -*/ - - Modernizr.addTest('lowbattery', function() { - var minLevel = 0.20; - var battery = prefixed('battery', navigator); - return !!(battery && !battery.charging && battery.level <= minLevel); - }); - -/*! -{ - "name": "Battery API", - "property": "batteryapi", - "aliases": ["battery-api"], - "tags": ["device", "media"], - "authors": ["Paul Sayre"], - "notes": [{ - "name": "MDN documentation", - "href": "https://developer.mozilla.org/en/DOM/window.navigator.mozBattery" - }] -} -!*/ -/* DOC - -Detect support for the Battery API, for accessing information about the system's battery charge level. - -*/ - - Modernizr.addTest('batteryapi', !!prefixed('battery', navigator), { aliases: ['battery-api'] }); - /*! { "name": "Canvas", @@ -2057,30 +1883,6 @@ Detects support for the text APIs for `<canvas>` elements. /*! { - "name": "Web Cryptography API getRandomValues method", - "property": "getrandomvalues", - "caniuse": "window.crypto.getRandomValues", - "tags": ["crypto"], - "authors": ["komachi"], - "notes": [{ - "name": "W3C Editor’s Draft", - "href": "https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#RandomSource-method-getRandomValues" - }], - "polyfills": [ - "polycrypt" - ] -} -!*/ -/* DOC - -Detects support for the window.crypto.getRandomValues for generate cryptographically secure random numbers - -*/ - - Modernizr.addTest('getrandomvalues', 'crypto' in window && 'getRandomValues' in window.crypto); - -/*! -{ "name": "Content Editable", "property": "contenteditable", "caniuse": "contenteditable", @@ -2106,7 +1908,7 @@ Detects support for the `contenteditable` attribute of elements, allowing their var div = createElement('div'); div.contentEditable = true; - return div.contentEditable === "true"; + return div.contentEditable === 'true'; }); /*! @@ -2130,7 +1932,7 @@ Detects support for the Content Security Policy protocol for mitigating and repo */ - Modernizr.addTest('contentsecuritypolicy', 'SecurityPolicy' in document); + Modernizr.addTest('contentsecuritypolicy', ('securityPolicy' in document || 'SecurityPolicy' in document)); /*! { @@ -2177,35 +1979,104 @@ Detects whether cookie support is enabled. Modernizr.addTest('cookies', function () { // navigator.cookieEnabled is in IE9 but always true. Don't rely on it. - // Create cookie - document.cookie = "cookietest=1"; - var ret = document.cookie.indexOf("cookietest=") != -1; - // Delete cookie - document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT"; - return ret; + // try..catch because some in situations `document.cookie` is exposed but throws a + // SecurityError if you try to access it; e.g. documents created from data URIs + // or in sandboxed iframes (depending on flags/context) + try { + // Create cookie + document.cookie = 'cookietest=1'; + var ret = document.cookie.indexOf('cookietest=') != -1; + // Delete cookie + document.cookie = 'cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT'; + return ret; + } + catch (e) { + return false; + } }); -/*! -{ - "name": "Cross-Origin Resource Sharing", - "property": "cors", - "caniuse": "cors", - "authors": ["Theodoor van Donge"], - "notes": [{ - "name": "MDN documentation", - "href": "https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS" - }], - "polyfills": ["pmxdr", "ppx", "flxhr"] -} -!*/ -/* DOC -Detects support for Cross-Origin Resource Sharing: method of performing XMLHttpRequests across domains. + // Following spec is to expose vendor-specific style properties as: + // elem.style.WebkitBorderRadius + // and the following would be incorrect: + // elem.style.webkitBorderRadius -*/ + // Webkit ghosts their properties in lowercase but Opera & Moz do not. + // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+ + // erik.eae.net/archives/2008/03/10/21.48.10/ - Modernizr.addTest('cors', 'XMLHttpRequest' in window && 'withCredentials' in new XMLHttpRequest()); + // More here: github.com/Modernizr/Modernizr/issues/issue/21 + var omPrefixes = 'Webkit Moz O ms'; + + + var cssomPrefixes = omPrefixes.split(' '); + ModernizrProto._cssomPrefixes = cssomPrefixes; + + var domPrefixes = omPrefixes.toLowerCase().split(' '); + ModernizrProto._domPrefixes = domPrefixes; + + + /** + * testDOMProps is a generic DOM property test; if a browser supports + * a certain property, it won't return undefined for it. + */ + function testDOMProps( props, obj, elem ) { + var item; + + for ( var i in props ) { + if ( props[i] in obj ) { + + // return the property name as a string + if (elem === false) return props[i]; + + item = obj[props[i]]; + + // let's bind a function (and it has a bind method -- certain native objects that report that they are a + // function don't [such as webkitAudioContext]) + if (is(item, 'function') && 'bind' in item){ + // default to autobind unless override + return item.bind(elem || obj); + } + + // return the unbound function or obj or value + return item; + } + } + return false; + } + + ; + + /** + * testPropsAll tests a list of DOM properties we want to check against. + * We specify literally ALL possible (known and/or likely) properties on + * the element including the non-vendor prefixed one, for forward- + * compatibility. + */ + function testPropsAll( prop, prefixed, elem, value, skipValueTest ) { + + var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), + props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' '); + + // did they call .prefixed('boxSizing') or are we just testing a prop? + if(is(prefixed, 'string') || is(prefixed, 'undefined')) { + return testProps(props, prefixed, value, skipValueTest); + + // otherwise, they called .prefixed('requestAnimationFrame', window[, elem]) + } else { + props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' '); + return testDOMProps(props, prefixed, elem); + } + } + + // Modernizr.testAllProps() investigates whether a given style property, + // or any of its vendor-prefixed variants, is recognized + // Note that the property names must be provided in the camelCase variant. + // Modernizr.testAllProps('boxSizing') + ModernizrProto.testAllProps = testPropsAll; + + /** * testAllProps determines whether a given CSS property, in some prefixed @@ -2376,6 +2247,7 @@ Detects support for Cross-Origin Resource Sharing: method of performing XMLHttpR "property": "borderimage", "caniuse": "border-image", "polyfills": ["css3pie"], + "knownBugs": ["Android < 2.0 is true, but has a broken implementation"], "tags": ["css"] } !*/ @@ -2429,6 +2301,14 @@ Detects support for Cross-Origin Resource Sharing: method of performing XMLHttpR Modernizr.addTest('boxsizing', testAllProps('boxSizing', 'border-box', true) && (document.documentMode === undefined || document.documentMode > 7)); + + // List of property values to set for css tests. See ticket #21 + var prefixes = ' -webkit- -moz- -o- -ms- '.split(' '); + + // expose these for the plugin API. Look in the source for how to join() them against your input + ModernizrProto._prefixes = prefixes; + + /*! { "name": "CSS Calc", @@ -2476,10 +2356,10 @@ Method of allowing calculated values for length units. For example: !*/ Modernizr.addTest('checked', function(){ - return testStyles('#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}', function(elem, rule){ + return testStyles('#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}', function( elem ){ var cb = createElement('input'); - cb.setAttribute("type", "checkbox"); - cb.setAttribute("checked", "checked"); + cb.setAttribute('type', 'checkbox'); + cb.setAttribute('checked', 'checked'); elem.appendChild(cb); return cb.offsetLeft === 20; }); @@ -2639,9 +2519,17 @@ More testing neccessary perhaps. "notes": [{ "name": "The _new_ flexbox", "href": "http://dev.w3.org/csswg/css3-flexbox" - }] + }], + "warnings": [ + "A `true` result for this detect does not imply that the `flex-wrap` property is supported; see the `flexwrap` detect." + ] } !*/ +/* DOC + +Detects support for the Flexible Box Layout model, a.k.a. Flexbox, which allows easy manipulation of layout order and sizing within a container. + +*/ Modernizr.addTest('flexbox', testAllProps('flexBasis', '1px', true)); @@ -2677,9 +2565,42 @@ More testing neccessary perhaps. /*! { + "name": "Flex Line Wrapping", + "property": "flexwrap", + "tags": ["css", "flexbox"], + "notes": [{ + "name": "W3C Flexible Box Layout spec", + "href": "http://dev.w3.org/csswg/css3-flexbox" + }], + "warnings": [ + "Does not imply a modern implementation – see documentation." + ] +} +!*/ +/* DOC + +Detects support for the `flex-wrap` CSS property, part of Flexbox, which isn’t present in all Flexbox implementations (notably Firefox). + +This featured in both the 'tweener' syntax (implemented by IE10) and the 'modern' syntax (implemented by others). This detect will return `true` for either of these implementations, as long as the `flex-wrap` property is supported. So to ensure the modern syntax is supported, use together with `Modernizr.flexbox`: + +```javascript +if (Modernizr.flexbox && Modernizr.flexwrap) { + // Modern Flexbox with `flex-wrap` supported +} +else { + // Either old Flexbox syntax, or `flex-wrap` not supported +} +``` + +*/ + + Modernizr.addTest('flexwrap', testAllProps('flexWrap', 'wrap', true)); + +/*! +{ "name": "@font-face", "property": "fontface", - "authors": ["Diego Perini"], + "authors": ["Diego Perini", "Mat Marquis"], "tags": ["css"], "knownBugs": [ "False Positive: WebOS http://github.com/Modernizr/Modernizr/issues/342", @@ -2688,19 +2609,42 @@ More testing neccessary perhaps. "notes": [{ "name": "@font-face detection routine by Diego Perini", "href": "http://javascript.nwbox.com/CSSSupport/" + },{ + "name": "Filament Group @font-face compatibility research", + "href": "https://docs.google.com/presentation/d/1n4NyG4uPRjAA8zn_pSQ_Ket0RhcWC6QlZ6LMjKeECo0/edit#slide=id.p" + },{ + "name": "Filament Grunticon/@font-face device testing results", + "href": "https://docs.google.com/spreadsheet/ccc?key=0Ag5_yGvxpINRdHFYeUJPNnZMWUZKR2ItMEpRTXZPdUE#gid=0" + },{ + "name": "CSS fonts on Android", + "href": "http://stackoverflow.com/questions/3200069/css-fonts-on-android" + },{ + "name": "@font-face and Android", + "href": "http://archivist.incutio.com/viewlist/css-discuss/115960" }] } !*/ - testStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) { - var style = document.getElementById('smodernizr'); - var sheet = style.sheet || style.styleSheet; - var cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : ''; - var bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0; - - Modernizr.addTest('fontface', bool); - }); - + var blacklist = (function() { + var ua = navigator.userAgent; + var wkvers = ua.match( /applewebkit\/([0-9]+)/gi ) && parseFloat( RegExp.$1 ); + var webos = ua.match( /w(eb)?osbrowser/gi ); + var wppre8 = ua.match( /windows phone/gi ) && ua.match( /iemobile\/([0-9])+/gi ) && parseFloat( RegExp.$1 ) >= 9; + var oldandroid = wkvers < 533 && ua.match( /android/gi ); + return webos || oldandroid || wppre8; + }()); + if( blacklist ) { + Modernizr.addTest('fontface', false); + } else { + testStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) { + var style = document.getElementById('smodernizr'); + var sheet = style.sheet || style.styleSheet; + var cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : ''; + var bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0; + Modernizr.addTest('fontface', bool); + }); + } +; /*! { "name": "CSS Generated Content", @@ -2969,7 +2913,7 @@ More testing neccessary perhaps. } } - addTest("csshyphens", function() { + addTest('csshyphens', function() { if (!testAllProps('hyphens', 'auto', true)) return false; @@ -2983,7 +2927,7 @@ More testing neccessary perhaps. } }); - addTest("softhyphens", function() { + addTest('softhyphens', function() { try { // use numeric entity instead of ­ in case it's XHTML return test_hyphens('­', true) && test_hyphens('​', false); @@ -2992,7 +2936,7 @@ More testing neccessary perhaps. } }); - addTest("softhyphensfind", function() { + addTest('softhyphensfind', function() { try { return test_hyphens_find('­') && test_hyphens_find('​'); } catch(e) { @@ -3016,7 +2960,7 @@ More testing neccessary perhaps. } !*/ - testStyles("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}", function( elem ) { + testStyles('#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}', function( elem ) { Modernizr.addTest('lastchild', elem.lastChild.offsetWidth > elem.firstChild.offsetWidth); }, 2); @@ -3124,6 +3068,77 @@ More testing neccessary perhaps. /*! { + "name": "CSS :nth-child pseudo-selector", + "caniuse": "css-sel3", + "property": "nthchild", + "tags": ["css"], + "notes": [ + { + "name": "Related Github Issue", + "href": "https://github.com/Modernizr/Modernizr/pull/685" + }, + { + "name": "Sitepoint :nth-child documentation", + "href": "http://reference.sitepoint.com/css/pseudoclass-nthchild" + } + ], + "authors": ["@emilchristensen"], + "warnings": ["Known false negative in Safari 3.1 and Safari 3.2.2"] +} +!*/ +/* DOC + +Detects support for the ':nth-child()' CSS pseudo-selector. + +*/ + + // 5 `<div>` elements with `1px` width are created. + // Then every other element has its `width` set to `2px`. + // A Javascript loop then tests if the `<div>`s have the expected width + // using the modulus operator. + testStyles('#modernizr div {width:1px} #modernizr div:nth-child(2n) {width:2px;}', function( elem ) { + Modernizr.addTest('nthchild', function() { + var elems = elem.getElementsByTagName('div'), + test = true; + + for (var i = 0; i < 5; i++) { + test = test && elems[i].offsetWidth === i % 2 + 1; + } + + return test; + }); + }, 5); + + + // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input + // Modernizr.prefixed('boxSizing') // 'MozBoxSizing' + + // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style. + // Return values will also be the camelCase variant, if you need to translate that to hypenated style use: + // + // str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-'); + + // If you're trying to ascertain which transition end event to bind to, you might do something like... + // + // var transEndEventNames = { + // 'WebkitTransition' : 'webkitTransitionEnd',// Saf 6, Android Browser + // 'MozTransition' : 'transitionend', // only for FF < 15 + // 'transition' : 'transitionend' // IE10, Opera, Chrome, FF 15+, Saf 7+ + // }, + // transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ]; + + var prefixed = ModernizrProto.prefixed = function( prop, obj, elem ) { + if (!obj) { + return testPropsAll(prop, 'pfx'); + } else { + // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame' + return testPropsAll(prop, obj, elem); + } + }; + + +/*! +{ "name": "CSS Object Fit", "caniuse": "object-fit", "property": "objectfit", @@ -3331,8 +3346,8 @@ More testing neccessary perhaps. /* Get the 'flowFrom' property name available in the browser. Either default or vendor prefixed. If the property name can't be found we'll get Boolean 'false' and fail quickly */ - var flowFromProperty = Modernizr.prefixed("flowFrom"); - var flowIntoProperty = Modernizr.prefixed("flowInto"); + var flowFromProperty = Modernizr.prefixed('flowFrom'); + var flowIntoProperty = Modernizr.prefixed('flowInto'); if (!flowFromProperty || !flowIntoProperty){ return false; @@ -3514,7 +3529,7 @@ Test for CSS 3 UI "resize" property !*/ Modernizr.addTest('siblinggeneral', function(){ - return testStyles('#modernizr div {width:100px} #modernizr div ~ div {width:200px;display:block}', function(elem, rule){ + return testStyles('#modernizr div {width:100px} #modernizr div ~ div {width:200px;display:block}', function( elem ) { return elem.lastChild.offsetWidth == 200; }, 2); }); @@ -3547,7 +3562,7 @@ Test for CSS 3 UI "resize" property var subpixel = elem.firstChild; subpixel.innerHTML = 'This is a text written in Arial'; Modernizr.addTest('subpixelfont', window.getComputedStyle ? - window.getComputedStyle(subpixel, null).getPropertyValue("width") !== '44px' + window.getComputedStyle(subpixel, null).getPropertyValue('width') !== '44px' : false); }, 1, ['subpixel']); @@ -3576,6 +3591,41 @@ Test for CSS 3 UI "resize" property /*! { + "name": "CSS :target pseudo-class", + "caniuse": "css-sel3", + "property": "target", + "tags": ["css"], + "notes": [{ + "name": "MDN documentation", + "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/:target" + }], + "authors": ["@zachleat"], + "warnings": ["Opera Mini supports :target but doesn't update the hash for anchor links."] +} +!*/ +/* DOC + +Detects support for the ':target' CSS pseudo-class. + +*/ + + // querySelector + Modernizr.addTest('target', function() { + var doc = window.document; + if(!('querySelectorAll' in doc) ) { + return false; + } + + try { + doc.querySelectorAll(':target'); + return true; + } catch(e) { + return false; + } + }); + +/*! +{ "name": "CSS textshadow", "property": "textshadow", "caniuse": "css-textshadow", @@ -3597,29 +3647,6 @@ Test for CSS 3 UI "resize" property Modernizr.addTest('csstransforms', testAllProps('transform', 'scale(1)', true)); -/*!
-{
- "name": "CSS Transform Style preserve-3d",
- "property": "preserve3d",
- "authors": ["edmellum"],
- "tags": ["css"],
- "notes": [{
- "name": "MDN Docs",
- "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/transform-style"
- },{
- "name": "Related Github Issue",
- "href": "https://github.com/Modernizr/Modernizr/issues/762"
- }]
-}
-!*/
-/* DOC
-
-Detects support for `transform-style: preserve-3d`, for getting a proper 3D perspective on elements.
-
-*/
-
- Modernizr.addTest('preserve3d', testAllProps('transformStyle', 'preserve-3d'));
- /*! { "name": "CSS Transforms 3D", @@ -3644,14 +3671,37 @@ Detects support for `transform-style: preserve-3d`, for getting a proper 3D pers // Webkit allows this media query to succeed only if the feature is enabled. // `@media (transform-3d),(-webkit-transform-3d){ ... }` // If loaded inside the body tag and the test element inherits any padding, margin or borders it will fail #740 - testStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0}}', function( node, rule ) { - ret = node.offsetLeft === 9 && node.offsetHeight === 5; + testStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0}}', function( elem ) { + ret = elem.offsetLeft === 9 && elem.offsetHeight === 5; }); } return ret; }); +/*!
+{
+ "name": "CSS Transform Style preserve-3d",
+ "property": "preserve3d",
+ "authors": ["edmellum"],
+ "tags": ["css"],
+ "notes": [{
+ "name": "MDN Docs",
+ "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/transform-style"
+ },{
+ "name": "Related Github Issue",
+ "href": "https://github.com/Modernizr/Modernizr/issues/762"
+ }]
+}
+!*/
+/* DOC
+
+Detects support for `transform-style: preserve-3d`, for getting a proper 3D perspective on elements.
+
+*/
+
+ Modernizr.addTest('preserve3d', testAllProps('transformStyle', 'preserve-3d'));
+ /*! { "name": "CSS user-select", @@ -3685,7 +3735,7 @@ Detects support for `transform-style: preserve-3d`, for getting a proper 3D pers } !*/ - testStyles('#modernizr { height: 50vh; }', function( elem, rule ) { + testStyles('#modernizr { height: 50vh; }', function( elem ) { var height = parseInt(window.innerHeight/2,10); var compStyle = parseInt((window.getComputedStyle ? getComputedStyle(elem, null) : @@ -3709,9 +3759,9 @@ Detects support for `transform-style: preserve-3d`, for getting a proper 3D pers } !*/ - testStyles('#modernizr { width: 50vmax; }', function( elem, rule ) { - var one_vw = window.innerWidth/100; - var one_vh = window.innerHeight/100; + testStyles('#modernizr { width: 50vmax; }', function( elem ) { + var one_vw = docElement.clientWidth/100; + var one_vh = docElement.clientHeight/100; var compWidth = parseInt((window.getComputedStyle ? getComputedStyle(elem, null) : elem.currentStyle)['width'],10); @@ -3734,9 +3784,9 @@ Detects support for `transform-style: preserve-3d`, for getting a proper 3D pers } !*/ - testStyles('#modernizr { width: 50vmin; }', function( elem, rule ) { - var one_vw = window.innerWidth/100; - var one_vh = window.innerHeight/100; + testStyles('#modernizr { width: 50vmin; }', function( elem ) { + var one_vw = docElement.clientWidth/100; + var one_vh = docElement.clientHeight/100; var compWidth = parseInt((window.getComputedStyle ? getComputedStyle(elem, null) : elem.currentStyle)['width'],10); @@ -3759,8 +3809,8 @@ Detects support for `transform-style: preserve-3d`, for getting a proper 3D pers } !*/ - testStyles('#modernizr { width: 50vw; }', function( elem, rule ) { - var width = parseInt(window.innerWidth/2,10); + testStyles('#modernizr { width: 50vw; }', function( elem ) { + var width = parseInt(docElement.innerWidth/2,10); var compStyle = parseInt((window.getComputedStyle ? getComputedStyle(elem, null) : elem.currentStyle)['width'],10); @@ -3932,9 +3982,39 @@ Detects support for the DataView interface for reading data from an ArrayBuffer // dataset API for data-* attributes Modernizr.addTest('dataset', function() { - var n = createElement("div"); - n.setAttribute("data-a-b", "c"); - return !!(n.dataset && n.dataset.aB === "c"); + var n = createElement('div'); + n.setAttribute('data-a-b', 'c'); + return !!(n.dataset && n.dataset.aB === 'c'); + }); + +/*! +{ + "name": "Document Fragment", + "property": "documentfragment", + "notes": [{ + "name": "W3C DOM Level 1 Reference", + "href": "http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-B63ED1A3" + }, { + "name": "SitePoint Reference", + "href": "http://reference.sitepoint.com/javascript/DocumentFragment" + }, { + "name": "QuirksMode Compatibility Tables", + "href": "http://www.quirksmode.org/m/w3c_core.html#t112" + }], + "authors": ["Ron Waldon (@jokeyrhyme)"], + "knownBugs": ["false-positive on Blackberry 9500, see QuirksMode note"], + "tags": [] +} +!*/ +/* DOC + +Append multiple elements to the DOM within a single insertion. + +*/ + + Modernizr.addTest('documentfragment', function() { + return 'createDocumentFragment' in document && + 'appendChild' in docElement; }); /*! @@ -4190,6 +4270,23 @@ Modernizr.input.step /*! { + "name": "Template Tag", + "property": "template", + "tags": ["elem"], + "notes": [{ + "name": "HTML5Rocks Article", + "href": "http://www.html5rocks.com/en/tutorials/webcomponents/template/" + },{ + "name": "W3 Spec", + "href": "https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html" + }] +} +!*/ + + Modernizr.addTest('template', 'content' in createElement('template')); + +/*! +{ "name": "time Element", "caniuse": "html5semantic", "property": "time", @@ -4249,6 +4346,131 @@ Detects support for emoji character sets. /*! { + "name": "ES5 Array", + "property": "es5array", + "notes": [{ + "name": "ECMAScript 5.1 Language Specification", + "href": "http://www.ecma-international.org/ecma-262/5.1/" + }], + "polyfills": ["es5shim"], + "authors": ["Ron Waldon (@jokeyrhyme)"], + "tags": ["es5"] +} +!*/ +/* DOC + +Check if browser implements ECMAScript 5 Array per specification. + +*/ + + Modernizr.addTest('es5array', function () { + return !!(Array.prototype && + Array.prototype.every && + Array.prototype.filter && + Array.prototype.forEach && + Array.prototype.indexOf && + Array.prototype.lastIndexOf && + Array.prototype.map && + Array.prototype.some && + Array.prototype.reduce && + Array.prototype.reduceRight && + Array.isArray); + }); + +/*! +{ + "name": "ES5 Date", + "property": "es5date", + "notes": [{ + "name": "ECMAScript 5.1 Language Specification", + "href": "http://www.ecma-international.org/ecma-262/5.1/" + }], + "polyfills": ["es5shim"], + "authors": ["Ron Waldon (@jokeyrhyme)"], + "tags": ["es5"] +} +!*/ +/* DOC + +Check if browser implements ECMAScript 5 Date per specification. + +*/ + + Modernizr.addTest('es5date', function () { + var isoDate = '2013-04-12T06:06:37.307Z', + canParseISODate = false; + try { + canParseISODate = !!Date.parse(isoDate); + } catch (e) { + // no ISO date parsing yet + } + return !!(Date.now && + Date.prototype && + Date.prototype.toISOString && + Date.prototype.toJSON && + canParseISODate); + }); + +/*! +{ + "name": "ES5 Function", + "property": "es5function", + "notes": [{ + "name": "ECMAScript 5.1 Language Specification", + "href": "http://www.ecma-international.org/ecma-262/5.1/" + }], + "polyfills": ["es5shim"], + "authors": ["Ron Waldon (@jokeyrhyme)"], + "tags": ["es5"] +} +!*/ +/* DOC + +Check if browser implements ECMAScript 5 Function per specification. + +*/ + + Modernizr.addTest('es5function', function () { + return !!(Function.prototype && Function.prototype.bind); + }); + +/*! +{ + "name": "ES5 Object", + "property": "es5object", + "notes": [{ + "name": "ECMAScript 5.1 Language Specification", + "href": "http://www.ecma-international.org/ecma-262/5.1/" + }], + "polyfills": ["es5shim", "es5sham"], + "authors": ["Ron Waldon (@jokeyrhyme)"], + "tags": ["es5"] +} +!*/ +/* DOC + +Check if browser implements ECMAScript 5 Object per specification. + +*/ + + Modernizr.addTest('es5object', function () { + return !!(Object.keys && + Object.create && + Object.getPrototypeOf && + Object.getOwnPropertyNames && + Object.isSealed && + Object.isFrozen && + Object.isExtensible && + Object.getOwnPropertyDescriptor && + Object.defineProperty && + Object.defineProperties && + Object.seal && + Object.freeze && + Object.preventExtensions); + }); + +/*! +{ "name": "ES5 Strict Mode", "property": "strictmode", "caniuse": "sctrict-mode", @@ -4270,6 +4492,29 @@ Check if browser implements ECMAScript 5 Object strict mode. /*! { + "name": "ES5 String", + "property": "es5string", + "notes": [{ + "name": "ECMAScript 5.1 Language Specification", + "href": "http://www.ecma-international.org/ecma-262/5.1/" + }], + "polyfills": ["es5shim"], + "authors": ["Ron Waldon (@jokeyrhyme)"], + "tags": ["es5"] +} +!*/ +/* DOC + +Check if browser implements ECMAScript 5 String per specification. + +*/ + + Modernizr.addTest('es5string', function () { + return !!(String.prototype && String.prototype.trim); + }); + +/*! +{ "name": "ES5 String.prototype.contains", "property": "contains", "authors": ["Robert Kowalski"], @@ -4406,9 +4651,9 @@ Part of Device Access aspect of HTML5, same category as geolocation. Modernizr.addTest('oninput', function() { var input = createElement('input'); - input.setAttribute("oninput", "return"); + input.setAttribute('oninput', 'return'); - if (hasEvent('oninput', docElement) || typeof input.oninput == "function") { + if (hasEvent('oninput', docElement) || typeof input.oninput == 'function') { return true; } @@ -4417,7 +4662,7 @@ Part of Device Access aspect of HTML5, same category as geolocation. // their trident equivalent. try { // Older Firefox didn't map oninput attribute to oninput property - var testEvent = document.createEvent("KeyboardEvent"); + var testEvent = document.createEvent('KeyboardEvent'); var supportsOnInput = false; var handler = function(e) { supportsOnInput = true; @@ -4425,12 +4670,12 @@ Part of Device Access aspect of HTML5, same category as geolocation. e.stopPropagation(); }; - testEvent.initKeyEvent("keypress", true, true, window, false, false, false, false, 0, "e".charCodeAt(0)); + testEvent.initKeyEvent('keypress', true, true, window, false, false, false, false, 0, 'e'.charCodeAt(0)); docElement.appendChild(input); - input.addEventListener("input", handler, false); + input.addEventListener('input', handler, false); input.focus(); input.dispatchEvent(testEvent); - input.removeEventListener("input", handler, false); + input.removeEventListener('input', handler, false); docElement.removeChild(input); return supportsOnInput; } catch (e) {} @@ -4476,7 +4721,7 @@ iOS looks at the EXIF Orientation flag in JPEGs and rotates the image accordingl }; // There may be a way to shrink this more, it's a 1x2 white jpg with the orientation flag set to 6 - img.src = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABgASAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iiiigD/2Q=="; + img.src = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABgASAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iiiigD/2Q=='; }); /*! @@ -4522,6 +4767,108 @@ to be the File object's prototype.) Modernizr.addTest('filesystem', !!prefixed('requestFileSystem', window)); /*! + { + "name": "Flash", + "property": "flash", + "tags": ["flash"], + "polyfills": ["shumway"] + } + !*/ +/* DOC + + Detects support flash, as well as flash blocking plugins + +*/ + + Modernizr.addAsyncTest(function() { + /* jshint -W053 */ + var runTest = function(result, embed) { + var bool = !!result; + if (bool) { + bool = new Boolean(bool); + bool.blocked = (result === 'blocked'); + } + addTest('flash', function() { return bool; }); + if (embed) { + docElement.removeChild(embed); + } + }; + var easy_detect; + var activex; + // we wrap activex in a try/catch becuase when flash is disabled through + // ActiveX controls, it throws an error. + try { + // Pan is an API that exists for flash objects. + activex = 'Pan' in new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash'); + } catch(e) {} + + easy_detect = !( ( 'plugins' in navigator && 'Shockwave Flash' in navigator.plugins ) || activex ); + + if (easy_detect) { + runTest(false); + } + else { + // flash seems to be installed, but it might be blocked. We have to + // actually create an element to see what happens to it. + var embed = createElement('embed'); + var inline_style; + + embed.type = 'application/x-shockwave-flash'; + + docElement.appendChild(embed); + + // Pan doesn't exist in the embed if its IE (its on the ActiveXObjeect) + // so this check is for all other browsers. + if (!('Pan' in embed) && !activex) { + runTest('blocked', embed); + return; + } + + // If we have got this far, there is still a chance a userland plugin + // is blocking us (either changing the styles, or automatically removing + // the element). Both of these require us to take a step back for a moment + // to allow for them to get time of the thread, hence a setTimeout. + setTimeout(function() { + if (!docElement.contains(embed)) { + runTest('blocked'); + return; + } + + inline_style = embed.style.cssText; + if (inline_style !== '') { + // the style of the element has changed automatically. This is a + // really poor heuristic, but for lower end flash blocks, it the + // only change they can make. + runTest('blocked', embed); + return; + } + + runTest(true, embed); + }, 10); + } + }); + +/*! +{ + "name": "input[capture] Attribute", + "property": "capture", + "tags": ["video", "image", "audio", "media", "attribute"], + "notes": [{ + "name": "W3C draft: HTML Media Capture", + "href": "http://www.w3.org/TR/html-media-capture/" + }] +} +!*/ +/* DOC + +When used on an `<input>`, this attribute signifies that the resource it takes should be generated via device's camera, camcorder, sound recorder. + +*/ + + // testing for capture attribute in inputs + Modernizr.addTest('capture', ('capture' in createElement('input'))); + +/*! { "name": "input[file] Attribute", "property": "fileinput", @@ -4548,6 +4895,37 @@ E.g. iOS < 6 and some android version don't support this /*! { + "name": "input[directory] Attribute", + "property": "directory", + "authors": ["silverwind"], + "tags": ["file", "input", "attribute"] +} +!*/ +/* DOC + +When used on an `<input type="file">`, the `directory` attribute instructs +the user agent to present a directory selection dialog instead of the usual +file selection dialog. + +*/ + + Modernizr.addTest('fileinputdirectory', function() { + var elem = createElement('input'), dir = 'directory'; + elem.type = 'file'; + if (dir in elem) { + return true; + } else { + for (var i = 0, len = domPrefixes.length; i < len; i++) { + if (domPrefixes[i] + dir in elem) { + return true; + } + } + } + return false; + }); + +/*! +{ "name": "input[form] Attribute", "property": "formattribute", "tags": ["attribute", "forms", "input"] @@ -4573,11 +4951,11 @@ E.g. IE 10 (and below), don't support this //IE6/7 confuses the form idl attribute and the form content attribute, so we use document.createAttribute try { - input.setAttribute("form", id); + input.setAttribute('form', id); } catch( e ) { if( document.createAttribute ) { - attr = document.createAttribute("form"); + attr = document.createAttribute('form'); attr.nodeValue = id; input.setAttributeNode(attr); } @@ -4656,6 +5034,26 @@ Tests for placeholder attribute in inputs and textareas /*! { + "name": "form#requestAutocomplete()", + "property": "requestautocomplete", + "tags": ["form", "forms", "requestAutocomplete", "payments"], + "notes": [{ + "name": "WHATWG proposed spec", + "href": "http://wiki.whatwg.org/wiki/RequestAutocomplete" + }] +} +!*/ +/* DOC + +When used with input[autocomplete] to annotate a form, form.requestAutocomplete() shows a dialog in Chrome that speeds up +checkout flows (payments specific for now). + +*/ + + Modernizr.addTest('requestautocomplete', !!Modernizr.prefixed('requestAutocomplete', createElement('form'))); + +/*! +{ "name": "Speech Input API", "property": "speechinput", "tags": ["forms", "speech", "attribute"], @@ -4762,7 +5160,7 @@ the test can be combined: !*/ // github.com/Modernizr/Modernizr/issues/739 - Modernizr.addTest('fullscreen', !!(prefixed("exitFullscreen", document, false) || prefixed("cancelFullScreen", document, false))); + Modernizr.addTest('fullscreen', !!(prefixed('exitFullscreen', document, false) || prefixed('cancelFullScreen', document, false))); /*! { @@ -5024,11 +5422,63 @@ Test for animated png support. }); }; - image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg=="; + image.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg=='; + }); + +/*! +{ + "name": "JPEG XR (extended range)", + "async": true, + "aliases": ["jpeg-xr"], + "property": "jpegxr", + "tags": ["image"], + "notes": [{ + "name": "Wikipedia Article", + "href": "http://en.wikipedia.org/wiki/JPEG_XR" + }] +} +!*/ +/* DOC + +Test for JPEG XR support + +*/ + + + Modernizr.addAsyncTest(function() { + var image = new Image(); + + image.onload = image.onerror = function() { + addTest('jpegxr', image.width == 1, { aliases: ['jpeg-xr'] }); + }; + + image.src = 'data:image/vnd.ms-photo;base64,SUm8AQgAAAAFAAG8AQAQAAAASgAAAIC8BAABAAAAAQAAAIG8BAABAAAAAQAAAMC8BAABAAAAWgAAAMG8BAABAAAAHwAAAAAAAAAkw91vA07+S7GFPXd2jckNV01QSE9UTwAZAYBxAAAAABP/gAAEb/8AAQAAAQAAAA=='; }); /*! { + "name": "srcset attribute", + "property": "srcset", + "tags": ["image"], + "notes": [{ + "name": "Smashing Magazine Article", + "href": "http://en.wikipedia.org/wiki/APNG" + },{ + "name": "Generate multi-resolution images for srcset with Grunt", + "href": "http://addyosmani.com/blog/generate-multi-resolution-images-for-srcset-with-grunt/" + }] +} +!*/ +/* DOC + +Test for the srcset attribute of images + +*/ + + Modernizr.addTest('srcset', 'srcset' in createElement('img')); + +/*! +{ "name": "Webp Lossless", "async": true, "property": ["webplossless", "webp-lossless"], @@ -5065,6 +5515,83 @@ Tests for non-alpha lossless webp support. /*! { + "name": "Webp Alpha", + "async": true, + "property": "webpalpha", + "aliases": ["webp-alpha"], + "tags": ["image"], + "authors": ["Krister Kari", "Rich Bradshaw", "Ryan Seddon", "Paul Irish"], + "notes": [{ + "name": "WebP Info", + "href": "http://code.google.com/speed/webp/" + },{ + "name": "Article about WebP support on Android browsers", + "href": "http://www.wope-framework.com/en/2013/06/24/webp-support-on-android-browsers/" + },{ + "name": "Chormium WebP announcement", + "href": "http://blog.chromium.org/2011/11/lossless-and-transparency-encoding-in.html?m=1" + }] +} +!*/ +/* DOC + +Tests for transparent webp support. + +*/ + + Modernizr.addAsyncTest(function(){ + var image = new Image(); + + image.onerror = function() { + addTest('webpalpha', false, { aliases: ['webp-alpha'] }); + }; + + image.onload = function() { + addTest('webpalpha', image.width == 1, { aliases: ['webp-alpha'] }); + }; + + image.src = 'data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA=='; + }); + +/*! +{ + "name": "Webp Animation", + "async": true, + "property": "webpanimation", + "aliases": ["webp-animation"], + "tags": ["image"], + "authors": ["Krister Kari", "Rich Bradshaw", "Ryan Seddon", "Paul Irish"], + "notes": [{ + "name": "WebP Info", + "href": "http://code.google.com/speed/webp/" + },{ + "name": "Chormium blog - Chrome 32 Beta: Animated WebP images and faster Chrome for Android touch input", + "href": "http://blog.chromium.org/2013/11/chrome-32-beta-animated-webp-images-and.html" + }] +} +!*/ +/* DOC + +Tests for animated webp support. + +*/ + + Modernizr.addAsyncTest(function(){ + var image = new Image(); + + image.onerror = function() { + addTest('webpanimation', false, { aliases: ['webp-animation'] }); + }; + + image.onload = function() { + addTest('webpanimation', image.width == 1, { aliases: ['webp-animation'] }); + }; + + image.src = 'data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA'; + }); + +/*! +{ "name": "Webp", "async": true, "property": "webp", @@ -5116,7 +5643,55 @@ Detects support for the IndexedDB client-side storage API (final spec). // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB // For speed, we don't test the legacy (and beta-only) indexedDB - Modernizr.addTest('indexeddb', !!prefixed("indexedDB", window)); + Modernizr.addTest('indexeddb', !!prefixed('indexedDB', window)); + +/*! +{ + "name": "input formaction", + "property": "inputformaction", + "aliases": ["input-formaction"], + "notes": [{ + "name": "WHATWG Spec", + "href": "http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#attr-fs-formaction" + }, { + "name": "Wufoo demo", + "href": "http://www.wufoo.com/html5/attributes/13-formaction.html" + }], + "polyfills": [ + "webshims" + ] +} +!*/ +/* DOC + +Detect support for the formaction attribute on form inputs + +*/ + + Modernizr.addTest('inputformaction', !!('formAction' in createElement('input')), { aliases: ['input-formaction'] }); + +/*! +{ + "name": "input[search] search event", + "property": "search", + "tags": ["input","search"], + "authors": ["Calvin Webster"], + "notes": [{ + "name": "Wufoo demo", + "href": "http://www.wufoo.com/html5/types/5-search.html?" + }, { + "name": "CSS Tricks", + "href": "http://css-tricks.com/webkit-html5-search-inputs/" + }] +} +!*/ +/* DOC + + There is a custom `search` event implemented in webkit browsers when using an `input[search]` element. + + */ + + Modernizr.addTest('inputsearchevent', hasEvent('search')); var inputtypes = 'search tel url email datetime date month week time datetime-local number range color'.split(' '); @@ -5235,6 +5810,28 @@ Modernizr.inputtypes.week })(inputtypes); /*! + { + "name": "Internationalization API", + "property": "Intl", + "notes": [{ + "name": "MDN documentation", + "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl" + },{ + "name": "ECMAScript spec", + "href": "http://www.ecma-international.org/ecma-402/1.0/" + }] + } + !*/ +/* DOC + + Detects support for the Internationalization API which allow easy formatting of number and dates and sorting string + based on a locale + + */ + + Modernizr.addTest('intl', !!prefixed('Intl', window)); + +/*! { "name": "JSON", "property": "json", @@ -5301,8 +5898,8 @@ Detects support for MathML, for mathematic equations in web pages. Modernizr.addTest('mathml', function() { var ret; - Modernizr.testStyles("#modernizr{position:absolute}", function(node){ - node.innerHTML = "<math><mfrac><mi>xx</mi><mi>yy</mi></mfrac></math>"; + Modernizr.testStyles('#modernizr{position:absolute}', function(node){ + node.innerHTML = '<math><mfrac><mi>xx</mi><mi>yy</mi></mfrac></math>'; ret = node.offsetHeight > node.offsetWidth; }); @@ -5366,31 +5963,6 @@ Tests for server sent events aka eventsource. Modernizr.addTest('eventsource', 'EventSource' in window); -/*! -{ - "name": "XML HTTP Request Level 2 XHR2", - "property": "xhr2", - "tags": ["network"], - "notes": [{ - "name": "W3 Spec", - "href": "http://www.w3.org/TR/XMLHttpRequest2/" - },{ - "name": "Details on Related Github Issue", - "href": "http://github.com/Modernizr/Modernizr/issues/385" - }] -} -!*/ -/* DOC - -Tests for XHR2. -*/ - - // all three of these details report consistently across all target browsers: - // !!(window.ProgressEvent); - // !!(window.FormData); - // window.XMLHttpRequest && "withCredentials" in new XMLHttpRequest; - Modernizr.addTest('xhr2', 'FormData' in window); - // http://mathiasbynens.be/notes/xhr-responsetype-json#comment-4 var testXhrType = function(type) { @@ -5515,6 +6087,31 @@ Tests for XMLHttpRequest xhr.responseType. /*! { + "name": "XML HTTP Request Level 2 XHR2", + "property": "xhr2", + "tags": ["network"], + "notes": [{ + "name": "W3 Spec", + "href": "http://www.w3.org/TR/XMLHttpRequest2/" + },{ + "name": "Details on Related Github Issue", + "href": "http://github.com/Modernizr/Modernizr/issues/385" + }] +} +!*/ +/* DOC + +Tests for XHR2. +*/ + + // all three of these details report consistently across all target browsers: + // !!(window.ProgressEvent); + // !!(window.FormData); + // window.XMLHttpRequest && "withCredentials" in new XMLHttpRequest; + Modernizr.addTest('xhr2', 'FormData' in window); + +/*! +{ "name": "Notification", "property": "notification", "caniuse": "notifications", @@ -5562,7 +6159,7 @@ Detects support for the Page Visibility API, which can be used to disable unnece */ - Modernizr.addTest('pagevisibility', !!prefixed("hidden", document, false)); + Modernizr.addTest('pagevisibility', !!prefixed('hidden', document, false)); /*! { @@ -5988,7 +6585,7 @@ See [this discussion](http://github.com/Modernizr/Modernizr/issues/213) regardin Modernizr.addTest('svgfilters', function() { var result = false; try { - result = typeof SVGFEColorMatrixElement !== undefined && + result = 'SVGFEColorMatrixElement' in window && SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE == 2; } catch(e) {} @@ -6068,6 +6665,28 @@ Detects support for SVG in `<embed>` or `<object>` elements. /*! { + "name": "textarea maxlength", + "property": "textareamaxlength", + "aliases": ["textarea-maxlength"], + "notes": [{ + "name": "MDN documentation", + "href": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea" + }], + "polyfills": [ + "maxlength" + ] +} +!*/ +/* DOC + +Detect support for the maxlength attribute of a textarea element + +*/ + + Modernizr.addTest('textareamaxlength', !!('maxLength' in createElement('textarea'))); + +/*! +{ "name": "Touch Events", "property": "touchevents", "caniuse" : "touch", @@ -6252,7 +6871,7 @@ Modernizr.datauri.over32kb // false in IE8 } }; - datauri.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="; + datauri.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=='; // Once we have datauri, let's check to see if we can use data URIs over // 32kb (IE8 can't). https://github.com/Modernizr/Modernizr/issues/321 @@ -6271,11 +6890,11 @@ Modernizr.datauri.over32kb // false in IE8 Modernizr.datauri.over32kb = (datauriBig.width == 1 && datauriBig.height == 1); }; - var base64str = "R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="; + var base64str = 'R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=='; while (base64str.length < 33000) { - base64str = "\r\n" + base64str; + base64str = '\r\n' + base64str; } - datauriBig.src= "data:image/gif;base64," + base64str; + datauriBig.src= 'data:image/gif;base64,' + base64str; } }); @@ -6375,6 +6994,9 @@ Modernizr.video.ogg // 'probably' bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,''); bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,''); + + bool.vp9 = elem.canPlayType('video/webm; codecs="vp9"').replace(/^no$/,''); + } } catch(e){} @@ -6383,23 +7005,90 @@ Modernizr.video.ogg // 'probably' /*! { - "name": "Web Animation API", - "property": "animation", - "tags": ["webanimations"], - "polyfills": ["webanimationsjs"], - "notes": { - "name": "Introducing Web Animations", - "href": "http://brian.sol1.net/svg/2013/06/26/introducing-web-animations/" - } + "name": "Video Autoplay", + "property": "videoautoplay", + "tags": ["video"], + "async" : true, + "warnings": ["This test is very large – only include it if you absolutely need it"] } !*/ /* DOC -Detects support for the Web Animation API, a way to create css animations in js +Checks for support of the autoplay attribute of the video element. */ - Modernizr.addTest('webanimations', 'Animation' in window); + + Modernizr.addAsyncTest(function() { + var timeout; + var waitTime = 300; + var elem = createElement('video'); + var elemStyle = elem.style; + var testAutoplay = function(called) { + clearTimeout(timeout); + elem.removeEventListener('playing', testAutoplay); + addTest('videoautoplay', called || elem.currentTime !== 0); + elem.parentNode.removeChild(elem); + }; + + //skip the test if video itself, or the autoplay + //element on it isn't supported + if (!Modernizr.video || !('autoplay' in elem)) { + addTest('videoautoplay', false); + return; + } + + elemStyle.height = 0; + elemStyle.width = 0; + + try { + if (Modernizr.video.h264) { + elem.src = 'data:video/mp4;base64,AAAAHGZ0eXBtcDQyAAAAAG1wNDJpc29tYXZjMQAAAz5tb292AAAAbG12aGQAAAAAzaNacc2jWnEAAV+QAAFfkAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAGGlvZHMAAAAAEICAgAcAT////3//AAACQ3RyYWsAAABcdGtoZAAAAAHNo1pxzaNacQAAAAEAAAAAAAFfkAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAEAAAABAAAAAAAd9tZGlhAAAAIG1kaGQAAAAAzaNacc2jWnEAAV+QAAFfkFXEAAAAAAAhaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAAAAAAGWbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABVnN0YmwAAACpc3RzZAAAAAAAAAABAAAAmWF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAEAAQAEgAAABIAAAAAAAAAAEOSlZUL0FWQyBDb2RpbmcAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwH0AAr/4QAZZ/QACq609NQYBBkAAAMAAQAAAwAKjxImoAEABWjOAa8gAAAAEmNvbHJuY2xjAAYAAQAGAAAAGHN0dHMAAAAAAAAAAQAAAAUAAEZQAAAAKHN0c3oAAAAAAAAAAAAAAAUAAAIqAAAACAAAAAgAAAAIAAAACAAAAChzdHNjAAAAAAAAAAIAAAABAAAABAAAAAEAAAACAAAAAQAAAAEAAAAYc3RjbwAAAAAAAAACAAADYgAABaQAAAAUc3RzcwAAAAAAAAABAAAAAQAAABFzZHRwAAAAAAREREREAAAAb3VkdGEAAABnbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcgAAAAAAAAAAAAAAAAAAAAA6aWxzdAAAADKpdG9vAAAAKmRhdGEAAAABAAAAAEhhbmRCcmFrZSAwLjkuOCAyMDEyMDcxODAwAAACUm1kYXQAAAHkBgX/4NxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxMjAgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDExIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9MSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjAgbWU9ZXNhIHN1Ym1lPTkgcHN5PTAgbWl4ZWRfcmVmPTAgbWVfcmFuZ2U9NCBjaHJvbWFfbWU9MSB0cmVsbGlzPTAgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0wIGNocm9tYV9xcF9vZmZzZXQ9MCB0aHJlYWRzPTYgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTUwIGtleWludF9taW49NSBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmM9Y3FwIG1idHJlZT0wIHFwPTAAgAAAAD5liISscR8A+E4ACAACFoAAITAAAgsAAPgYCoKgoC+L4vi+KAvi+L4YfAEAACMzgABF9AAEUGUgABDJiXnf4AAAAARBmiKUAAAABEGaQpQAAAAEQZpilAAAAARBmoKU'; + } + else if (Modernizr.video.ogg) { + elem.src = 'data:video/ogg;base64,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'; + } + else { + addTest('videoautoplay', false); + return; + } + } + + catch (e) { + addTest('videoautoplay', false); + return; + } + + elem.setAttribute('autoplay',''); + elem.style = 'display:none'; + docElement.appendChild(elem); + // wait for the next tick to add the listener, otherwise the element may + // not have time to play in high load situations (e.g. the test suite) + setTimeout(function() { + elem.addEventListener('playing', function(){testAutoplay(true);}); + timeout = setTimeout(testAutoplay, waitTime); + }, 0); + }); + +/*! +{ + "name": "Video Loop Attribute", + "property": "videoloop", + "tags": ["video", "media"] +} +!*/ + + Modernizr.addTest('videoloop', 'loop' in createElement('video')); + +/*! +{ + "name": "Video Preload Attribute", + "property": "videopreload", + "tags": ["video", "media"] +} +!*/ + + Modernizr.addTest('videopreload', 'preload' in createElement('video')); /*! { @@ -6426,6 +7115,26 @@ development in both the API and specific user experience in Chrome". No other br /*! { + "name": "Web Animation API", + "property": "animation", + "tags": ["webanimations"], + "polyfills": ["webanimationsjs"], + "notes": { + "name": "Introducing Web Animations", + "href": "http://brian.sol1.net/svg/2013/06/26/introducing-web-animations/" + } +} +!*/ +/* DOC + +Detects support for the Web Animation API, a way to create css animations in js + +*/ + + Modernizr.addTest('webanimations', 'Animation' in window); + +/*! +{ "name": "WebGL", "property": "webgl", "caniuse": "webgl", @@ -6552,8 +7261,8 @@ if ('OES_vertex_array_object' in Modernizr.webglextensions) { var protocol = 'https:'==location.protocol?'wss':'ws', protoBin; - if("WebSocket" in window) { - if( protoBin = "binaryType" in WebSocket.prototype ) { + if('WebSocket' in window) { + if( protoBin = 'binaryType' in WebSocket.prototype ) { return protoBin; } try { diff --git a/www/js/lib/modernizr-build.min.js b/www/js/lib/modernizr-build.min.js index 35b0108..44c9c55 100644 --- a/www/js/lib/modernizr-build.min.js +++ b/www/js/lib/modernizr-build.min.js @@ -1,2 +1,2 @@ -/*! Modernizr 3.0.0pre (Custom Build) | MIT */!function(a,b,c){function d(a,b){return typeof a===b}function e(){var a,b,c,e,f,g,h;for(var i in q){if(a=[],b=q[i],b.name&&(a.push(b.name.toLowerCase()),b.options&&b.options.aliases&&b.options.aliases.length))for(c=0;c<b.options.aliases.length;c++)a.push(b.options.aliases[c].toLowerCase());for(e=d(b.fn,"function")?b.fn():b.fn,f=0;f<a.length;f++)g=a[f],h=g.split("."),1===h.length?Modernizr[h[0]]=e:2===h.length&&(Modernizr[h[0]][h[1]]=e),t.push((e?"":"no-")+h.join("-"))}}function f(a){var b,c=u.className,d=[],e=Modernizr._config.classPrefix||"",f=new RegExp("(^|\\s)"+e+"no-js(\\s|$)");if(c=c.replace(f,"$1"+e+"js$2"),Modernizr._config.enableClasses){for(var g=0;g<a.length;g++)a[g].match("^no-")||d.push("no-"+a[g]);b=new RegExp("(^|\\s)"+d.join("|")+"(\\s|$)","g"),c=c.replace(b,"$1$2"),c+=" "+e+a.join(" "+e),u.className=c}}function g(a,b){if("object"==typeof a)for(var c in a)s(a,c)&&g(c,a[c]);else{a=a.toLowerCase();var d=a.split("."),e=Modernizr[d[0]];if(2==d.length&&(e=e[d[1]]),"undefined"!=typeof e)return Modernizr;b="function"==typeof b?b():b,1==d.length?Modernizr[d[0]]=b:2==d.length&&(Modernizr[d[0]][d[1]]=b),f([(b?"":"no-")+d.join("-")]),Modernizr._trigger(a,b)}return Modernizr}function h(a,b){return!!~(""+a).indexOf(b)}function i(){var a=b.body;return a||(a=w("body"),a.fake=!0),a}function j(a,b,c,d){var e,f,g,h,j="modernizr",k=w("div"),l=i();if(parseInt(c,10))for(;c--;)g=w("div"),g.id=d?d[c]:j+(c+1),k.appendChild(g);return e=["­",'<style id="s',j,'">',a,"</style>"].join(""),k.id=j,(l.fake?l:k).innerHTML+=e,l.appendChild(k),l.fake&&(l.style.background="",l.style.overflow="hidden",h=u.style.overflow,u.style.overflow="hidden",u.appendChild(l)),f=b(k,a),l.fake?(l.parentNode.removeChild(l),u.style.overflow=h,u.offsetHeight):k.parentNode.removeChild(k),!!f}function k(a){return a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()}).replace(/^ms-/,"-ms-")}function l(b,d){var e=b.length;if("CSS"in a&&"supports"in a.CSS){for(;e--;)if(a.CSS.supports(k(b[e]),d))return!0;return!1}if("CSSSupportsRule"in a){for(var f=[];e--;)f.push("("+k(b[e])+":"+d+")");return f=f.join(" or "),j("@supports ("+f+") { #modernizr { position: absolute; } }",function(b){return"absolute"==(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position})}return c}function m(a,b,e,f){function g(){j&&(delete y.style,delete y.modElem)}if(f=d(f,"undefined")?!1:f,!d(e,"undefined")){var i=l(a,e);if(!d(i,"undefined"))return i}var j,k,m,n;y.style||(j=!0,y.modElem=w("modernizr"),y.style=y.modElem.style);for(k in a)if(m=a[k],n=y.style[m],!h(m,"-")&&y.style[m]!==c){if(f||d(e,"undefined"))return g(),"pfx"==b?m:!0;try{y.style[m]=e}catch(o){}if(y.style[m]!=n)return g(),"pfx"==b?m:!0}return g(),!1}function n(a,b,c){var e;for(var f in a)if(a[f]in b)return c===!1?a[f]:(e=b[a[f]],d(e,"function")&&"bind"in e?e.bind(c||b):e);return!1}function o(a,b,c,e,f){var g=a.charAt(0).toUpperCase()+a.slice(1),h=(a+" "+C.join(g+" ")+g).split(" ");return d(b,"string")||d(b,"undefined")?m(h,b,e,f):(h=(a+" "+D.join(g+" ")+g).split(" "),n(h,b,c))}function p(a,b,d){return o(a,c,c,b,d)}var q=[],r={_version:"v3.0.0pre",_config:{classPrefix:"",enableClasses:!0},_q:[],on:function(a,b){setTimeout(function(){b(this[a])},0)},addTest:function(a,b,c){q.push({name:a,fn:b,options:c})},addAsyncTest:function(a){q.push({name:null,fn:a})}},Modernizr=function(){};Modernizr.prototype=r,Modernizr=new Modernizr;var s,t=[],u=b.documentElement;!function(){var a={}.hasOwnProperty;s=d(a,"undefined")||d(a.call,"undefined")?function(a,b){return b in a&&d(a.constructor.prototype[b],"undefined")}:function(b,c){return a.call(b,c)}}(),r._l={},r.on=function(a,b){this._l[a]||(this._l[a]=[]),this._l[a].push(b),Modernizr.hasOwnProperty(a)&&setTimeout(function(){Modernizr._trigger(a,Modernizr[a])},0)},r._trigger=function(a,b){if(this._l[a]){var c=this._l[a];setTimeout(function(){var a,d;for(a=0;a<c.length;a++)d=c[a],d(b)},0),delete this._l[a]}},Modernizr._q.push(function(){r.addTest=g});var v;!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=v.elements;return"string"==typeof a?a.split(" "):a}function e(a){var b=x[a[u]];return b||(b={},w++,a[u]=w,x[w]=b),b}function f(a,c,d){if(c||(c=b),p)return c.createElement(a);d||(d=e(c));var f;return f=d.cache[a]?d.cache[a].cloneNode():t.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),f.canHaveChildren&&!s.test(a)?d.frag.appendChild(f):f}function g(a,c){if(a||(a=b),p)return a.createDocumentFragment();c=c||e(a);for(var f=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)f.createElement(h[g]);return f}function h(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return v.shivMethods?f(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(v,b.frag)}function i(a){a||(a=b);var d=e(a);return!v.shivCSS||o||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}")),p||h(a,d),a}function j(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(k(b)));return g}function k(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(z+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function l(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+z+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function m(a){for(var b=a.length;b--;)a[b].removeNode()}function n(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,f,g=e(a),h=a.namespaces,i=a.parentWindow;return!A||a.printShived?a:("undefined"==typeof h[z]&&h.add(z),i.attachEvent("onbeforeprint",function(){b();for(var e,g,h,i=a.styleSheets,k=[],m=i.length,n=Array(m);m--;)n[m]=i[m];for(;h=n.pop();)if(!h.disabled&&y.test(h.media)){try{e=h.imports,g=e.length}catch(o){g=0}for(m=0;g>m;m++)n.push(e[m]);try{k.push(h.cssText)}catch(o){}}k=l(k.reverse().join("")),f=j(a),d=c(a,k)}),i.attachEvent("onafterprint",function(){m(f),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var o,p,q="3.6.2",r=a.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,t=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,u="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",o="hidden"in a,p=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){o=!0,p=!0}}(),v={elements:r.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:q,shivCSS:r.shivCSS!==!1,supportsUnknownElements:p,shivMethods:r.shivMethods!==!1,type:"default",shivDocument:i,createElement:f,createDocumentFragment:g},a.html5=v,i(b);var y=/^$|\b(?:all|print)\b/,z="html5shiv",A=!p&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();v.type+=" print",v.shivPrint=n,n(b)}(this,b),function(a,b,c){function d(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function e(a,c,e,f,h,i){var j,k,m=b.createElement("script");f=f||l.errorTimeout,m.src=a;for(k in e)m.setAttribute(k,e[k]);c=i?g:c||s,m.onreadystatechange=m.onload=function(){!j&&d(m.readyState)&&(j=1,c(),m.onload=m.onreadystatechange=null)},n(function(){j||(j=1,c(1))},f),E(),h?m.onload():o.parentNode.insertBefore(m,o)}function f(a,c,d,e,f,h){var i,j=b.createElement("link");e=e||l.errorTimeout,c=h?g:c||s,j.href=a,j.rel="stylesheet",j.type="text/css";for(i in d)j.setAttribute(i,d[i]);f||(E(),o.parentNode.insertBefore(j,o),n(c,0))}function g(){var a=q.shift();r=1,a?a.t?n(function(){("c"==a.t?l.injectCss:l.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),g()):r=0}function h(a,c,e,f,h,i,j){function k(b){if(!p&&d(m.readyState)&&(t.r=p=1,!r&&g(),b)){"img"!=a&&n(function(){v.removeChild(m)},50);for(var e in G[c])G[c].hasOwnProperty(e)&&G[c][e].onload();m.onload=m.onreadystatechange=null}}j=j||l.errorTimeout;var m=b.createElement(a),p=0,s=0,t={t:e,s:c,e:h,a:i,x:j};1===G[c]&&(s=1,G[c]=[]),"object"==a?(m.data=c,m.setAttribute("type","text/css")):(m.src=c,m.type=a),m.width=m.height="0",m.onerror=m.onload=m.onreadystatechange=function(){k.call(this,s)},q.splice(f,0,t),"img"!=a&&(s||2===G[c]?(E(),v.insertBefore(m,u?null:o),n(k,j)):G[c].push(m))}function i(a,b,c,d,e){return r=0,b=b||"j",C(a)?h("c"==b?z:y,a,b,this.i++,c,d,e):(q.splice(this.i++,0,a),1==q.length&&g()),this}function j(){var a=l;return a.loader={load:i,i:0},a}var k,l,m=b.documentElement,n=a.setTimeout,o=b.getElementsByTagName("script")[0],p={}.toString,q=[],r=0,s=function(){},t="MozAppearance"in m.style,u=t&&!!b.createRange().compareNode,v=u?m:o.parentNode,w=a.opera&&"[object Opera]"==p.call(a.opera),x=!!b.attachEvent&&!w,y=t?"object":x?"script":"img",z=x?"script":y,A=Array.isArray||function(a){return"[object Array]"==p.call(a)},B=function(a){return Object(a)===a},C=function(a){return"string"==typeof a},D=function(a){return"[object Function]"==p.call(a)},E=function(){o&&o.parentNode||(o=b.getElementsByTagName("script")[0])},F=[],G={},H={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}};l=function(a){function b(a){var b,c,d,e=a.split("!"),f=F.length,g=e.pop(),h=e.length,i={url:g,origUrl:g,prefixes:e};for(c=0;h>c;c++)d=e[c].split("="),b=H[d.shift()],b&&(i=b(i,d));for(c=0;f>c;c++)i=F[c](i);return i}function d(a){var b=a.split("?")[0];return b.substr(b.lastIndexOf(".")+1)}function e(a,e,f,g,h){{var i=b(a),k=i.autoCallback;d(i.url)}if(!i.bypass)return e&&(e=D(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(G[i.url]&&i.reexecute!==!0?i.noexec=!0:G[i.url]=1,a&&f.load(i.url,i.forceCSS||!i.forceJS&&"css"==d(i.url)?"c":c,i.noexec,i.attrs,i.timeout),(D(e)||D(k))&&f.load(function(){j(),e&&e(i.origUrl,h,g),k&&k(i.origUrl,h,g),G[i.url]=2}),void 0)}function f(a,b){function c(a,c){if(""===a||a){if(C(a))c||(i=function(){var a=[].slice.call(arguments);j.apply(this,a),k()}),e(a,i,b,0,f);else if(B(a)){d=function(){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c}();for(var g in a)a.hasOwnProperty(g)&&(c||--d||(D(i)?i=function(){var a=[].slice.call(arguments);j.apply(this,a),k()}:i[g]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),k()}}(j[g])),e(a[g],i,b,g,f))}}else!c&&k()}var d,f=!!a.test,g=f?a.yep:a.nope,h=a.load||a.both,i=a.callback||s,j=i,k=a.complete||s;c(g,!!h||!!a.complete),h&&c(h),!h&&!!a.complete&&c("")}var g,h,i=this.yepnope.loader;if(C(a))e(a,0,i,0);else if(A(a))for(g=0;g<a.length;g++)h=a[g],C(h)?e(h,0,i,0):A(h)?l(h):B(h)&&f(h,i);else B(a)&&f(a,i)},l.addPrefix=function(a,b){H[a]=b},l.addFilter=function(a){F.push(a)},l.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",k=function(){b.removeEventListener("DOMContentLoaded",k,0),b.readyState="complete"},0)),a.yepnope=j(),a.yepnope.executeStack=g,a.yepnope.injectJs=e,a.yepnope.injectCss=f}(a,b),r.load=function(){a.yepnope.apply(a,[].slice.call(arguments,0))};var w=function(){return b.createElement.apply(b,arguments)},x={elem:w("modernizr")};Modernizr._q.push(function(){delete x.elem});var y={style:x.elem.style};Modernizr._q.unshift(function(){delete y.style});var z=r.testProp=function(a,b,d){return m([a],c,b,d)},A=t.slice;Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if("function"!=typeof b)throw new TypeError;var c=A.call(arguments,1),d=function(){if(this instanceof d){var e=function(){};e.prototype=b.prototype;var f=new e,g=b.apply(f,c.concat(A.call(arguments)));return Object(g)===g?g:f}return b.apply(a,c.concat(A.call(arguments)))};return d}),Modernizr.addTest("adownload",!a.externalHost&&"download"in w("a")),Modernizr.addTest("applicationcache","applicationCache"in a),Modernizr.addTest("webaudio","webkitAudioContext"in a||"AudioContext"in a),Modernizr.addTest("audio",function(){var a=w("audio"),b=!1;try{(b=!!a.canPlayType)&&(b=new Boolean(b),b.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),b.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),b.opus=a.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),b.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),b.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(c){}return b});var B="Webkit Moz O ms",C=B.split(" ");r._cssomPrefixes=C;var D=B.toLowerCase().split(" ");r._domPrefixes=D;var E=" -webkit- -moz- -o- -ms- ".split(" ");r._prefixes=E,r.testAllProps=o;var F=r.prefixed=function(a,b,c){return b?o(a,b,c):o(a,"pfx")};Modernizr.addTest("lowbattery",function(){var a=.2,b=F("battery",navigator);return!!(b&&!b.charging&&b.level<=a)}),Modernizr.addTest("batteryapi",!!F("battery",navigator),{aliases:["battery-api"]}),Modernizr.addTest("blobconstructor",function(){try{return!!new Blob}catch(a){return!1}},{aliases:["blob-constructor"]}),Modernizr.addTest("canvas",function(){var a=w("canvas");return!(!a.getContext||!a.getContext("2d"))});var G=w("canvas");Modernizr.addTest("todataurljpeg",function(){return!!Modernizr.canvas&&0===G.toDataURL("image/jpeg").indexOf("data:image/jpeg")}),Modernizr.addTest("todataurlpng",function(){return!!Modernizr.canvas&&0===G.toDataURL("image/png").indexOf("data:image/png")}),Modernizr.addTest("todataurlwebp",function(){return!!Modernizr.canvas&&0===G.toDataURL("image/webp").indexOf("data:image/webp")}),Modernizr.addTest("canvastext",function(){return Modernizr.canvas===!1?!1:"function"==typeof w("canvas").getContext("2d").fillText}),Modernizr.addTest("getrandomvalues","crypto"in a&&"getRandomValues"in a.crypto),Modernizr.addTest("contenteditable",function(){if("contentEditable"in u){var a=w("div");return a.contentEditable=!0,"true"===a.contentEditable}}),Modernizr.addTest("contentsecuritypolicy","SecurityPolicy"in b),Modernizr.addTest("contextmenu","contextMenu"in u&&"HTMLMenuItemElement"in a),Modernizr.addTest("cookies",function(){b.cookie="cookietest=1";var a=-1!=b.cookie.indexOf("cookietest=");return b.cookie="cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT",a}),Modernizr.addTest("cors","XMLHttpRequest"in a&&"withCredentials"in new XMLHttpRequest),r.testAllProps=p,Modernizr.addTest("cssanimations",p("animationName","a",!0)),Modernizr.addTest("backgroundcliptext",function(){return p("backgroundClip","text")}),Modernizr.addTest("bgpositionshorthand",function(){var a=w("a"),b=a.style,c="right 10px bottom 10px";return b.cssText="background-position: "+c+";",b.backgroundPosition===c}),Modernizr.addTest("bgpositionxy",function(){return p("backgroundPositionX","3px",!0)&&p("backgroundPositionY","5px",!0)}),Modernizr.addTest("bgrepeatround",p("backgroundRepeat","round")),Modernizr.addTest("bgrepeatspace",p("backgroundRepeat","space")),Modernizr.addTest("backgroundsize",p("backgroundSize","100%",!0)),Modernizr.addTest("bgsizecover",p("backgroundSize","cover")),Modernizr.addTest("borderimage",p("borderImage","url() 1",!0)),Modernizr.addTest("borderradius",p("borderRadius","0px",!0)),Modernizr.addTest("boxshadow",p("boxShadow","1px 1px",!0)),Modernizr.addTest("boxsizing",p("boxSizing","border-box",!0)&&(b.documentMode===c||b.documentMode>7)),Modernizr.addTest("csscalc",function(){var a="width:",b="calc(10px);",c=w("div");return c.style.cssText=a+E.join(b+a),!!c.style.length});var H=r.testStyles=j;Modernizr.addTest("checked",function(){return H("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(a){var b=w("input");return b.setAttribute("type","checkbox"),b.setAttribute("checked","checked"),a.appendChild(b),20===b.offsetLeft})}),function(){Modernizr.addTest("csscolumns",function(){var a=!1,b=p("columnCount");try{(a=!!b)&&(a=new Boolean(a))}catch(c){}return a});for(var a,b,c=["Width","Span","Fill","Gap","Rule","RuleColor","RuleStyle","RuleWidth","BreakBefore","BreakAfter","BreakInside"],d=0;d<c.length;d++)a=c[d].toLowerCase(),b=p("column"+c[d]),("breakbefore"===a||"breakafter"===a||"breakinside"==a)&&(b=b||p(c[d])),Modernizr.addTest("csscolumns."+a,b)}(),Modernizr.addTest("cubicbezierrange",function(){var a=w("div");return a.style.cssText=E.join("transition-timing-function:cubic-bezier(1,0,0,1.1); "),!!a.style.length}),Modernizr.addTest("displayrunin",p("display","run-in"),{aliases:["display-runin"]}),H("#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}",function(a){var b,c=a.children;b=c[0].offsetLeft<c[1].offsetLeft,Modernizr.addTest("displaytable",b,{aliases:["display-table"]})},2),Modernizr.addTest("ellipsis",p("textOverflow","ellipsis")),Modernizr.addTest("cssfilters",function(){var a=w("div");return a.style.cssText=E.join("filter:blur(2px); "),!!a.style.length&&(b.documentMode===c||b.documentMode>9)}),Modernizr.addTest("flexbox",p("flexBasis","1px",!0)),Modernizr.addTest("flexboxlegacy",p("boxDirection","reverse",!0)),Modernizr.addTest("flexboxtweener",p("flexAlign","end",!0)),H('@font-face {font-family:"font";src:url("https://")}',function(a,c){var d=b.getElementById("smodernizr"),e=d.sheet||d.styleSheet,f=e?e.cssRules&&e.cssRules[0]?e.cssRules[0].cssText:e.cssText||"":"",g=/src/i.test(f)&&0===f.indexOf(c.split(" ")[0]);Modernizr.addTest("fontface",g)}),H('#modernizr{font:0/0 a}#modernizr:after{content:":)";visibility:hidden;font:7px/1 a}',function(a){Modernizr.addTest("generatedcontent",a.offsetHeight>=7)}),Modernizr.addTest("cssgradients",function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);",d=(a+"-webkit- ".split(" ").join(b+a)+E.join(c+a)).slice(0,-a.length),e=w("div"),f=e.style;return f.cssText=d,(""+f.backgroundImage).indexOf("gradient")>-1}),Modernizr.addTest("hsla",function(){var a=w("div"),b=a.style;return b.cssText="background-color:hsla(120,40%,100%,.5)",h(b.backgroundColor,"rgba")||h(b.backgroundColor,"hsla")}),Modernizr.addAsyncTest(function(){function c(){function e(){try{var a=w("div"),c=w("span"),d=a.style,e=0,f=0,g=!1,h=b.body.firstElementChild||b.body.firstChild;return a.appendChild(c),c.innerHTML="Bacon ipsum dolor sit amet jerky velit in culpa hamburger et. Laborum dolor proident, enim dolore duis commodo et strip steak. Salami anim et, veniam consectetur dolore qui tenderloin jowl velit sirloin. Et ad culpa, fatback cillum jowl ball tip ham hock nulla short ribs pariatur aute. Pig pancetta ham bresaola, ut boudin nostrud commodo flank esse cow tongue culpa. Pork belly bresaola enim pig, ea consectetur nisi. Fugiat officia turkey, ea cow jowl pariatur ullamco proident do laborum velit sausage. Magna biltong sint tri-tip commodo sed bacon, esse proident aliquip. Ullamco ham sint fugiat, velit in enim sed mollit nulla cow ut adipisicing nostrud consectetur. Proident dolore beef ribs, laborum nostrud meatball ea laboris rump cupidatat labore culpa. Shankle minim beef, velit sint cupidatat fugiat tenderloin pig et ball tip. Ut cow fatback salami, bacon ball tip et in shank strip steak bresaola. In ut pork belly sed mollit tri-tip magna culpa veniam, short ribs qui in andouille ham consequat. Dolore bacon t-bone, velit short ribs enim strip steak nulla. Voluptate labore ut, biltong swine irure jerky. Cupidatat excepteur aliquip salami dolore. Ball tip strip steak in pork dolor. Ad in esse biltong. Dolore tenderloin exercitation ad pork loin t-bone, dolore in chicken ball tip qui pig. Ut culpa tongue, sint ribeye dolore ex shank voluptate hamburger. Jowl et tempor, boudin pork chop labore ham hock drumstick consectetur tri-tip elit swine meatball chicken ground round. Proident shankle mollit dolore. Shoulder ut duis t-bone quis reprehenderit. Meatloaf dolore minim strip steak, laboris ea aute bacon beef ribs elit shank in veniam drumstick qui. Ex laboris meatball cow tongue pork belly. Ea ball tip reprehenderit pig, sed fatback boudin dolore flank aliquip laboris eu quis. Beef ribs duis beef, cow corned beef adipisicing commodo nisi deserunt exercitation. Cillum dolor t-bone spare ribs, ham hock est sirloin. Brisket irure meatloaf in, boudin pork belly sirloin ball tip. Sirloin sint irure nisi nostrud aliqua. Nostrud nulla aute, enim officia culpa ham hock. Aliqua reprehenderit dolore sunt nostrud sausage, ea boudin pork loin ut t-bone ham tempor. Tri-tip et pancetta drumstick laborum. Ham hock magna do nostrud in proident. Ex ground round fatback, venison non ribeye in.",b.body.insertBefore(a,h),d.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;",e=c.offsetHeight,f=c.offsetWidth,d.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;"+E.join("hyphens:auto; "),g=c.offsetHeight!=e||c.offsetWidth!=f,b.body.removeChild(a),a.removeChild(c),g}catch(i){return!1}}function f(a,c){try{var d=w("div"),e=w("span"),f=d.style,g=0,h=!1,i=!1,j=!1,k=b.body.firstElementChild||b.body.firstChild;return f.cssText="position:absolute;top:0;left:0;overflow:visible;width:1.25em;",d.appendChild(e),b.body.insertBefore(d,k),e.innerHTML="mm",g=e.offsetHeight,e.innerHTML="m"+a+"m",i=e.offsetHeight>g,c?(e.innerHTML="m<br />m",g=e.offsetWidth,e.innerHTML="m"+a+"m",j=e.offsetWidth>g):j=!0,i===!0&&j===!0&&(h=!0),b.body.removeChild(d),d.removeChild(e),h}catch(l){return!1}}function h(c){try{var d,e=w("input"),f=w("div"),g="lebowski",h=!1,i=b.body.firstElementChild||b.body.firstChild;if(f.innerHTML=g+c+g,b.body.insertBefore(f,i),b.body.insertBefore(e,f),e.setSelectionRange?(e.focus(),e.setSelectionRange(0,0)):e.createTextRange&&(d=e.createTextRange(),d.collapse(!0),d.moveEnd("character",0),d.moveStart("character",0),d.select()),a.find)h=a.find(g+g);else try{d=a.self.document.body.createTextRange(),h=d.findText(g+g)}catch(j){h=!1}return b.body.removeChild(f),b.body.removeChild(e),h}catch(j){return!1}}return b.body||b.getElementsByTagName("body")[0]?(g("csshyphens",function(){if(!p("hyphens","auto",!0))return!1;try{return e()}catch(a){return!1}}),g("softhyphens",function(){try{return f("­",!0)&&f("​",!1)}catch(a){return!1}}),g("softhyphensfind",function(){try{return h("­")&&h("​")}catch(a){return!1}}),void 0):(setTimeout(c,d),void 0)}var d=300;setTimeout(c,d)}),H("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}",function(a){Modernizr.addTest("lastchild",a.lastChild.offsetWidth>a.firstChild.offsetWidth)},2),Modernizr.addTest("cssmask",p("maskRepeat","repeat-x",!0));var I=function(){var b=a.matchMedia||a.msMatchMedia;return b?function(a){var c=b(a);return c&&c.matches||!1}:function(b){var c=!1;return j("@media "+b+" { #modernizr { position: absolute; } }",function(b){c="absolute"==(a.getComputedStyle?a.getComputedStyle(b,null):b.currentStyle).position}),c}}(),J=r.mq=I;Modernizr.addTest("mediaqueries",J("only all")),Modernizr.addTest("multiplebgs",function(){var a=w("div"),b=a.style;return b.cssText="background:url(https://),url(https://),red url(https://)",/(url\s*\(.*?){3}/.test(b.background)}),Modernizr.addTest("objectfit",!!F("objectFit"),{aliases:["object-fit"]}),Modernizr.addTest("opacity",function(){var a=w("div"),b=a.style;return b.cssText=E.join("opacity:.55;"),/^0.55$/.test(b.opacity)}),Modernizr.addTest("overflowscrolling",p("overflowScrolling","touch",!0)),Modernizr.addTest("csspointerevents",function(){var a=w("x");return a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}),Modernizr.addTest("csspositionsticky",function(){var a="position:",b="sticky",c=w("modernizr"),d=c.style;return d.cssText=a+E.join(b+";"+a).slice(0,-a.length),-1!==d.position.indexOf(b)}),Modernizr.addTest("csspseudoanimations",function(){var b=!1;if(!Modernizr.cssanimations||!a.getComputedStyle)return b;var c=["@",Modernizr._prefixes.join("keyframes csspseudoanimations { from { font-size: 10px; } }@").replace(/\@$/,""),'#modernizr:before { content:" "; font-size:5px;',Modernizr._prefixes.join("animation:csspseudoanimations 1ms infinite;"),"}"].join("");return Modernizr.testStyles(c,function(c){b="10px"===a.getComputedStyle(c,":before").getPropertyValue("font-size")}),b}),Modernizr.addTest("csstransitions",p("transition","all",!0)),Modernizr.addTest("csspseudotransitions",function(){var b=!1;if(!Modernizr.csstransitions||!a.getComputedStyle)return b;var c='#modernizr:before { content:" "; font-size:5px;'+Modernizr._prefixes.join("transition:0s 100s;")+"}#modernizr.trigger:before { font-size:10px; }";return Modernizr.testStyles(c,function(c){a.getComputedStyle(c,":before").getPropertyValue("font-size"),c.className+="trigger",b="5px"===a.getComputedStyle(c,":before").getPropertyValue("font-size")}),b}),Modernizr.addTest("cssreflections",p("boxReflect","above",!0)),Modernizr.addTest("regions",function(){var a=Modernizr.prefixed("flowFrom"),b=Modernizr.prefixed("flowInto");if(!a||!b)return!1;var d=w("div"),e=w("div"),f=w("div"),g="modernizr_flow_for_regions_check";e.innerText="M",d.style.cssText="top: 150px; left: 150px; padding: 0px;",f.style.cssText="width: 50px; height: 50px; padding: 42px;",f.style[a]=g,d.appendChild(e),d.appendChild(f),u.appendChild(d);var h,i,j=e.getBoundingClientRect();return e.style[b]=g,h=e.getBoundingClientRect(),i=parseInt(h.left-j.left,10),u.removeChild(d),e=f=d=c,42==i}),Modernizr.addTest("cssremunit",function(){var a=w("div");try{a.style.fontSize="3rem"}catch(b){}return/rem/.test(a.style.fontSize)}),Modernizr.addTest("cssresize",p("resize","both",!0)),Modernizr.addTest("rgba",function(){var a=w("div"),b=a.style;return b.cssText="background-color:rgba(150,255,150,.5)",(""+b.backgroundColor).indexOf("rgba")>-1}),H("#modernizr{overflow: scroll; width: 40px; height: 40px; }#"+E.join("scrollbar{width:0px} #modernizr::").split("#").slice(1).join("#")+"scrollbar{width:0px}",function(a){Modernizr.addTest("cssscrollbar",40==a.scrollWidth)}),Modernizr.addTest("shapes",function(){var b=F("shapeOutside");if(!b)return!1;var c=b.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()}).replace(/^ms-/,"-ms-");return H("#modernizr { float: left; "+c+":rectangle(0,0,0,0,0,0) }",function(b){var c=a.getComputedStyle?getComputedStyle(b,null):b.currentStyle;return"rectangle(0px, 0px, 0px, 0px, 0px, 0px)"==c[F("shapeOutside",u.style,!1)]})}),Modernizr.addTest("siblinggeneral",function(){return H("#modernizr div {width:100px} #modernizr div ~ div {width:200px;display:block}",function(a){return 200==a.lastChild.offsetWidth},2)}),H("#modernizr{position: absolute; top: -10em; visibility:hidden; font: normal 10px arial;}#subpixel{float: left; font-size: 33.3333%;}",function(b){var c=b.firstChild;c.innerHTML="This is a text written in Arial",Modernizr.addTest("subpixelfont",a.getComputedStyle?"44px"!==a.getComputedStyle(c,null).getPropertyValue("width"):!1)},1,["subpixel"]),Modernizr.addTest("supports","CSSSupportsRule"in a),Modernizr.addTest("textshadow",z("textShadow","1px 1px")),Modernizr.addTest("csstransforms",p("transform","scale(1)",!0)),Modernizr.addTest("preserve3d",p("transformStyle","preserve-3d")),Modernizr.addTest("csstransforms3d",function(){var a=!!p("perspective","1px",!0);return a&&"webkitPerspective"in u.style&&H("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0}}",function(b){a=9===b.offsetLeft&&5===b.offsetHeight}),a}),Modernizr.addTest("userselect",p("userSelect","none",!0)),H("#modernizr { height: 50vh; }",function(b){var c=parseInt(a.innerHeight/2,10),d=parseInt((a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).height,10);Modernizr.addTest("cssvhunit",d==c)}),H("#modernizr { width: 50vmax; }",function(b){var c=a.innerWidth/100,d=a.innerHeight/100,e=parseInt((a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).width,10);Modernizr.addTest("cssvmaxunit",parseInt(50*Math.max(c,d),10)==e)}),H("#modernizr { width: 50vmin; }",function(b){var c=a.innerWidth/100,d=a.innerHeight/100,e=parseInt((a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).width,10);Modernizr.addTest("cssvminunit",parseInt(50*Math.min(c,d),10)==e)}),H("#modernizr { width: 50vw; }",function(b){var c=parseInt(a.innerWidth/2,10),d=parseInt((a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).width,10);Modernizr.addTest("cssvwunit",d==c)}),Modernizr.addTest("wrapflow",function(){var a=F("wrapFlow");if(!a)return!1;var b=a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()}).replace(/^ms-/,"-ms-"),d=w("div"),e=w("div"),f=w("span");e.style.cssText="position: absolute; left: 50px; width: 100px; height: 20px;"+b+":end;",f.innerText="X",d.appendChild(e),d.appendChild(f),u.appendChild(d);var g=f.offsetLeft;return u.removeChild(d),e=f=d=c,150==g}),Modernizr.addTest("customprotocolhandler",!!navigator.registerProtocolHandler),Modernizr.addTest("dart",!!F("startDart",navigator)),Modernizr.addTest("dataview","undefined"!=typeof DataView&&"getFloat64"in DataView.prototype),Modernizr.addTest("classlist","classList"in u),Modernizr.addTest("createelementattrs",function(){try{return"test"==w('<input name="test" />').getAttribute("name")}catch(a){return!1}},{aliases:["createelement-attrs"]}),Modernizr.addTest("dataset",function(){var a=w("div");return a.setAttribute("data-a-b","c"),!(!a.dataset||"c"!==a.dataset.aB)}),Modernizr.addTest("microdata","getItems"in b),Modernizr.addTest("draganddrop",function(){var a=w("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a});var K={},L="autocomplete autofocus list placeholder max min multiple pattern required step".split(" "),M=w("input");Modernizr.input=function(b){for(var c=0,d=b.length;d>c;c++)K[b[c]]=!!(b[c]in M);return K.list&&(K.list=!(!w("datalist")||!a.HTMLDataListElement)),K}(L),Modernizr.addTest("datalistelem",Modernizr.input.list),Modernizr.addTest("details",function(){var a,b=w("details");return"open"in b?(H("#modernizr details{display:block}",function(c){c.appendChild(b),b.innerHTML="<summary>a</summary>b",a=b.offsetHeight,b.open=!0,a=a!=b.offsetHeight}),a):!1}),Modernizr.addTest("outputelem","value"in w("output")),Modernizr.addTest("progressbar",w("progress").max!==c),Modernizr.addTest("meter",w("meter").max!==c),Modernizr.addTest("ruby",function(){function c(c,d){var e;return a.getComputedStyle?e=b.defaultView.getComputedStyle(c,null).getPropertyValue(d):c.currentStyle&&(e=c.currentStyle[d]),e}function d(){u.removeChild(e),e=null,f=null,g=null}var e=w("ruby"),f=w("rt"),g=w("rp"),h="display",i="fontSize";return e.appendChild(g),e.appendChild(f),u.appendChild(e),"none"==c(g,h)||"ruby"==c(e,h)&&"ruby-text"==c(f,h)||"6pt"==c(g,i)&&"6pt"==c(f,i)?(d(),!0):(d(),!1)}),Modernizr.addTest("time","valueAsDate"in w("time")),Modernizr.addTest("texttrackapi","function"==typeof w("video").addTextTrack),Modernizr.addTest("track","kind"in w("track")),Modernizr.addTest("emoji",function(){if(!Modernizr.canvastext)return!1;var a=w("canvas"),b=a.getContext("2d");return b.textBaseline="top",b.font="32px Arial",b.fillText("\ud83d\ude03",0,0),0!==b.getImageData(16,16,1,1).data[0]}),Modernizr.addTest("strictmode",function(){return!this}()),Modernizr.addTest("contains",d(String.prototype.contains,"function")),Modernizr.addTest("devicemotion","DeviceMotionEvent"in a),Modernizr.addTest("deviceorientation","DeviceOrientationEvent"in a); -var N=function(a){function c(b,c){var e;return b?(c&&"string"!=typeof c||(c=w(c||"div")),b="on"+b,e=b in c,!e&&d&&(c.setAttribute||(c=w("div")),c.setAttribute&&c.removeAttribute&&(c.setAttribute(b,""),e="function"==typeof c[b],c[b]!==a&&(c[b]=a),c.removeAttribute(b))),e):!1}var d=!("onblur"in b.documentElement);return c}(),O=r.hasEvent=N;Modernizr.addTest("oninput",function(){var c=w("input");if(c.setAttribute("oninput","return"),O("oninput",u)||"function"==typeof c.oninput)return!0;try{var d=b.createEvent("KeyboardEvent"),e=!1,f=function(a){e=!0,a.preventDefault(),a.stopPropagation()};return d.initKeyEvent("keypress",!0,!0,a,!1,!1,!1,!1,0,"e".charCodeAt(0)),u.appendChild(c),c.addEventListener("input",f,!1),c.focus(),c.dispatchEvent(d),c.removeEventListener("input",f,!1),u.removeChild(c),e}catch(g){}}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("exiforientation",!1,{aliases:["exif-orientation"]})},a.onload=function(){g("exiforientation",2!==a.width,{aliases:["exif-orientation"]})},a.src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABgASAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iiiigD/2Q=="}),Modernizr.addTest("filereader",!!(a.File&&a.FileList&&a.FileReader)),Modernizr.addTest("filesystem",!!F("requestFileSystem",a)),Modernizr.addTest("fileinput",function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var a=w("input");return a.type="file",!a.disabled}),Modernizr.addTest("formattribute",function(){var a,c=w("form"),d=w("input"),e=w("div"),f="formtest"+(new Date).getTime(),g=!1;c.id=f;try{d.setAttribute("form",f)}catch(h){b.createAttribute&&(a=b.createAttribute("form"),a.nodeValue=f,d.setAttributeNode(a))}return e.appendChild(c),e.appendChild(d),u.appendChild(e),g=1===c.elements.length&&d.form==c,e.parentNode.removeChild(e),g}),Modernizr.addTest("localizednumber",function(){var a,c=w("div"),d=i(),e=function(){return u.insertBefore(d,u.firstElementChild||u.firstChild)}();c.innerHTML='<input type="number" value="1.0" step="0.1"/>';var f=c.childNodes[0];e.appendChild(c),f.focus();try{b.execCommand("InsertText",!1,"1,1")}catch(g){}return a="number"===f.type&&1.1===f.valueAsNumber&&f.checkValidity(),e.removeChild(c),d.fake&&e.parentNode.removeChild(e),a}),Modernizr.addTest("placeholder","placeholder"in w("input")&&"placeholder"in w("textarea")),Modernizr.addTest("speechinput",function(){var a=w("input");return"speech"in a||"onwebkitspeechchange"in a}),Modernizr.addTest("formvalidation",function(){var b=w("form");if(!("checkValidity"in b&&"addEventListener"in b))return!1;var c,d=!1;return Modernizr.formvalidationapi=!0,b.addEventListener("submit",function(b){a.opera||b.preventDefault(),b.stopPropagation()},!1),b.innerHTML='<input name="modTest" required><button></button>',H("#modernizr form{position:absolute;top:-99999em}",function(a){a.appendChild(b),c=b.getElementsByTagName("input")[0],c.addEventListener("invalid",function(a){d=!0,a.preventDefault(),a.stopPropagation()},!1),Modernizr.formvalidationmessage=!!c.validationMessage,b.getElementsByTagName("button")[0].click()}),d}),Modernizr.addTest("fullscreen",!(!F("exitFullscreen",b,!1)&&!F("cancelFullScreen",b,!1))),Modernizr.addTest("gamepads",!!F("getGamepads",navigator)),Modernizr.addTest("geolocation","geolocation"in navigator),Modernizr.addTest("hashchange",function(){return O("hashchange",a)===!1?!1:b.documentMode===c||b.documentMode>7}),Modernizr.addTest("history",function(){var b=navigator.userAgent;return-1!==b.indexOf("Android 2")&&-1!==b.indexOf("Mobile Safari")&&-1===b.indexOf("Chrome")?!1:a.history&&"pushState"in a.history}),Modernizr.addTest("ie8compat",!a.addEventListener&&!!b.documentMode&&7===b.documentMode),Modernizr.addTest("sandbox","sandbox"in w("iframe")),Modernizr.addTest("seamless","seamless"in w("iframe")),Modernizr.addTest("srcdoc","srcdoc"in w("iframe")),Modernizr.addAsyncTest(function(){if(!Modernizr.canvas)return!1;var a=new Image,b=w("canvas"),c=b.getContext("2d");a.onload=function(){g("apng",function(){return"undefined"==typeof b.getContext?!1:(c.drawImage(a,0,0),0===c.getImageData(0,0,1,1).data[3])})},a.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg=="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webplossless",!1,{aliases:["webp-lossless"]})},a.onload=function(){g("webplossless",1==a.width,{aliases:["webp-lossless"]})},a.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webp",!1)},a.onload=function(){g("webp",1==a.width)},a.src="data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA="}),Modernizr.addTest("indexeddb",!!F("indexedDB",a));var P="search tel url email datetime date month week time datetime-local number range color".split(" "),Q={},R=":)";Modernizr.inputtypes=function(a){for(var d,e,f,g=a.length,h=0;g>h;h++)M.setAttribute("type",e=a[h]),d="text"!==M.type,d&&(M.value=R,M.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(e)&&M.style.WebkitAppearance!==c?(u.appendChild(M),f=b.defaultView,d=f.getComputedStyle&&"textfield"!==f.getComputedStyle(M,null).WebkitAppearance&&0!==M.offsetHeight,u.removeChild(M)):/^(search|tel)$/.test(e)||(d=/^(url|email)$/.test(e)?M.checkValidity&&M.checkValidity()===!1:M.value!=R)),Q[a[h]]=!!d;return Q}(P),Modernizr.addTest("json","JSON"in a&&"parse"in JSON),Modernizr.addTest("olreversed","reversed"in w("ol")),Modernizr.addTest("mathml",function(){var a;return Modernizr.testStyles("#modernizr{position:absolute}",function(b){b.innerHTML="<math><mfrac><mi>xx</mi><mi>yy</mi></mfrac></math>",a=b.offsetHeight>b.offsetWidth}),a}),Modernizr.addTest("lowbandwidth",function(){var a=navigator.connection||{type:0};return 3==a.type||4==a.type||/^[23]g$/.test(a.type)}),Modernizr.addTest("eventsource","EventSource"in a),Modernizr.addTest("xhr2","FormData"in a);var S=function(a){if("undefined"==typeof XMLHttpRequest)return!1;var b=new XMLHttpRequest;b.open("get","/",!0);try{b.responseType=a}catch(c){return!1}return"response"in b&&b.responseType==a};Modernizr.addTest("xhrresponsetypearraybuffer",S("arraybuffer")),Modernizr.addTest("xhrresponsetypeblob",S("blob")),Modernizr.addTest("xhrresponsetypedocument",S("document")),Modernizr.addTest("xhrresponsetypejson",S("json")),Modernizr.addTest("xhrresponsetypetext",S("text")),Modernizr.addTest("xhrresponsetype",function(){if("undefined"==typeof XMLHttpRequest)return!1;var a=new XMLHttpRequest;return a.open("get","/",!0),"response"in a}()),Modernizr.addTest("notification","Notification"in a&&"permission"in a.Notification&&"requestPermission"in a.Notification),Modernizr.addTest("pagevisibility",!!F("hidden",b,!1)),Modernizr.addTest("performance",!!F("performance",a)),Modernizr.addTest("pointerevents",function(){var a=!1,b=D.length;for(a=Modernizr.hasEvent("pointerdown");b--&&!a;)O(D[b]+"pointerdown")&&(a=!0);return a}),Modernizr.addTest("pointerlock",!!F("exitPointerLock",b)),Modernizr.addTest("postmessage","postMessage"in a),Modernizr.addTest("quotamanagement",function(){var a=F("temporaryStorage",navigator),b=F("persistentStorage",navigator);return!(!a||!b)}),Modernizr.addTest("requestanimationframe",!!F("requestAnimationFrame",a),{aliases:["raf"]}),Modernizr.addTest("scriptasync","async"in w("script")),Modernizr.addTest("scriptdefer","defer"in w("script")),Modernizr.addTest("serviceworker","serviceWorker"in navigator),Modernizr.addTest("speechrecognition",!!F("SpeechRecognition",a)),Modernizr.addTest("speechsynthesis","SpeechSynthesisUtterance"in a),Modernizr.addTest("localstorage",function(){var a="modernizr";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(b){return!1}}),Modernizr.addTest("sessionstorage",function(){var a="modernizr";try{return sessionStorage.setItem(a,a),sessionStorage.removeItem(a),!0}catch(b){return!1}}),Modernizr.addTest("websqldatabase","openDatabase"in a),Modernizr.addTest("stylescoped","scoped"in w("style")),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("svgasimg",!1)},a.onload=function(){g("svgasimg",1==a.width&&1==a.height)},a.src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg=="});var T={}.toString;Modernizr.addTest("svgclippaths",function(){return!!b.createElementNS&&/SVGClipPath/.test(T.call(b.createElementNS("http://www.w3.org/2000/svg","clipPath")))}),Modernizr.addTest("svgfilters",function(){var a=!1;try{a=typeof SVGFEColorMatrixElement!==c&&2==SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE}catch(b){}return a}),Modernizr.addTest("inlinesvg",function(){var a=w("div");return a.innerHTML="<svg/>","http://www.w3.org/2000/svg"==(a.firstChild&&a.firstChild.namespaceURI)}),Modernizr.addTest("smil",function(){return!!b.createElementNS&&/SVGAnimate/.test(T.call(b.createElementNS("http://www.w3.org/2000/svg","animate")))}),Modernizr.addTest("svg",!!b.createElementNS&&!!b.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect),Modernizr.addTest("touchevents",function(){var c;if("ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch)c=!0;else{var d=["@media (",E.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");H(d,function(a){c=9===a.offsetTop})}return c}),Modernizr.addTest("typedarrays","ArrayBuffer"in a),Modernizr.addTest("unicode",function(){var a,c=w("span"),d=b.createElement("span");return H("#modernizr{font-family:Arial,sans;font-size:300em;}",function(b){c.innerHTML="ᝣ",d.innerHTML="☆",b.appendChild(c),b.appendChild(d),a="offsetWidth"in c&&c.offsetWidth!==d.offsetWidth}),a}),Modernizr.addAsyncTest(function(){function a(){var a=new Image;a.onerror=function(){g("datauri",!0),Modernizr.datauri=new Boolean(!0),Modernizr.datauri.over32kb=!1},a.onload=function(){g("datauri",!0),Modernizr.datauri=new Boolean(!0),Modernizr.datauri.over32kb=1==a.width&&1==a.height};for(var b="R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";b.length<33e3;)b="\r\n"+b;a.src="data:image/gif;base64,"+b}-1!==navigator.userAgent.indexOf("MSIE 7.")&&setTimeout(function(){g("datauri",!1)},10);var b=new Image;b.onerror=function(){g("datauri",!1)},b.onload=function(){1==b.width&&1==b.height?a():g("datauri",!1)},b.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="}),Modernizr.addTest("userdata",!!w("div").addBehavior),Modernizr.addTest("vibrate",!!F("vibrate",navigator)),Modernizr.addTest("video",function(){var a=w("video"),b=!1;try{(b=!!a.canPlayType)&&(b=new Boolean(b),b.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),b.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),b.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""))}catch(c){}return b}),Modernizr.addAsyncTest(function(){var a,c=b.createElement("video"),d=c.style,e=function(){clearTimeout(a),g("videoautoplay",0!==c.currentTime),c.parentNode.removeChild(c)};if(!(Modernizr.video&&"autoplay"in c))return!1;d.height=0,d.width=0;try{c.src=Modernizr.video.h264?"data:video/mp4;base64,AAAAHGZ0eXBtcDQyAAAAAG1wNDJpc29tYXZjMQAAAz5tb292AAAAbG12aGQAAAAAzaNacc2jWnEAAV+QAAFfkAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAGGlvZHMAAAAAEICAgAcAT////3//AAACQ3RyYWsAAABcdGtoZAAAAAHNo1pxzaNacQAAAAEAAAAAAAFfkAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAEAAAABAAAAAAAd9tZGlhAAAAIG1kaGQAAAAAzaNacc2jWnEAAV+QAAFfkFXEAAAAAAAhaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAAAAAAGWbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABVnN0YmwAAACpc3RzZAAAAAAAAAABAAAAmWF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAEAAQAEgAAABIAAAAAAAAAAEOSlZUL0FWQyBDb2RpbmcAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwH0AAr/4QAZZ/QACq609NQYBBkAAAMAAQAAAwAKjxImoAEABWjOAa8gAAAAEmNvbHJuY2xjAAYAAQAGAAAAGHN0dHMAAAAAAAAAAQAAAAUAAEZQAAAAKHN0c3oAAAAAAAAAAAAAAAUAAAIqAAAACAAAAAgAAAAIAAAACAAAAChzdHNjAAAAAAAAAAIAAAABAAAABAAAAAEAAAACAAAAAQAAAAEAAAAYc3RjbwAAAAAAAAACAAADYgAABaQAAAAUc3RzcwAAAAAAAAABAAAAAQAAABFzZHRwAAAAAAREREREAAAAb3VkdGEAAABnbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcgAAAAAAAAAAAAAAAAAAAAA6aWxzdAAAADKpdG9vAAAAKmRhdGEAAAABAAAAAEhhbmRCcmFrZSAwLjkuOCAyMDEyMDcxODAwAAACUm1kYXQAAAHkBgX/4NxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxMjAgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDExIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9MSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjAgbWU9ZXNhIHN1Ym1lPTkgcHN5PTAgbWl4ZWRfcmVmPTAgbWVfcmFuZ2U9NCBjaHJvbWFfbWU9MSB0cmVsbGlzPTAgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0wIGNocm9tYV9xcF9vZmZzZXQ9MCB0aHJlYWRzPTYgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTUwIGtleWludF9taW49NSBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmM9Y3FwIG1idHJlZT0wIHFwPTAAgAAAAD5liISscR8A+E4ACAACFoAAITAAAgsAAPgYCoKgoC+L4vi+KAvi+L4YfAEAACMzgABF9AAEUGUgABDJiXnf4AAAAARBmiKUAAAABEGaQpQAAAAEQZpilAAAAARBmoKU":"data:video/ogg;base64,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"}catch(f){return!1}c.setAttribute("autoplay",""),u.appendChild(c),c.addEventListener("playing",e),a=setTimeout(e,300)}),Modernizr.addTest("webanimations","Animation"in a),Modernizr.addTest("webintents",!!F("startActivity",navigator)),Modernizr.addTest("webgl","WebGLRenderingContext"in a),Modernizr.addAsyncTest(function(){if(Modernizr.webglextensions=new Boolean(!1),Modernizr.webgl){var a,b,d;try{a=w("canvas"),b=a.getContext("webgl")||a.getContext("experimental-webgl"),d=b.getSupportedExtensions()}catch(e){return}b!==c&&(Modernizr.webglextensions=new Boolean(!0));for(var f=-1,g=d.length;++f<g;)Modernizr.webglextensions[d[f]]=!0;a=c}}),Modernizr.addTest("getusermedia",!!F("getUserMedia",navigator)),Modernizr.addTest("peerconnection",!!F("RTCPeerConnection",a)),Modernizr.addTest("websocketsbinary",function(){var b,c="https:"==location.protocol?"wss":"ws";if("WebSocket"in a){if(b="binaryType"in WebSocket.prototype)return b;try{return!!new WebSocket(c+"://.").binaryType}catch(d){}}return!1}),Modernizr.addTest("websockets","WebSocket"in a&&2===a.WebSocket.CLOSING),Modernizr.addTest("framed",a.location!=top.location),Modernizr.addAsyncTest(function(){try{var b=a.MozBlobBuilder||a.WebKitBlobBuilder||a.MSBlobBuilder||a.OBlobBuilder||a.BlobBuilder,c=a.MozURL||a.webkitURL||a.MSURL||a.OURL||a.URL,d="Modernizr",e=new b;e.append("this.onmessage=function(e){postMessage(e.data)}");var f=c.createObjectURL(e.getBlob()),h=new Worker(f);e=null,h.onmessage=function(a){h.terminate(),c.revokeObjectURL(f),g("blobworkers",d===a.data),h=null},h.onerror=function(){g("blobworkers",!1),h=null},setTimeout(function(){g("blobworkers",!1)},200),h.postMessage(d)}catch(i){g("blobworkers",!1)}}),Modernizr.addAsyncTest(function(){try{var a="Modernizr",b=new Worker("data:text/javascript;base64,dGhpcy5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cG9zdE1lc3NhZ2UoZS5kYXRhKX0=");b.onmessage=function(c){b.terminate(),g("dataworkers",a===c.data),b=null},b.onerror=function(){g("dataworkers",!1),b=null},setTimeout(function(){g("dataworkers",!1)},200),b.postMessage(a)}catch(c){setTimeout(function(){g("dataworkers",!1)},0)}}),Modernizr.addTest("sharedworkers","SharedWorker"in a),Modernizr.addTest("webworkers","Worker"in a),e(),f(t),delete r.addTest,delete r.addAsyncTest;for(var U=0;U<Modernizr._q.length;U++)Modernizr._q[U]();a.Modernizr=Modernizr}(this,document);
\ No newline at end of file +/*! modernizr 3.0.0pre (Custom Build) | MIT */!function(a,b,c){function d(a,b){return typeof a===b}function e(){var a,b,c,e,f,g,h;for(var i in q){if(a=[],b=q[i],b.name&&(a.push(b.name.toLowerCase()),b.options&&b.options.aliases&&b.options.aliases.length))for(c=0;c<b.options.aliases.length;c++)a.push(b.options.aliases[c].toLowerCase());for(e=d(b.fn,"function")?b.fn():b.fn,f=0;f<a.length;f++)g=a[f],h=g.split("."),1===h.length?Modernizr[h[0]]=e:2===h.length&&(Modernizr[h[0]][h[1]]=e),t.push((e?"":"no-")+h.join("-"))}}function f(a){var b=u.className,c=Modernizr._config.classPrefix||"",d=new RegExp("(^|\\s)"+c+"no-js(\\s|$)");b=b.replace(d,"$1"+c+"js$2"),Modernizr._config.enableClasses&&(b+=" "+c+a.join(" "+c),u.className=b)}function g(a,b){if("object"==typeof a)for(var c in a)s(a,c)&&g(c,a[c]);else{a=a.toLowerCase();var d=a.split("."),e=Modernizr[d[0]];if(2==d.length&&(e=e[d[1]]),"undefined"!=typeof e)return Modernizr;b="function"==typeof b?b():b,1==d.length?Modernizr[d[0]]=b:2==d.length&&(Modernizr[d[0]][d[1]]=b),f([(b?"":"no-")+d.join("-")]),Modernizr._trigger(a,b)}return Modernizr}function h(a,b){return!!~(""+a).indexOf(b)}function i(){var a=b.body;return a||(a=w("body"),a.fake=!0),a}function j(a,b,c,d){var e,f,g,h,j="modernizr",k=w("div"),l=i();if(parseInt(c,10))for(;c--;)g=w("div"),g.id=d?d[c]:j+(c+1),k.appendChild(g);return e=["­",'<style id="s',j,'">',a,"</style>"].join(""),k.id=j,(l.fake?l:k).innerHTML+=e,l.appendChild(k),l.fake&&(l.style.background="",l.style.overflow="hidden",h=u.style.overflow,u.style.overflow="hidden",u.appendChild(l)),f=b(k,a),l.fake?(l.parentNode.removeChild(l),u.style.overflow=h,u.offsetHeight):k.parentNode.removeChild(k),!!f}function k(a){return a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()}).replace(/^ms-/,"-ms-")}function l(b,d){var e=b.length;if("CSS"in a&&"supports"in a.CSS){for(;e--;)if(a.CSS.supports(k(b[e]),d))return!0;return!1}if("CSSSupportsRule"in a){for(var f=[];e--;)f.push("("+k(b[e])+":"+d+")");return f=f.join(" or "),j("@supports ("+f+") { #modernizr { position: absolute; } }",function(b){return"absolute"==(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position})}return c}function m(a,b,e,f){function g(){j&&(delete y.style,delete y.modElem)}if(f=d(f,"undefined")?!1:f,!d(e,"undefined")){var i=l(a,e);if(!d(i,"undefined"))return i}var j,k,m,n;y.style||(j=!0,y.modElem=w("modernizr"),y.style=y.modElem.style);for(k in a)if(m=a[k],n=y.style[m],!h(m,"-")&&y.style[m]!==c){if(f||d(e,"undefined"))return g(),"pfx"==b?m:!0;try{y.style[m]=e}catch(o){}if(y.style[m]!=n)return g(),"pfx"==b?m:!0}return g(),!1}function n(a,b,c){var e;for(var f in a)if(a[f]in b)return c===!1?a[f]:(e=b[a[f]],d(e,"function")&&"bind"in e?e.bind(c||b):e);return!1}function o(a,b,c,e,f){var g=a.charAt(0).toUpperCase()+a.slice(1),h=(a+" "+D.join(g+" ")+g).split(" ");return d(b,"string")||d(b,"undefined")?m(h,b,e,f):(h=(a+" "+E.join(g+" ")+g).split(" "),n(h,b,c))}function p(a,b,d){return o(a,c,c,b,d)}var q=[],r={_version:"v3.0.0pre",_config:{classPrefix:"",enableClasses:!0},_q:[],on:function(a,b){setTimeout(function(){b(this[a])},0)},addTest:function(a,b,c){q.push({name:a,fn:b,options:c})},addAsyncTest:function(a){q.push({name:null,fn:a})}},Modernizr=function(){};Modernizr.prototype=r,Modernizr=new Modernizr;var s,t=[],u=b.documentElement;!function(){var a={}.hasOwnProperty;s=d(a,"undefined")||d(a.call,"undefined")?function(a,b){return b in a&&d(a.constructor.prototype[b],"undefined")}:function(b,c){return a.call(b,c)}}(),r._l={},r.on=function(a,b){this._l[a]||(this._l[a]=[]),this._l[a].push(b),Modernizr.hasOwnProperty(a)&&setTimeout(function(){Modernizr._trigger(a,Modernizr[a])},0)},r._trigger=function(a,b){if(this._l[a]){var c=this._l[a];setTimeout(function(){var a,d;for(a=0;a<c.length;a++)d=c[a],d(b)},0),delete this._l[a]}},Modernizr._q.push(function(){r.addTest=g});var v;!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=v.elements;return"string"==typeof a?a.split(" "):a}function e(a){var b=x[a[u]];return b||(b={},w++,a[u]=w,x[w]=b),b}function f(a,c,d){if(c||(c=b),p)return c.createElement(a);d||(d=e(c));var f;return f=d.cache[a]?d.cache[a].cloneNode():t.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),f.canHaveChildren&&!s.test(a)?d.frag.appendChild(f):f}function g(a,c){if(a||(a=b),p)return a.createDocumentFragment();c=c||e(a);for(var f=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)f.createElement(h[g]);return f}function h(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return v.shivMethods?f(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(v,b.frag)}function i(a){a||(a=b);var d=e(a);return!v.shivCSS||o||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}")),p||h(a,d),a}function j(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(k(b)));return g}function k(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(z+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function l(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+z+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function m(a){for(var b=a.length;b--;)a[b].removeNode()}function n(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,f,g=e(a),h=a.namespaces,i=a.parentWindow;return!A||a.printShived?a:("undefined"==typeof h[z]&&h.add(z),i.attachEvent("onbeforeprint",function(){b();for(var e,g,h,i=a.styleSheets,k=[],m=i.length,n=Array(m);m--;)n[m]=i[m];for(;h=n.pop();)if(!h.disabled&&y.test(h.media)){try{e=h.imports,g=e.length}catch(o){g=0}for(m=0;g>m;m++)n.push(e[m]);try{k.push(h.cssText)}catch(o){}}k=l(k.reverse().join("")),f=j(a),d=c(a,k)}),i.attachEvent("onafterprint",function(){m(f),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var o,p,q="3.6.2",r=a.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,t=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,u="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",o="hidden"in a,p=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){o=!0,p=!0}}(),v={elements:r.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:q,shivCSS:r.shivCSS!==!1,supportsUnknownElements:p,shivMethods:r.shivMethods!==!1,type:"default",shivDocument:i,createElement:f,createDocumentFragment:g},a.html5=v,i(b);var y=/^$|\b(?:all|print)\b/,z="html5shiv",A=!p&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();v.type+=" print",v.shivPrint=n,n(b)}(this,b),function(a,b,c){function d(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function e(a,c,e,f,h,i){var j,k,m=b.createElement("script");f=f||l.errorTimeout,m.src=a;for(k in e)m.setAttribute(k,e[k]);c=i?g:c||s,m.onreadystatechange=m.onload=function(){!j&&d(m.readyState)&&(j=1,c(),m.onload=m.onreadystatechange=null)},n(function(){j||(j=1,c(1))},f),E(),h?m.onload():o.parentNode.insertBefore(m,o)}function f(a,c,d,e,f,h){var i,j=b.createElement("link");e=e||l.errorTimeout,c=h?g:c||s,j.href=a,j.rel="stylesheet",j.type="text/css";for(i in d)j.setAttribute(i,d[i]);f||(E(),o.parentNode.insertBefore(j,o),n(c,0))}function g(){var a=q.shift();r=1,a?a.t?n(function(){("c"==a.t?l.injectCss:l.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),g()):r=0}function h(a,c,e,f,h,i,j){function k(b){if(!p&&d(m.readyState)&&(t.r=p=1,!r&&g(),b)){"img"!=a&&n(function(){v.removeChild(m)},50);for(var e in G[c])G[c].hasOwnProperty(e)&&G[c][e].onload();m.onload=m.onreadystatechange=null}}j=j||l.errorTimeout;var m=b.createElement(a),p=0,s=0,t={t:e,s:c,e:h,a:i,x:j};1===G[c]&&(s=1,G[c]=[]),"object"==a?(m.data=c,m.setAttribute("type","text/css")):(m.src=c,m.type=a),m.width=m.height="0",m.onerror=m.onload=m.onreadystatechange=function(){k.call(this,s)},q.splice(f,0,t),"img"!=a&&(s||2===G[c]?(E(),v.insertBefore(m,u?null:o),n(k,j)):G[c].push(m))}function i(a,b,c,d,e){return r=0,b=b||"j",C(a)?h("c"==b?z:y,a,b,this.i++,c,d,e):(q.splice(this.i++,0,a),1==q.length&&g()),this}function j(){var a=l;return a.loader={load:i,i:0},a}var k,l,m=b.documentElement,n=a.setTimeout,o=b.getElementsByTagName("script")[0],p={}.toString,q=[],r=0,s=function(){},t="MozAppearance"in m.style,u=t&&!!b.createRange().compareNode,v=u?m:o.parentNode,w=a.opera&&"[object Opera]"==p.call(a.opera),x=!!b.attachEvent&&!w,y=t?"object":x?"script":"img",z=x?"script":y,A=Array.isArray||function(a){return"[object Array]"==p.call(a)},B=function(a){return Object(a)===a},C=function(a){return"string"==typeof a},D=function(a){return"[object Function]"==p.call(a)},E=function(){o&&o.parentNode||(o=b.getElementsByTagName("script")[0])},F=[],G={},H={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}};l=function(a){function b(a){var b,c,d,e=a.split("!"),f=F.length,g=e.pop(),h=e.length,i={url:g,origUrl:g,prefixes:e};for(c=0;h>c;c++)d=e[c].split("="),b=H[d.shift()],b&&(i=b(i,d));for(c=0;f>c;c++)i=F[c](i);return i}function d(a){var b=a.split("?")[0];return b.substr(b.lastIndexOf(".")+1)}function e(a,e,f,g,h){{var i=b(a),k=i.autoCallback;d(i.url)}if(!i.bypass)return e&&(e=D(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(G[i.url]&&i.reexecute!==!0?i.noexec=!0:G[i.url]=1,a&&f.load(i.url,i.forceCSS||!i.forceJS&&"css"==d(i.url)?"c":c,i.noexec,i.attrs,i.timeout),(D(e)||D(k))&&f.load(function(){j(),e&&e(i.origUrl,h,g),k&&k(i.origUrl,h,g),G[i.url]=2}),void 0)}function f(a,b){function c(a,c){if(""===a||a){if(C(a))c||(i=function(){var a=[].slice.call(arguments);j.apply(this,a),k()}),e(a,i,b,0,f);else if(B(a)){d=function(){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c}();for(var g in a)a.hasOwnProperty(g)&&(c||--d||(D(i)?i=function(){var a=[].slice.call(arguments);j.apply(this,a),k()}:i[g]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),k()}}(j[g])),e(a[g],i,b,g,f))}}else!c&&k()}var d,f=!!a.test,g=f?a.yep:a.nope,h=a.load||a.both,i=a.callback||s,j=i,k=a.complete||s;c(g,!!h||!!a.complete),h&&c(h),!h&&!!a.complete&&c("")}var g,h,i=this.yepnope.loader;if(C(a))e(a,0,i,0);else if(A(a))for(g=0;g<a.length;g++)h=a[g],C(h)?e(h,0,i,0):A(h)?l(h):B(h)&&f(h,i);else B(a)&&f(a,i)},l.addPrefix=function(a,b){H[a]=b},l.addFilter=function(a){F.push(a)},l.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",k=function(){b.removeEventListener("DOMContentLoaded",k,0),b.readyState="complete"},0)),a.yepnope=j(),a.yepnope.executeStack=g,a.yepnope.injectJs=e,a.yepnope.injectCss=f}(a,b),r.load=function(){a.yepnope.apply(a,[].slice.call(arguments,0))};var w=function(){return b.createElement.apply(b,arguments)},x={elem:w("modernizr")};Modernizr._q.push(function(){delete x.elem});var y={style:x.elem.style};Modernizr._q.unshift(function(){delete y.style});var z=r.testProp=function(a,b,d){return m([a],c,b,d)},A=t.slice;Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if("function"!=typeof b)throw new TypeError;var c=A.call(arguments,1),d=function(){if(this instanceof d){var e=function(){};e.prototype=b.prototype;var f=new e,g=b.apply(f,c.concat(A.call(arguments)));return Object(g)===g?g:f}return b.apply(a,c.concat(A.call(arguments)))};return d}),Modernizr.addTest("adownload",!a.externalHost&&"download"in w("a")),Modernizr.addTest("applicationcache","applicationCache"in a),Modernizr.addTest("audioloop","loop"in w("audio")),Modernizr.addTest("audiopreload","preload"in w("audio")),Modernizr.addTest("audio",function(){var a=w("audio"),b=!1;try{(b=!!a.canPlayType)&&(b=new Boolean(b),b.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),b.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),b.opus=a.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),b.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),b.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(c){}return b}),Modernizr.addTest("canvas",function(){var a=w("canvas");return!(!a.getContext||!a.getContext("2d"))});var B=w("canvas");Modernizr.addTest("todataurljpeg",function(){return!!Modernizr.canvas&&0===B.toDataURL("image/jpeg").indexOf("data:image/jpeg")}),Modernizr.addTest("todataurlpng",function(){return!!Modernizr.canvas&&0===B.toDataURL("image/png").indexOf("data:image/png")}),Modernizr.addTest("todataurlwebp",function(){return!!Modernizr.canvas&&0===B.toDataURL("image/webp").indexOf("data:image/webp")}),Modernizr.addTest("canvastext",function(){return Modernizr.canvas===!1?!1:"function"==typeof w("canvas").getContext("2d").fillText}),Modernizr.addTest("contenteditable",function(){if("contentEditable"in u){var a=w("div");return a.contentEditable=!0,"true"===a.contentEditable}}),Modernizr.addTest("contentsecuritypolicy","securityPolicy"in b||"SecurityPolicy"in b),Modernizr.addTest("contextmenu","contextMenu"in u&&"HTMLMenuItemElement"in a),Modernizr.addTest("cookies",function(){try{b.cookie="cookietest=1";var a=-1!=b.cookie.indexOf("cookietest=");return b.cookie="cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT",a}catch(c){return!1}});var C="Webkit Moz O ms",D=C.split(" ");r._cssomPrefixes=D;var E=C.toLowerCase().split(" ");r._domPrefixes=E,r.testAllProps=o,r.testAllProps=p,Modernizr.addTest("cssanimations",p("animationName","a",!0)),Modernizr.addTest("backgroundcliptext",function(){return p("backgroundClip","text")}),Modernizr.addTest("bgpositionshorthand",function(){var a=w("a"),b=a.style,c="right 10px bottom 10px";return b.cssText="background-position: "+c+";",b.backgroundPosition===c}),Modernizr.addTest("bgpositionxy",function(){return p("backgroundPositionX","3px",!0)&&p("backgroundPositionY","5px",!0)}),Modernizr.addTest("bgrepeatround",p("backgroundRepeat","round")),Modernizr.addTest("bgrepeatspace",p("backgroundRepeat","space")),Modernizr.addTest("backgroundsize",p("backgroundSize","100%",!0)),Modernizr.addTest("bgsizecover",p("backgroundSize","cover")),Modernizr.addTest("borderimage",p("borderImage","url() 1",!0)),Modernizr.addTest("borderradius",p("borderRadius","0px",!0)),Modernizr.addTest("boxshadow",p("boxShadow","1px 1px",!0)),Modernizr.addTest("boxsizing",p("boxSizing","border-box",!0)&&(b.documentMode===c||b.documentMode>7));var F=" -webkit- -moz- -o- -ms- ".split(" ");r._prefixes=F,Modernizr.addTest("csscalc",function(){var a="width:",b="calc(10px);",c=w("div");return c.style.cssText=a+F.join(b+a),!!c.style.length});var G=r.testStyles=j;Modernizr.addTest("checked",function(){return G("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(a){var b=w("input");return b.setAttribute("type","checkbox"),b.setAttribute("checked","checked"),a.appendChild(b),20===b.offsetLeft})}),function(){Modernizr.addTest("csscolumns",function(){var a=!1,b=p("columnCount");try{(a=!!b)&&(a=new Boolean(a))}catch(c){}return a});for(var a,b,c=["Width","Span","Fill","Gap","Rule","RuleColor","RuleStyle","RuleWidth","BreakBefore","BreakAfter","BreakInside"],d=0;d<c.length;d++)a=c[d].toLowerCase(),b=p("column"+c[d]),("breakbefore"===a||"breakafter"===a||"breakinside"==a)&&(b=b||p(c[d])),Modernizr.addTest("csscolumns."+a,b)}(),Modernizr.addTest("cubicbezierrange",function(){var a=w("div");return a.style.cssText=F.join("transition-timing-function:cubic-bezier(1,0,0,1.1); "),!!a.style.length}),Modernizr.addTest("displayrunin",p("display","run-in"),{aliases:["display-runin"]}),G("#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}",function(a){var b,c=a.children;b=c[0].offsetLeft<c[1].offsetLeft,Modernizr.addTest("displaytable",b,{aliases:["display-table"]})},2),Modernizr.addTest("ellipsis",p("textOverflow","ellipsis")),Modernizr.addTest("cssfilters",function(){var a=w("div");return a.style.cssText=F.join("filter:blur(2px); "),!!a.style.length&&(b.documentMode===c||b.documentMode>9)}),Modernizr.addTest("flexbox",p("flexBasis","1px",!0)),Modernizr.addTest("flexboxlegacy",p("boxDirection","reverse",!0)),Modernizr.addTest("flexboxtweener",p("flexAlign","end",!0)),Modernizr.addTest("flexwrap",p("flexWrap","wrap",!0));var H=function(){var a=navigator.userAgent,b=a.match(/applewebkit\/([0-9]+)/gi)&&parseFloat(RegExp.$1),c=a.match(/w(eb)?osbrowser/gi),d=a.match(/windows phone/gi)&&a.match(/iemobile\/([0-9])+/gi)&&parseFloat(RegExp.$1)>=9,e=533>b&&a.match(/android/gi);return c||e||d}();H?Modernizr.addTest("fontface",!1):G('@font-face {font-family:"font";src:url("https://")}',function(a,c){var d=b.getElementById("smodernizr"),e=d.sheet||d.styleSheet,f=e?e.cssRules&&e.cssRules[0]?e.cssRules[0].cssText:e.cssText||"":"",g=/src/i.test(f)&&0===f.indexOf(c.split(" ")[0]);Modernizr.addTest("fontface",g)}),G('#modernizr{font:0/0 a}#modernizr:after{content:":)";visibility:hidden;font:7px/1 a}',function(a){Modernizr.addTest("generatedcontent",a.offsetHeight>=7)}),Modernizr.addTest("cssgradients",function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);",d=(a+"-webkit- ".split(" ").join(b+a)+F.join(c+a)).slice(0,-a.length),e=w("div"),f=e.style;return f.cssText=d,(""+f.backgroundImage).indexOf("gradient")>-1}),Modernizr.addTest("hsla",function(){var a=w("div"),b=a.style;return b.cssText="background-color:hsla(120,40%,100%,.5)",h(b.backgroundColor,"rgba")||h(b.backgroundColor,"hsla")}),Modernizr.addAsyncTest(function(){function c(){function e(){try{var a=w("div"),c=w("span"),d=a.style,e=0,f=0,g=!1,h=b.body.firstElementChild||b.body.firstChild;return a.appendChild(c),c.innerHTML="Bacon ipsum dolor sit amet jerky velit in culpa hamburger et. Laborum dolor proident, enim dolore duis commodo et strip steak. Salami anim et, veniam consectetur dolore qui tenderloin jowl velit sirloin. Et ad culpa, fatback cillum jowl ball tip ham hock nulla short ribs pariatur aute. Pig pancetta ham bresaola, ut boudin nostrud commodo flank esse cow tongue culpa. Pork belly bresaola enim pig, ea consectetur nisi. Fugiat officia turkey, ea cow jowl pariatur ullamco proident do laborum velit sausage. Magna biltong sint tri-tip commodo sed bacon, esse proident aliquip. Ullamco ham sint fugiat, velit in enim sed mollit nulla cow ut adipisicing nostrud consectetur. Proident dolore beef ribs, laborum nostrud meatball ea laboris rump cupidatat labore culpa. Shankle minim beef, velit sint cupidatat fugiat tenderloin pig et ball tip. Ut cow fatback salami, bacon ball tip et in shank strip steak bresaola. In ut pork belly sed mollit tri-tip magna culpa veniam, short ribs qui in andouille ham consequat. Dolore bacon t-bone, velit short ribs enim strip steak nulla. Voluptate labore ut, biltong swine irure jerky. Cupidatat excepteur aliquip salami dolore. Ball tip strip steak in pork dolor. Ad in esse biltong. Dolore tenderloin exercitation ad pork loin t-bone, dolore in chicken ball tip qui pig. Ut culpa tongue, sint ribeye dolore ex shank voluptate hamburger. Jowl et tempor, boudin pork chop labore ham hock drumstick consectetur tri-tip elit swine meatball chicken ground round. Proident shankle mollit dolore. Shoulder ut duis t-bone quis reprehenderit. Meatloaf dolore minim strip steak, laboris ea aute bacon beef ribs elit shank in veniam drumstick qui. Ex laboris meatball cow tongue pork belly. Ea ball tip reprehenderit pig, sed fatback boudin dolore flank aliquip laboris eu quis. Beef ribs duis beef, cow corned beef adipisicing commodo nisi deserunt exercitation. Cillum dolor t-bone spare ribs, ham hock est sirloin. Brisket irure meatloaf in, boudin pork belly sirloin ball tip. Sirloin sint irure nisi nostrud aliqua. Nostrud nulla aute, enim officia culpa ham hock. Aliqua reprehenderit dolore sunt nostrud sausage, ea boudin pork loin ut t-bone ham tempor. Tri-tip et pancetta drumstick laborum. Ham hock magna do nostrud in proident. Ex ground round fatback, venison non ribeye in.",b.body.insertBefore(a,h),d.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;",e=c.offsetHeight,f=c.offsetWidth,d.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;"+F.join("hyphens:auto; "),g=c.offsetHeight!=e||c.offsetWidth!=f,b.body.removeChild(a),a.removeChild(c),g}catch(i){return!1}}function f(a,c){try{var d=w("div"),e=w("span"),f=d.style,g=0,h=!1,i=!1,j=!1,k=b.body.firstElementChild||b.body.firstChild;return f.cssText="position:absolute;top:0;left:0;overflow:visible;width:1.25em;",d.appendChild(e),b.body.insertBefore(d,k),e.innerHTML="mm",g=e.offsetHeight,e.innerHTML="m"+a+"m",i=e.offsetHeight>g,c?(e.innerHTML="m<br />m",g=e.offsetWidth,e.innerHTML="m"+a+"m",j=e.offsetWidth>g):j=!0,i===!0&&j===!0&&(h=!0),b.body.removeChild(d),d.removeChild(e),h}catch(l){return!1}}function h(c){try{var d,e=w("input"),f=w("div"),g="lebowski",h=!1,i=b.body.firstElementChild||b.body.firstChild;if(f.innerHTML=g+c+g,b.body.insertBefore(f,i),b.body.insertBefore(e,f),e.setSelectionRange?(e.focus(),e.setSelectionRange(0,0)):e.createTextRange&&(d=e.createTextRange(),d.collapse(!0),d.moveEnd("character",0),d.moveStart("character",0),d.select()),a.find)h=a.find(g+g);else try{d=a.self.document.body.createTextRange(),h=d.findText(g+g)}catch(j){h=!1}return b.body.removeChild(f),b.body.removeChild(e),h}catch(j){return!1}}return b.body||b.getElementsByTagName("body")[0]?(g("csshyphens",function(){if(!p("hyphens","auto",!0))return!1;try{return e()}catch(a){return!1}}),g("softhyphens",function(){try{return f("­",!0)&&f("​",!1)}catch(a){return!1}}),g("softhyphensfind",function(){try{return h("­")&&h("​")}catch(a){return!1}}),void 0):(setTimeout(c,d),void 0)}var d=300;setTimeout(c,d)}),G("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}",function(a){Modernizr.addTest("lastchild",a.lastChild.offsetWidth>a.firstChild.offsetWidth)},2),Modernizr.addTest("cssmask",p("maskRepeat","repeat-x",!0));var I=function(){var b=a.matchMedia||a.msMatchMedia;return b?function(a){var c=b(a);return c&&c.matches||!1}:function(b){var c=!1;return j("@media "+b+" { #modernizr { position: absolute; } }",function(b){c="absolute"==(a.getComputedStyle?a.getComputedStyle(b,null):b.currentStyle).position}),c}}(),J=r.mq=I;Modernizr.addTest("mediaqueries",J("only all")),Modernizr.addTest("multiplebgs",function(){var a=w("div"),b=a.style;return b.cssText="background:url(https://),url(https://),red url(https://)",/(url\s*\(.*?){3}/.test(b.background)}),G("#modernizr div {width:1px} #modernizr div:nth-child(2n) {width:2px;}",function(a){Modernizr.addTest("nthchild",function(){for(var b=a.getElementsByTagName("div"),c=!0,d=0;5>d;d++)c=c&&b[d].offsetWidth===d%2+1;return c})},5);var K=r.prefixed=function(a,b,c){return b?o(a,b,c):o(a,"pfx")};Modernizr.addTest("objectfit",!!K("objectFit"),{aliases:["object-fit"]}),Modernizr.addTest("opacity",function(){var a=w("div"),b=a.style;return b.cssText=F.join("opacity:.55;"),/^0.55$/.test(b.opacity)}),Modernizr.addTest("overflowscrolling",p("overflowScrolling","touch",!0)),Modernizr.addTest("csspointerevents",function(){var a=w("x");return a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}),Modernizr.addTest("csspositionsticky",function(){var a="position:",b="sticky",c=w("modernizr"),d=c.style;return d.cssText=a+F.join(b+";"+a).slice(0,-a.length),-1!==d.position.indexOf(b)}),Modernizr.addTest("csspseudoanimations",function(){var b=!1;if(!Modernizr.cssanimations||!a.getComputedStyle)return b;var c=["@",Modernizr._prefixes.join("keyframes csspseudoanimations { from { font-size: 10px; } }@").replace(/\@$/,""),'#modernizr:before { content:" "; font-size:5px;',Modernizr._prefixes.join("animation:csspseudoanimations 1ms infinite;"),"}"].join("");return Modernizr.testStyles(c,function(c){b="10px"===a.getComputedStyle(c,":before").getPropertyValue("font-size")}),b}),Modernizr.addTest("csstransitions",p("transition","all",!0)),Modernizr.addTest("csspseudotransitions",function(){var b=!1;if(!Modernizr.csstransitions||!a.getComputedStyle)return b;var c='#modernizr:before { content:" "; font-size:5px;'+Modernizr._prefixes.join("transition:0s 100s;")+"}#modernizr.trigger:before { font-size:10px; }";return Modernizr.testStyles(c,function(c){a.getComputedStyle(c,":before").getPropertyValue("font-size"),c.className+="trigger",b="5px"===a.getComputedStyle(c,":before").getPropertyValue("font-size")}),b}),Modernizr.addTest("cssreflections",p("boxReflect","above",!0)),Modernizr.addTest("regions",function(){var a=Modernizr.prefixed("flowFrom"),b=Modernizr.prefixed("flowInto");if(!a||!b)return!1;var d=w("div"),e=w("div"),f=w("div"),g="modernizr_flow_for_regions_check";e.innerText="M",d.style.cssText="top: 150px; left: 150px; padding: 0px;",f.style.cssText="width: 50px; height: 50px; padding: 42px;",f.style[a]=g,d.appendChild(e),d.appendChild(f),u.appendChild(d);var h,i,j=e.getBoundingClientRect();return e.style[b]=g,h=e.getBoundingClientRect(),i=parseInt(h.left-j.left,10),u.removeChild(d),e=f=d=c,42==i}),Modernizr.addTest("cssremunit",function(){var a=w("div");try{a.style.fontSize="3rem"}catch(b){}return/rem/.test(a.style.fontSize)}),Modernizr.addTest("cssresize",p("resize","both",!0)),Modernizr.addTest("rgba",function(){var a=w("div"),b=a.style;return b.cssText="background-color:rgba(150,255,150,.5)",(""+b.backgroundColor).indexOf("rgba")>-1}),G("#modernizr{overflow: scroll; width: 40px; height: 40px; }#"+F.join("scrollbar{width:0px} #modernizr::").split("#").slice(1).join("#")+"scrollbar{width:0px}",function(a){Modernizr.addTest("cssscrollbar",40==a.scrollWidth)}),Modernizr.addTest("shapes",function(){var b=K("shapeOutside");if(!b)return!1;var c=b.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()}).replace(/^ms-/,"-ms-");return G("#modernizr { float: left; "+c+":rectangle(0,0,0,0,0,0) }",function(b){var c=a.getComputedStyle?getComputedStyle(b,null):b.currentStyle;return"rectangle(0px, 0px, 0px, 0px, 0px, 0px)"==c[K("shapeOutside",u.style,!1)]})}),Modernizr.addTest("siblinggeneral",function(){return G("#modernizr div {width:100px} #modernizr div ~ div {width:200px;display:block}",function(a){return 200==a.lastChild.offsetWidth},2)}),G("#modernizr{position: absolute; top: -10em; visibility:hidden; font: normal 10px arial;}#subpixel{float: left; font-size: 33.3333%;}",function(b){var c=b.firstChild;c.innerHTML="This is a text written in Arial",Modernizr.addTest("subpixelfont",a.getComputedStyle?"44px"!==a.getComputedStyle(c,null).getPropertyValue("width"):!1)},1,["subpixel"]),Modernizr.addTest("supports","CSSSupportsRule"in a),Modernizr.addTest("target",function(){var b=a.document;if(!("querySelectorAll"in b))return!1;try{return b.querySelectorAll(":target"),!0}catch(c){return!1}}),Modernizr.addTest("textshadow",z("textShadow","1px 1px")),Modernizr.addTest("csstransforms",p("transform","scale(1)",!0)),Modernizr.addTest("csstransforms3d",function(){var a=!!p("perspective","1px",!0);return a&&"webkitPerspective"in u.style&&G("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0}}",function(b){a=9===b.offsetLeft&&5===b.offsetHeight}),a}),Modernizr.addTest("preserve3d",p("transformStyle","preserve-3d")),Modernizr.addTest("userselect",p("userSelect","none",!0)),G("#modernizr { height: 50vh; }",function(b){var c=parseInt(a.innerHeight/2,10),d=parseInt((a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).height,10);Modernizr.addTest("cssvhunit",d==c)}),G("#modernizr { width: 50vmax; }",function(b){var c=u.clientWidth/100,d=u.clientHeight/100,e=parseInt((a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).width,10);Modernizr.addTest("cssvmaxunit",parseInt(50*Math.max(c,d),10)==e)}),G("#modernizr { width: 50vmin; }",function(b){var c=u.clientWidth/100,d=u.clientHeight/100,e=parseInt((a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).width,10);Modernizr.addTest("cssvminunit",parseInt(50*Math.min(c,d),10)==e)}),G("#modernizr { width: 50vw; }",function(b){var c=parseInt(u.innerWidth/2,10),d=parseInt((a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).width,10);Modernizr.addTest("cssvwunit",d==c)}),Modernizr.addTest("wrapflow",function(){var a=K("wrapFlow");if(!a)return!1;var b=a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()}).replace(/^ms-/,"-ms-"),d=w("div"),e=w("div"),f=w("span");e.style.cssText="position: absolute; left: 50px; width: 100px; height: 20px;"+b+":end;",f.innerText="X",d.appendChild(e),d.appendChild(f),u.appendChild(d);var g=f.offsetLeft;return u.removeChild(d),e=f=d=c,150==g}),Modernizr.addTest("customprotocolhandler",!!navigator.registerProtocolHandler),Modernizr.addTest("dart",!!K("startDart",navigator)),Modernizr.addTest("dataview","undefined"!=typeof DataView&&"getFloat64"in DataView.prototype),Modernizr.addTest("classlist","classList"in u),Modernizr.addTest("createelementattrs",function(){try{return"test"==w('<input name="test" />').getAttribute("name")}catch(a){return!1}},{aliases:["createelement-attrs"]}),Modernizr.addTest("dataset",function(){var a=w("div");return a.setAttribute("data-a-b","c"),!(!a.dataset||"c"!==a.dataset.aB)}),Modernizr.addTest("documentfragment",function(){return"createDocumentFragment"in b&&"appendChild"in u}),Modernizr.addTest("microdata","getItems"in b),Modernizr.addTest("draganddrop",function(){var a=w("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a});var L={},M="autocomplete autofocus list placeholder max min multiple pattern required step".split(" "),N=w("input");Modernizr.input=function(b){for(var c=0,d=b.length;d>c;c++)L[b[c]]=!!(b[c]in N);return L.list&&(L.list=!(!w("datalist")||!a.HTMLDataListElement)),L}(M),Modernizr.addTest("datalistelem",Modernizr.input.list),Modernizr.addTest("details",function(){var a,b=w("details");return"open"in b?(G("#modernizr details{display:block}",function(c){c.appendChild(b),b.innerHTML="<summary>a</summary>b",a=b.offsetHeight,b.open=!0,a=a!=b.offsetHeight}),a):!1}),Modernizr.addTest("outputelem","value"in w("output")),Modernizr.addTest("progressbar",w("progress").max!==c),Modernizr.addTest("meter",w("meter").max!==c),Modernizr.addTest("ruby",function(){function c(c,d){var e;return a.getComputedStyle?e=b.defaultView.getComputedStyle(c,null).getPropertyValue(d):c.currentStyle&&(e=c.currentStyle[d]),e}function d(){u.removeChild(e),e=null,f=null,g=null}var e=w("ruby"),f=w("rt"),g=w("rp"),h="display",i="fontSize";return e.appendChild(g),e.appendChild(f),u.appendChild(e),"none"==c(g,h)||"ruby"==c(e,h)&&"ruby-text"==c(f,h)||"6pt"==c(g,i)&&"6pt"==c(f,i)?(d(),!0):(d(),!1)}),Modernizr.addTest("template","content"in w("template")),Modernizr.addTest("time","valueAsDate"in w("time")),Modernizr.addTest("texttrackapi","function"==typeof w("video").addTextTrack),Modernizr.addTest("track","kind"in w("track")),Modernizr.addTest("emoji",function(){if(!Modernizr.canvastext)return!1; +var a=w("canvas"),b=a.getContext("2d");return b.textBaseline="top",b.font="32px Arial",b.fillText("\ud83d\ude03",0,0),0!==b.getImageData(16,16,1,1).data[0]}),Modernizr.addTest("es5array",function(){return!!(Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray)}),Modernizr.addTest("es5date",function(){var a="2013-04-12T06:06:37.307Z",b=!1;try{b=!!Date.parse(a)}catch(c){}return!!(Date.now&&Date.prototype&&Date.prototype.toISOString&&Date.prototype.toJSON&&b)}),Modernizr.addTest("es5function",function(){return!(!Function.prototype||!Function.prototype.bind)}),Modernizr.addTest("es5object",function(){return!!(Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions)}),Modernizr.addTest("strictmode",function(){return!this}()),Modernizr.addTest("es5string",function(){return!(!String.prototype||!String.prototype.trim)}),Modernizr.addTest("contains",d(String.prototype.contains,"function")),Modernizr.addTest("devicemotion","DeviceMotionEvent"in a),Modernizr.addTest("deviceorientation","DeviceOrientationEvent"in a);var O=function(a){function c(b,c){var e;return b?(c&&"string"!=typeof c||(c=w(c||"div")),b="on"+b,e=b in c,!e&&d&&(c.setAttribute||(c=w("div")),c.setAttribute&&c.removeAttribute&&(c.setAttribute(b,""),e="function"==typeof c[b],c[b]!==a&&(c[b]=a),c.removeAttribute(b))),e):!1}var d=!("onblur"in b.documentElement);return c}(),P=r.hasEvent=O;Modernizr.addTest("oninput",function(){var c=w("input");if(c.setAttribute("oninput","return"),P("oninput",u)||"function"==typeof c.oninput)return!0;try{var d=b.createEvent("KeyboardEvent"),e=!1,f=function(a){e=!0,a.preventDefault(),a.stopPropagation()};return d.initKeyEvent("keypress",!0,!0,a,!1,!1,!1,!1,0,"e".charCodeAt(0)),u.appendChild(c),c.addEventListener("input",f,!1),c.focus(),c.dispatchEvent(d),c.removeEventListener("input",f,!1),u.removeChild(c),e}catch(g){}}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("exiforientation",!1,{aliases:["exif-orientation"]})},a.onload=function(){g("exiforientation",2!==a.width,{aliases:["exif-orientation"]})},a.src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABgASAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iiiigD/2Q=="}),Modernizr.addTest("filereader",!!(a.File&&a.FileList&&a.FileReader)),Modernizr.addTest("filesystem",!!K("requestFileSystem",a)),Modernizr.addAsyncTest(function(){var b,c,d=function(a,b){var c=!!a;c&&(c=new Boolean(c),c.blocked="blocked"===a),g("flash",function(){return c}),b&&u.removeChild(b)};try{c="Pan"in new a.ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(e){}if(b=!("plugins"in navigator&&"Shockwave Flash"in navigator.plugins||c))d(!1);else{var f,h=w("embed");if(h.type="application/x-shockwave-flash",u.appendChild(h),!("Pan"in h||c))return d("blocked",h),void 0;setTimeout(function(){return u.contains(h)?(f=h.style.cssText,""!==f?(d("blocked",h),void 0):(d(!0,h),void 0)):(d("blocked"),void 0)},10)}}),Modernizr.addTest("capture","capture"in w("input")),Modernizr.addTest("fileinput",function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var a=w("input");return a.type="file",!a.disabled}),Modernizr.addTest("fileinputdirectory",function(){var a=w("input"),b="directory";if(a.type="file",b in a)return!0;for(var c=0,d=E.length;d>c;c++)if(E[c]+b in a)return!0;return!1}),Modernizr.addTest("formattribute",function(){var a,c=w("form"),d=w("input"),e=w("div"),f="formtest"+(new Date).getTime(),g=!1;c.id=f;try{d.setAttribute("form",f)}catch(h){b.createAttribute&&(a=b.createAttribute("form"),a.nodeValue=f,d.setAttributeNode(a))}return e.appendChild(c),e.appendChild(d),u.appendChild(e),g=1===c.elements.length&&d.form==c,e.parentNode.removeChild(e),g}),Modernizr.addTest("localizednumber",function(){var a,c=w("div"),d=i(),e=function(){return u.insertBefore(d,u.firstElementChild||u.firstChild)}();c.innerHTML='<input type="number" value="1.0" step="0.1"/>';var f=c.childNodes[0];e.appendChild(c),f.focus();try{b.execCommand("InsertText",!1,"1,1")}catch(g){}return a="number"===f.type&&1.1===f.valueAsNumber&&f.checkValidity(),e.removeChild(c),d.fake&&e.parentNode.removeChild(e),a}),Modernizr.addTest("placeholder","placeholder"in w("input")&&"placeholder"in w("textarea")),Modernizr.addTest("requestautocomplete",!!Modernizr.prefixed("requestAutocomplete",w("form"))),Modernizr.addTest("speechinput",function(){var a=w("input");return"speech"in a||"onwebkitspeechchange"in a}),Modernizr.addTest("formvalidation",function(){var b=w("form");if(!("checkValidity"in b&&"addEventListener"in b))return!1;var c,d=!1;return Modernizr.formvalidationapi=!0,b.addEventListener("submit",function(b){a.opera||b.preventDefault(),b.stopPropagation()},!1),b.innerHTML='<input name="modTest" required><button></button>',G("#modernizr form{position:absolute;top:-99999em}",function(a){a.appendChild(b),c=b.getElementsByTagName("input")[0],c.addEventListener("invalid",function(a){d=!0,a.preventDefault(),a.stopPropagation()},!1),Modernizr.formvalidationmessage=!!c.validationMessage,b.getElementsByTagName("button")[0].click()}),d}),Modernizr.addTest("fullscreen",!(!K("exitFullscreen",b,!1)&&!K("cancelFullScreen",b,!1))),Modernizr.addTest("gamepads",!!K("getGamepads",navigator)),Modernizr.addTest("geolocation","geolocation"in navigator),Modernizr.addTest("hashchange",function(){return P("hashchange",a)===!1?!1:b.documentMode===c||b.documentMode>7}),Modernizr.addTest("history",function(){var b=navigator.userAgent;return-1!==b.indexOf("Android 2")&&-1!==b.indexOf("Mobile Safari")&&-1===b.indexOf("Chrome")?!1:a.history&&"pushState"in a.history}),Modernizr.addTest("ie8compat",!a.addEventListener&&!!b.documentMode&&7===b.documentMode),Modernizr.addTest("sandbox","sandbox"in w("iframe")),Modernizr.addTest("seamless","seamless"in w("iframe")),Modernizr.addTest("srcdoc","srcdoc"in w("iframe")),Modernizr.addAsyncTest(function(){if(!Modernizr.canvas)return!1;var a=new Image,b=w("canvas"),c=b.getContext("2d");a.onload=function(){g("apng",function(){return"undefined"==typeof b.getContext?!1:(c.drawImage(a,0,0),0===c.getImageData(0,0,1,1).data[3])})},a.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg=="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onload=a.onerror=function(){g("jpegxr",1==a.width,{aliases:["jpeg-xr"]})},a.src="data:image/vnd.ms-photo;base64,SUm8AQgAAAAFAAG8AQAQAAAASgAAAIC8BAABAAAAAQAAAIG8BAABAAAAAQAAAMC8BAABAAAAWgAAAMG8BAABAAAAHwAAAAAAAAAkw91vA07+S7GFPXd2jckNV01QSE9UTwAZAYBxAAAAABP/gAAEb/8AAQAAAQAAAA=="}),Modernizr.addTest("srcset","srcset"in w("img")),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webplossless",!1,{aliases:["webp-lossless"]})},a.onload=function(){g("webplossless",1==a.width,{aliases:["webp-lossless"]})},a.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webpalpha",!1,{aliases:["webp-alpha"]})},a.onload=function(){g("webpalpha",1==a.width,{aliases:["webp-alpha"]})},a.src="data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA=="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webpanimation",!1,{aliases:["webp-animation"]})},a.onload=function(){g("webpanimation",1==a.width,{aliases:["webp-animation"]})},a.src="data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA"}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webp",!1)},a.onload=function(){g("webp",1==a.width)},a.src="data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA="}),Modernizr.addTest("indexeddb",!!K("indexedDB",a)),Modernizr.addTest("inputformaction",!!("formAction"in w("input")),{aliases:["input-formaction"]}),Modernizr.addTest("inputsearchevent",P("search"));var Q="search tel url email datetime date month week time datetime-local number range color".split(" "),R={},S=":)";Modernizr.inputtypes=function(a){for(var d,e,f,g=a.length,h=0;g>h;h++)N.setAttribute("type",e=a[h]),d="text"!==N.type,d&&(N.value=S,N.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(e)&&N.style.WebkitAppearance!==c?(u.appendChild(N),f=b.defaultView,d=f.getComputedStyle&&"textfield"!==f.getComputedStyle(N,null).WebkitAppearance&&0!==N.offsetHeight,u.removeChild(N)):/^(search|tel)$/.test(e)||(d=/^(url|email)$/.test(e)?N.checkValidity&&N.checkValidity()===!1:N.value!=S)),R[a[h]]=!!d;return R}(Q),Modernizr.addTest("intl",!!K("Intl",a)),Modernizr.addTest("json","JSON"in a&&"parse"in JSON),Modernizr.addTest("olreversed","reversed"in w("ol")),Modernizr.addTest("mathml",function(){var a;return Modernizr.testStyles("#modernizr{position:absolute}",function(b){b.innerHTML="<math><mfrac><mi>xx</mi><mi>yy</mi></mfrac></math>",a=b.offsetHeight>b.offsetWidth}),a}),Modernizr.addTest("lowbandwidth",function(){var a=navigator.connection||{type:0};return 3==a.type||4==a.type||/^[23]g$/.test(a.type)}),Modernizr.addTest("eventsource","EventSource"in a);var T=function(a){if("undefined"==typeof XMLHttpRequest)return!1;var b=new XMLHttpRequest;b.open("get","/",!0);try{b.responseType=a}catch(c){return!1}return"response"in b&&b.responseType==a};Modernizr.addTest("xhrresponsetypearraybuffer",T("arraybuffer")),Modernizr.addTest("xhrresponsetypedocument",T("document")),Modernizr.addTest("xhrresponsetypejson",T("json")),Modernizr.addTest("xhrresponsetypetext",T("text")),Modernizr.addTest("xhrresponsetype",function(){if("undefined"==typeof XMLHttpRequest)return!1;var a=new XMLHttpRequest;return a.open("get","/",!0),"response"in a}()),Modernizr.addTest("xhr2","FormData"in a),Modernizr.addTest("notification","Notification"in a&&"permission"in a.Notification&&"requestPermission"in a.Notification),Modernizr.addTest("pagevisibility",!!K("hidden",b,!1)),Modernizr.addTest("performance",!!K("performance",a)),Modernizr.addTest("pointerevents",function(){var a=!1,b=E.length;for(a=Modernizr.hasEvent("pointerdown");b--&&!a;)P(E[b]+"pointerdown")&&(a=!0);return a}),Modernizr.addTest("pointerlock",!!K("exitPointerLock",b)),Modernizr.addTest("postmessage","postMessage"in a),Modernizr.addTest("quotamanagement",function(){var a=K("temporaryStorage",navigator),b=K("persistentStorage",navigator);return!(!a||!b)}),Modernizr.addTest("requestanimationframe",!!K("requestAnimationFrame",a),{aliases:["raf"]}),Modernizr.addTest("scriptasync","async"in w("script")),Modernizr.addTest("scriptdefer","defer"in w("script")),Modernizr.addTest("serviceworker","serviceWorker"in navigator),Modernizr.addTest("speechrecognition",!!K("SpeechRecognition",a)),Modernizr.addTest("speechsynthesis","SpeechSynthesisUtterance"in a),Modernizr.addTest("localstorage",function(){var a="modernizr";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(b){return!1}}),Modernizr.addTest("sessionstorage",function(){var a="modernizr";try{return sessionStorage.setItem(a,a),sessionStorage.removeItem(a),!0}catch(b){return!1}}),Modernizr.addTest("websqldatabase","openDatabase"in a),Modernizr.addTest("stylescoped","scoped"in w("style")),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("svgasimg",!1)},a.onload=function(){g("svgasimg",1==a.width&&1==a.height)},a.src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg=="});var U={}.toString;Modernizr.addTest("svgclippaths",function(){return!!b.createElementNS&&/SVGClipPath/.test(U.call(b.createElementNS("http://www.w3.org/2000/svg","clipPath")))}),Modernizr.addTest("svgfilters",function(){var b=!1;try{b="SVGFEColorMatrixElement"in a&&2==SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE}catch(c){}return b}),Modernizr.addTest("inlinesvg",function(){var a=w("div");return a.innerHTML="<svg/>","http://www.w3.org/2000/svg"==(a.firstChild&&a.firstChild.namespaceURI)}),Modernizr.addTest("smil",function(){return!!b.createElementNS&&/SVGAnimate/.test(U.call(b.createElementNS("http://www.w3.org/2000/svg","animate")))}),Modernizr.addTest("svg",!!b.createElementNS&&!!b.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect),Modernizr.addTest("textareamaxlength",!!("maxLength"in w("textarea"))),Modernizr.addTest("touchevents",function(){var c;if("ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch)c=!0;else{var d=["@media (",F.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");G(d,function(a){c=9===a.offsetTop})}return c}),Modernizr.addTest("typedarrays","ArrayBuffer"in a),Modernizr.addTest("unicode",function(){var a,c=w("span"),d=b.createElement("span");return G("#modernizr{font-family:Arial,sans;font-size:300em;}",function(b){c.innerHTML="ᝣ",d.innerHTML="☆",b.appendChild(c),b.appendChild(d),a="offsetWidth"in c&&c.offsetWidth!==d.offsetWidth}),a}),Modernizr.addAsyncTest(function(){function a(){var a=new Image;a.onerror=function(){g("datauri",!0),Modernizr.datauri=new Boolean(!0),Modernizr.datauri.over32kb=!1},a.onload=function(){g("datauri",!0),Modernizr.datauri=new Boolean(!0),Modernizr.datauri.over32kb=1==a.width&&1==a.height};for(var b="R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";b.length<33e3;)b="\r\n"+b;a.src="data:image/gif;base64,"+b}-1!==navigator.userAgent.indexOf("MSIE 7.")&&setTimeout(function(){g("datauri",!1)},10);var b=new Image;b.onerror=function(){g("datauri",!1)},b.onload=function(){1==b.width&&1==b.height?a():g("datauri",!1)},b.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="}),Modernizr.addTest("userdata",!!w("div").addBehavior),Modernizr.addTest("vibrate",!!K("vibrate",navigator)),Modernizr.addTest("video",function(){var a=w("video"),b=!1;try{(b=!!a.canPlayType)&&(b=new Boolean(b),b.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),b.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),b.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""),b.vp9=a.canPlayType('video/webm; codecs="vp9"').replace(/^no$/,""))}catch(c){}return b}),Modernizr.addAsyncTest(function(){var a,b=300,c=w("video"),d=c.style,e=function(b){clearTimeout(a),c.removeEventListener("playing",e),g("videoautoplay",b||0!==c.currentTime),c.parentNode.removeChild(c)};if(!(Modernizr.video&&"autoplay"in c))return g("videoautoplay",!1),void 0;d.height=0,d.width=0;try{if(Modernizr.video.h264)c.src="data:video/mp4;base64,AAAAHGZ0eXBtcDQyAAAAAG1wNDJpc29tYXZjMQAAAz5tb292AAAAbG12aGQAAAAAzaNacc2jWnEAAV+QAAFfkAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAGGlvZHMAAAAAEICAgAcAT////3//AAACQ3RyYWsAAABcdGtoZAAAAAHNo1pxzaNacQAAAAEAAAAAAAFfkAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAEAAAABAAAAAAAd9tZGlhAAAAIG1kaGQAAAAAzaNacc2jWnEAAV+QAAFfkFXEAAAAAAAhaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAAAAAAGWbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABVnN0YmwAAACpc3RzZAAAAAAAAAABAAAAmWF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAEAAQAEgAAABIAAAAAAAAAAEOSlZUL0FWQyBDb2RpbmcAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwH0AAr/4QAZZ/QACq609NQYBBkAAAMAAQAAAwAKjxImoAEABWjOAa8gAAAAEmNvbHJuY2xjAAYAAQAGAAAAGHN0dHMAAAAAAAAAAQAAAAUAAEZQAAAAKHN0c3oAAAAAAAAAAAAAAAUAAAIqAAAACAAAAAgAAAAIAAAACAAAAChzdHNjAAAAAAAAAAIAAAABAAAABAAAAAEAAAACAAAAAQAAAAEAAAAYc3RjbwAAAAAAAAACAAADYgAABaQAAAAUc3RzcwAAAAAAAAABAAAAAQAAABFzZHRwAAAAAAREREREAAAAb3VkdGEAAABnbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcgAAAAAAAAAAAAAAAAAAAAA6aWxzdAAAADKpdG9vAAAAKmRhdGEAAAABAAAAAEhhbmRCcmFrZSAwLjkuOCAyMDEyMDcxODAwAAACUm1kYXQAAAHkBgX/4NxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxMjAgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDExIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9MSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjAgbWU9ZXNhIHN1Ym1lPTkgcHN5PTAgbWl4ZWRfcmVmPTAgbWVfcmFuZ2U9NCBjaHJvbWFfbWU9MSB0cmVsbGlzPTAgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0wIGNocm9tYV9xcF9vZmZzZXQ9MCB0aHJlYWRzPTYgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTUwIGtleWludF9taW49NSBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmM9Y3FwIG1idHJlZT0wIHFwPTAAgAAAAD5liISscR8A+E4ACAACFoAAITAAAgsAAPgYCoKgoC+L4vi+KAvi+L4YfAEAACMzgABF9AAEUGUgABDJiXnf4AAAAARBmiKUAAAABEGaQpQAAAAEQZpilAAAAARBmoKU";else{if(!Modernizr.video.ogg)return g("videoautoplay",!1),void 0;c.src="data:video/ogg;base64,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"}}catch(f){return g("videoautoplay",!1),void 0}c.setAttribute("autoplay",""),c.style="display:none",u.appendChild(c),setTimeout(function(){c.addEventListener("playing",function(){e(!0)}),a=setTimeout(e,b)},0)}),Modernizr.addTest("videoloop","loop"in w("video")),Modernizr.addTest("videopreload","preload"in w("video")),Modernizr.addTest("webintents",!!K("startActivity",navigator)),Modernizr.addTest("webanimations","Animation"in a),Modernizr.addTest("webgl","WebGLRenderingContext"in a),Modernizr.addAsyncTest(function(){if(Modernizr.webglextensions=new Boolean(!1),Modernizr.webgl){var a,b,d;try{a=w("canvas"),b=a.getContext("webgl")||a.getContext("experimental-webgl"),d=b.getSupportedExtensions()}catch(e){return}b!==c&&(Modernizr.webglextensions=new Boolean(!0));for(var f=-1,g=d.length;++f<g;)Modernizr.webglextensions[d[f]]=!0;a=c}}),Modernizr.addTest("getusermedia",!!K("getUserMedia",navigator)),Modernizr.addTest("peerconnection",!!K("RTCPeerConnection",a)),Modernizr.addTest("websocketsbinary",function(){var b,c="https:"==location.protocol?"wss":"ws";if("WebSocket"in a){if(b="binaryType"in WebSocket.prototype)return b;try{return!!new WebSocket(c+"://.").binaryType}catch(d){}}return!1}),Modernizr.addTest("websockets","WebSocket"in a&&2===a.WebSocket.CLOSING),Modernizr.addTest("framed",a.location!=top.location),Modernizr.addAsyncTest(function(){try{var a="Modernizr",b=new Worker("data:text/javascript;base64,dGhpcy5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cG9zdE1lc3NhZ2UoZS5kYXRhKX0=");b.onmessage=function(c){b.terminate(),g("dataworkers",a===c.data),b=null},b.onerror=function(){g("dataworkers",!1),b=null},setTimeout(function(){g("dataworkers",!1)},200),b.postMessage(a)}catch(c){setTimeout(function(){g("dataworkers",!1)},0)}}),Modernizr.addTest("sharedworkers","SharedWorker"in a),Modernizr.addTest("webworkers","Worker"in a),e(),f(t),delete r.addTest,delete r.addAsyncTest;for(var V=0;V<Modernizr._q.length;V++)Modernizr._q[V]();a.Modernizr=Modernizr}(this,document);
\ No newline at end of file |