http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/daterangepicker/moment.min.js
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/daterangepicker/moment.min.js
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/daterangepicker/moment.min.js
new file mode 100755
index 0000000..024d488
--- /dev/null
+++ 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/daterangepicker/moment.min.js
@@ -0,0 +1,7 @@
+//! moment.js
+//! version : 2.9.0
+//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
+//! license : MIT
+//! momentjs.com
+(function(a){function b(a,b,c){switch(arguments.length){case 2:return 
null!=a?a:b;case 3:return null!=a?a:null!=b?b:c;default:throw new 
Error("Implement me")}}function c(a,b){return Bb.call(a,b)}function 
d(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function
 e(a){vb.suppressDeprecationWarnings===!1&&"undefined"!=typeof 
console&&console.warn&&console.warn("Deprecation warning: "+a)}function 
f(a,b){var c=!0;return o(function(){return 
c&&(e(a),c=!1),b.apply(this,arguments)},b)}function 
g(a,b){sc[a]||(e(b),sc[a]=!0)}function h(a,b){return function(c){return 
r(a.call(this,c),b)}}function i(a,b){return function(c){return 
this.localeData().ordinal(a.call(this,c),b)}}function j(a,b){var 
c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return
 
0>b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)}function
 k
 (a,b,c){var d;return 
null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function
 l(){}function m(a,b){b!==!1&&H(a),p(this,a),this._d=new 
Date(+a._d),uc===!1&&(uc=!0,vb.updateOffset(this),uc=!1)}function n(a){var 
b=A(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=vb.localeData(),this._bubble()}function
 o(a,b){for(var d in b)c(b,d)&&(a[d]=b[d]);return 
c(b,"toString")&&(a.toString=b.toString),c(b,"valueOf")&&(a.valueOf=b.valueOf),a}function
 p(a,b){var c,d,e;if("undefined"!=typeof 
b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof 
b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof 
b._l&&(a._l=b._l),"undefined"!=typeof 
b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tz
 m=b._tzm),"undefined"!=typeof 
b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof 
b._offset&&(a._offset=b._offset),"undefined"!=typeof 
b._pf&&(a._pf=b._pf),"undefined"!=typeof 
b._locale&&(a._locale=b._locale),Kb.length>0)for(c in 
Kb)d=Kb[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function q(a){return 
0>a?Math.ceil(a):Math.floor(a)}function r(a,b,c){for(var 
d=""+Math.abs(a),e=a>=0;d.length<b;)d="0"+d;return(e?c?"+":"":"-")+d}function 
s(a,b){var c={milliseconds:0,months:0};return 
c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function
 t(a,b){var c;return 
b=M(b,a),a.isBefore(b)?c=s(a,b):(c=s(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function
 u(a,b){return function(c,d){var e,f;return 
null===d||isNaN(+d)||(g(b,"moment()."+b+"(period, number) is deprecated. Please 
use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof 
c?+c:c,e=vb.duration(c,d),v(th
 is,e,a),this}}function v(a,b,c,d){var 
e=b._milliseconds,f=b._days,g=b._months;d=null==d?!0:d,e&&a._d.setTime(+a._d+e*c),f&&pb(a,"Date",ob(a,"Date")+f*c),g&&nb(a,ob(a,"Month")+g*c),d&&vb.updateOffset(a,f||g)}function
 w(a){return"[object Array]"===Object.prototype.toString.call(a)}function 
x(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof 
Date}function y(a,b,c){var 
d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&C(a[d])!==C(b[d]))&&g++;return
 g+f}function z(a){if(a){var 
b=a.toLowerCase().replace(/(.)s$/,"$1");a=lc[a]||mc[b]||b}return a}function 
A(a){var b,d,e={};for(d in a)c(a,d)&&(b=z(d),b&&(e[b]=a[d]));return e}function 
B(b){var 
c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}vb[b]=function(e,f){var
 g,h,i=vb._locale[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var 
b=vb().utc().set(d,a);return i.call(vb._locale,b,e||"")},null!=f)return 
h(f);for(g=0
 ;c>g;g++)j.push(h(g));return j}}function C(a){var b=+a,c=0;return 
0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function 
D(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function E(a,b,c){return 
jb(vb([a,11,31+b-c]),b,c).week}function F(a){return G(a)?366:365}function 
G(a){return a%4===0&&a%100!==0||a%400===0}function H(a){var 
b;a._a&&-2===a._pf.overflow&&(b=a._a[Db]<0||a._a[Db]>11?Db:a._a[Eb]<1||a._a[Eb]>D(a._a[Cb],a._a[Db])?Eb:a._a[Fb]<0||a._a[Fb]>24||24===a._a[Fb]&&(0!==a._a[Gb]||0!==a._a[Hb]||0!==a._a[Ib])?Fb:a._a[Gb]<0||a._a[Gb]>59?Gb:a._a[Hb]<0||a._a[Hb]>59?Hb:a._a[Ib]<0||a._a[Ib]>999?Ib:-1,a._pf._overflowDayOfYear&&(Cb>b||b>Eb)&&(b=Eb),a._pf.overflow=b)}function
 I(b){return 
null==b._isValid&&(b._isValid=!isNaN(b._d.getTime())&&b._pf.overflow<0&&!b._pf.empty&&!b._pf.invalidMonth&&!b._pf.nullInput&&!b._pf.invalidFormat&&!b._pf.userInvalidated,b._strict&&(b._isValid=b._isValid&&0===b._pf.charsLeftOver&&0===b._pf.unusedTokens.length&&b._pf.bigHour===a)),b._isVal
 id}function J(a){return a?a.toLowerCase().replace("_","-"):a}function 
K(a){for(var 
b,c,d,e,f=0;f<a.length;){for(e=J(a[f]).split("-"),b=e.length,c=J(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=L(e.slice(0,b).join("-")))return
 d;if(c&&c.length>=b&&y(e,c,!0)>=b-1)break;b--}f++}return null}function 
L(a){var 
b=null;if(!Jb[a]&&Lb)try{b=vb.locale(),require("./locale/"+a),vb.locale(b)}catch(c){}return
 Jb[a]}function M(a,b){var c,d;return 
b._isUTC?(c=b.clone(),d=(vb.isMoment(a)||x(a)?+a:+vb(a))-+c,c._d.setTime(+c._d+d),vb.updateOffset(c,!1),c):vb(a).local()}function
 N(a){return 
a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function 
O(a){var 
b,c,d=a.match(Pb);for(b=0,c=d.length;c>b;b++)d[b]=rc[d[b]]?rc[d[b]]:N(d[b]);return
 function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof 
Function?d[b].call(e,a):d[b];return f}}function P(a,b){return 
a.isValid()?(b=Q(b,a.localeData()),nc[b]||(nc[b]=O(b)),nc[b](a)):a.localeData().invalidDate()}function
 Q(a,b){function c(a){return b.longDate
 Format(a)||a}var 
d=5;for(Qb.lastIndex=0;d>=0&&Qb.test(a);)a=a.replace(Qb,c),Qb.lastIndex=0,d-=1;return
 a}function R(a,b){var c,d=b._strict;switch(a){case"Q":return 
_b;case"DDDD":return bc;case"YYYY":case"GGGG":case"gggg":return 
d?cc:Tb;case"Y":case"G":case"g":return 
ec;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return 
d?dc:Ub;case"S":if(d)return _b;case"SS":if(d)return ac;case"SSS":if(d)return 
bc;case"DDD":return 
Sb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return 
Wb;case"a":case"A":return b._locale._meridiemParse;case"x":return 
Zb;case"X":return $b;case"Z":case"ZZ":return Xb;case"T":return 
Yb;case"SSSS":return 
Vb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return
 
d?ac:Rb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return
 Rb;case"Do":return 
d?b._locale._ordinalParse:b._locale._ordinalParseLenient;default:return c=new 
RegExp($(Z(a.replace("\\","")),"i"))}}function S(a){a=
 a||"";var 
b=a.match(Xb)||[],c=b[b.length-1]||[],d=(c+"").match(jc)||["-",0,0],e=+(60*d[1])+C(d[2]);return"+"===d[0]?e:-e}function
 T(a,b,c){var 
d,e=c._a;switch(a){case"Q":null!=b&&(e[Db]=3*(C(b)-1));break;case"M":case"MM":null!=b&&(e[Db]=C(b)-1);break;case"MMM":case"MMMM":d=c._locale.monthsParse(b,a,c._strict),null!=d?e[Db]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[Eb]=C(b));break;case"Do":null!=b&&(e[Eb]=C(parseInt(b.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=C(b));break;case"YY":e[Cb]=vb.parseTwoDigitYear(b);break;case"YYYY":case"YYYYY":case"YYYYYY":e[Cb]=C(b);break;case"a":case"A":c._meridiem=b;break;case"h":case"hh":c._pf.bigHour=!0;case"H":case"HH":e[Fb]=C(b);break;case"m":case"mm":e[Gb]=C(b);break;case"s":case"ss":e[Hb]=C(b);break;case"S":case"SS":case"SSS":case"SSSS":e[Ib]=C(1e3*("0."+b));break;case"x":c._d=new
 Date(C(b));break;case"X":c._d=new 
Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=S(b);break;case"dd
 
":case"ddd":case"dddd":d=c._locale.weekdaysParse(b),null!=d?(c._w=c._w||{},c._w.d=d):c._pf.invalidWeekday=b;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":a=a.substr(0,1);case"gggg":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=C(b));break;case"gg":case"GG":c._w=c._w||{},c._w[a]=vb.parseTwoDigitYear(b)}}function
 U(a){var 
c,d,e,f,g,h,i;c=a._w,null!=c.GG||null!=c.W||null!=c.E?(g=1,h=4,d=b(c.GG,a._a[Cb],jb(vb(),1,4).year),e=b(c.W,1),f=b(c.E,1)):(g=a._locale._week.dow,h=a._locale._week.doy,d=b(c.gg,a._a[Cb],jb(vb(),g,h).year),e=b(c.w,1),null!=c.d?(f=c.d,g>f&&++e):f=null!=c.e?c.e+g:g),i=kb(d,e,f,h,g),a._a[Cb]=i.year,a._dayOfYear=i.dayOfYear}function
 V(a){var 
c,d,e,f,g=[];if(!a._d){for(e=X(a),a._w&&null==a._a[Eb]&&null==a._a[Db]&&U(a),a._dayOfYear&&(f=b(a._a[Cb],e[Cb]),a._dayOfYear>F(f)&&(a._pf._overflowDayOfYear=!0),d=fb(f,0,a._dayOfYear),a._a[Db]=d.getUTCMonth(),a._a[Eb]=d.getUTCDate()),c=0;3>c&&null==a._a[c];++c)a._a[c]=g[c]=e[c];for(;7>c;c++)a._a[c]
 
=g[c]=null==a._a[c]?2===c?1:0:a._a[c];24===a._a[Fb]&&0===a._a[Gb]&&0===a._a[Hb]&&0===a._a[Ib]&&(a._nextDay=!0,a._a[Fb]=0),a._d=(a._useUTC?fb:eb).apply(null,g),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[Fb]=24)}}function
 W(a){var 
b;a._d||(b=A(a._i),a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],V(a))}function
 X(a){var b=new Date;return 
a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function
 Y(b){if(b._f===vb.ISO_8601)return void ab(b);b._a=[],b._pf.empty=!0;var 
c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=Q(b._f,b._locale).match(Pb)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(R(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&b._pf.unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),rc[f]?(d?b._pf.empty=!1:b._pf.unusedTokens.push(f),T(f,d,b)):b._strict&&!d&&b._pf.unusedTokens.push(f);b._pf.charsLeftOver=i-j,h.length>0&&b._pf.unusedInput.push(h),b._
 
pf.bigHour===!0&&b._a[Fb]<=12&&(b._pf.bigHour=a),b._a[Fb]=k(b._locale,b._a[Fb],b._meridiem),V(b),H(b)}function
 Z(a){return 
a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return 
b||c||d||e})}function $(a){return 
a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function _(a){var 
b,c,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,void(a._d=new 
Date(0/0));for(f=0;f<a._f.length;f++)g=0,b=p({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._pf=d(),b._f=a._f[f],Y(b),I(b)&&(g+=b._pf.charsLeftOver,g+=10*b._pf.unusedTokens.length,b._pf.score=g,(null==e||e>g)&&(e=g,c=b));o(a,c||b)}function
 ab(a){var 
b,c,d=a._i,e=fc.exec(d);if(e){for(a._pf.iso=!0,b=0,c=hc.length;c>b;b++)if(hc[b][1].exec(d)){a._f=hc[b][0]+(e[6]||"
 
");break}for(b=0,c=ic.length;c>b;b++)if(ic[b][1].exec(d)){a._f+=ic[b][0];break}d.match(Xb)&&(a._f+="Z"),Y(a)}else
 a._isValid=!1}function bb(a){ab(a),a._isValid===!1&&(delete 
a._isValid,vb.createFromInputFallback(a))}function cb(a,b){var 
c,d=[];for(c=0;c<a.length;++c
 )d.push(b(a[c],c));return d}function db(b){var c,d=b._i;d===a?b._d=new 
Date:x(d)?b._d=new Date(+d):null!==(c=Mb.exec(d))?b._d=new 
Date(+c[1]):"string"==typeof 
d?bb(b):w(d)?(b._a=cb(d.slice(0),function(a){return 
parseInt(a,10)}),V(b)):"object"==typeof d?W(b):"number"==typeof d?b._d=new 
Date(d):vb.createFromInputFallback(b)}function eb(a,b,c,d,e,f,g){var h=new 
Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function fb(a){var b=new 
Date(Date.UTC.apply(null,arguments));return 
1970>a&&b.setUTCFullYear(a),b}function gb(a,b){if("string"==typeof 
a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else 
a=parseInt(a,10);return a}function hb(a,b,c,d,e){return 
e.relativeTime(b||1,!!c,a,d)}function ib(a,b,c){var 
d=vb.duration(a).abs(),e=Ab(d.as("s")),f=Ab(d.as("m")),g=Ab(d.as("h")),h=Ab(d.as("d")),i=Ab(d.as("M")),j=Ab(d.as("y")),k=e<oc.s&&["s",e]||1===f&&["m"]||f<oc.m&&["mm",f]||1===g&&["h"]||g<oc.h&&["hh",g]||1===h&&["d"]||h<oc.d&&["dd",h]||1===i&&["M"]||i<oc.M&&["MM",i
 ]||1===j&&["y"]||["yy",j];return 
k[2]=b,k[3]=+a>0,k[4]=c,hb.apply({},k)}function jb(a,b,c){var 
d,e=c-b,f=c-a.day();return 
f>e&&(f-=7),e-7>f&&(f+=7),d=vb(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function
 kb(a,b,c,d,e){var f,g,h=fb(a,0,1).getUTCDay();return 
h=0===h?7:h,c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:F(a-1)+g}}function
 lb(b){var c,d=b._i,e=b._f;return 
b._locale=b._locale||vb.localeData(b._l),null===d||e===a&&""===d?vb.invalid({nullInput:!0}):("string"==typeof
 d&&(b._i=d=b._locale.preparse(d)),vb.isMoment(d)?new 
m(d,!0):(e?w(e)?_(b):Y(b):db(b),c=new 
m(b),c._nextDay&&(c.add(1,"d"),c._nextDay=a),c))}function mb(a,b){var 
c,d;if(1===b.length&&w(b[0])&&(b=b[0]),!b.length)return 
vb();for(c=b[0],d=1;d<b.length;++d)b[d][a](c)&&(c=b[d]);return c}function 
nb(a,b){var c;return"string"==typeof 
b&&(b=a.localeData().monthsParse(b),"number"!=typeof 
b)?a:(c=Math.min(a.date(),D(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"
 Month"](b,c),a)}function ob(a,b){return 
a._d["get"+(a._isUTC?"UTC":"")+b]()}function 
pb(a,b,c){return"Month"===b?nb(a,c):a._d["set"+(a._isUTC?"UTC":"")+b](c)}function
 qb(a,b){return function(c){return 
null!=c?(pb(this,a,c),vb.updateOffset(this,b),this):ob(this,a)}}function 
rb(a){return 400*a/146097}function sb(a){return 146097*a/400}function 
tb(a){vb.duration.fn[a]=function(){return this._data[a]}}function 
ub(a){"undefined"==typeof ender&&(wb=zb.moment,zb.moment=a?f("Accessing Moment 
through the global scope is deprecated, and will be removed in an upcoming 
release.",vb):vb)}for(var vb,wb,xb,yb="2.9.0",zb="undefined"==typeof 
global||"undefined"!=typeof 
window&&window!==global.window?this:global,Ab=Math.round,Bb=Object.prototype.hasOwnProperty,Cb=0,Db=1,Eb=2,Fb=3,Gb=4,Hb=5,Ib=6,Jb={},Kb=[],Lb="undefined"!=typeof
 
module&&module&&module.exports,Mb=/^\/?Date\((\-?\d+)/i,Nb=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Ob=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)
 
?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,Pb=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,Qb=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Rb=/\d\d?/,Sb=/\d{1,3}/,Tb=/\d{1,4}/,Ub=/[+\-]?\d{1,6}/,Vb=/\d+/,Wb=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Xb=/Z|[\+\-]\d\d:?\d\d/gi,Yb=/T/i,Zb=/[\+\-]?\d+/,$b=/[\+\-]?\d+(\.\d{1,3})?/,_b=/\d/,ac=/\d\d/,bc=/\d{3}/,cc=/\d{4}/,dc=/[+-]?\d{6}/,ec=/[+-]?\d+/,fc=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T|
 
)(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,gc="YYYY-MM-DDTHH:mm:ssZ",hc=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],ic=[["HH:mm:ss.SSSS",/(T|
 )\d\d:\d\d:
 \d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| 
)\d\d:\d\d/],["HH",/(T| 
)\d\d/]],jc=/([\+\-]|\d\d)/gi,kc=("Date|Hours|Minutes|Seconds|Milliseconds".split("|"),{Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6}),lc={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",Q:"quarter",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},mc={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},nc={},oc={s:45,m:45,h:22,d:26,M:11},pc="DDD
 w W M D d".split(" "),qc="M D H h m s w W".split(" "),rc={M:function(){return 
this.month()+1},MMM:function(a){return 
this.localeData().monthsShort(this,a)},MMMM:function(a){return 
this.localeData().months(this,a)},D:function(){return 
this.date()},DDD:function(){return this.dayOfYear()},d:function(){return 
this.day()},dd:function(a){return this.localeData().weekdaysMin(this,a)
 },ddd:function(a){return 
this.localeData().weekdaysShort(this,a)},dddd:function(a){return 
this.localeData().weekdays(this,a)},w:function(){return 
this.week()},W:function(){return this.isoWeek()},YY:function(){return 
r(this.year()%100,2)},YYYY:function(){return 
r(this.year(),4)},YYYYY:function(){return 
r(this.year(),5)},YYYYYY:function(){var a=this.year(),b=a>=0?"+":"-";return 
b+r(Math.abs(a),6)},gg:function(){return 
r(this.weekYear()%100,2)},gggg:function(){return 
r(this.weekYear(),4)},ggggg:function(){return 
r(this.weekYear(),5)},GG:function(){return 
r(this.isoWeekYear()%100,2)},GGGG:function(){return 
r(this.isoWeekYear(),4)},GGGGG:function(){return 
r(this.isoWeekYear(),5)},e:function(){return 
this.weekday()},E:function(){return this.isoWeekday()},a:function(){return 
this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return 
this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return 
this.hours()},h:function(){return this.hours()%12||12},m:f
 unction(){return this.minutes()},s:function(){return 
this.seconds()},S:function(){return 
C(this.milliseconds()/100)},SS:function(){return 
r(C(this.milliseconds()/10),2)},SSS:function(){return 
r(this.milliseconds(),3)},SSSS:function(){return 
r(this.milliseconds(),3)},Z:function(){var a=this.utcOffset(),b="+";return 
0>a&&(a=-a,b="-"),b+r(C(a/60),2)+":"+r(C(a)%60,2)},ZZ:function(){var 
a=this.utcOffset(),b="+";return 
0>a&&(a=-a,b="-"),b+r(C(a/60),2)+r(C(a)%60,2)},z:function(){return 
this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return 
this.valueOf()},X:function(){return this.unix()},Q:function(){return 
this.quarter()}},sc={},tc=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],uc=!1;pc.length;)xb=pc.pop(),rc[xb+"o"]=i(rc[xb],xb);for(;qc.length;)xb=qc.pop(),rc[xb+xb]=h(rc[xb],2);rc.DDDD=h(rc.DDD,3),o(l.prototype,{set:function(a){var
 b,c;for(c in a)b=a[c],"function"==typeof 
b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalPa
 
rse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return
 
this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return
 this._monthsShort[a.month()]},monthsParse:function(a,b,c){var 
d,e,f;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=vb.utc([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new
 
RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new
 
RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new
 
RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return
 d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return 
d;if(!c&&this._monthsParse[d].test(a))return d}
 
},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return
 
this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return
 
this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return
 this._weekdaysMin[a.day()]},weekdaysParse:function(a){var 
b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=vb([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new
 RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return 
b},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, 
YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY 
LT"},longDateFormat:function(a){var 
b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,fun
 ction(a){return 
a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return
 a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] 
LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] 
LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b,c){var 
d=this._calendar[a];return"function"==typeof 
d?d.apply(b,[c]):d},_relativeTime:{future:"in %s",past:"%s ago",s:"a few 
seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a 
day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d 
years"},relativeTime:function(a,b,c,d){var 
e=this._relativeTime[c];return"function"==typeof 
e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var 
c=this._relativeTime[a>0?"future":"past"];return"function"==typeof 
c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return 
this._ordinal.replace("%d",a)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,pr
 eparse:function(a){return a},postformat:function(a){return 
a},week:function(a){return 
jb(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return
 this._week.dow},firstDayOfYear:function(){return 
this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return 
this._invalidDate}}),vb=function(b,c,e,f){var g;return"boolean"==typeof 
e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=b,g._f=c,g._l=e,g._strict=f,g._isUTC=!1,g._pf=d(),lb(g)},vb.suppressDeprecationWarnings=!1,vb.createFromInputFallback=f("moment
 construction falls back to js Date. This is discouraged and will be removed in 
upcoming major release. Please refer to 
https://github.com/moment/moment/issues/1407 for more 
info.",function(a){a._d=new Date(a._i+(a._useUTC?" 
UTC":""))}),vb.min=function(){var a=[].slice.call(arguments,0);return 
mb("isBefore",a)},vb.max=function(){var a=[].slice.call(arguments,0);return 
mb("isAfter",a)},vb.utc=function(b,c,e,f){var g;return"boolean"==typeof e&&(f=
 
e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=b,g._f=c,g._strict=f,g._pf=d(),lb(g).utc()},vb.unix=function(a){return
 vb(1e3*a)},vb.duration=function(a,b){var d,e,f,g,h=a,i=null;return 
vb.isDuration(a)?h={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof 
a?(h={},b?h[b]=a:h.milliseconds=a):(i=Nb.exec(a))?(d="-"===i[1]?-1:1,h={y:0,d:C(i[Eb])*d,h:C(i[Fb])*d,m:C(i[Gb])*d,s:C(i[Hb])*d,ms:C(i[Ib])*d}):(i=Ob.exec(a))?(d="-"===i[1]?-1:1,f=function(a){var
 
b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*d},h={y:f(i[2]),M:f(i[3]),d:f(i[4]),h:f(i[5]),m:f(i[6]),s:f(i[7]),w:f(i[8])}):null==h?h={}:"object"==typeof
 h&&("from"in h||"to"in 
h)&&(g=t(vb(h.from),vb(h.to)),h={},h.ms=g.milliseconds,h.M=g.months),e=new 
n(h),vb.isDuration(a)&&c(a,"_locale")&&(e._locale=a._locale),e},vb.version=yb,vb.defaultFormat=gc,vb.ISO_8601=function(){},vb.momentProperties=Kb,vb.updateOffset=function(){},vb.relativeTimeThreshold=function(b,c){return
 oc[b]===a?!1:c===a?oc[b]:(oc[
 b]=c,!0)},vb.lang=f("moment.lang is deprecated. Use moment.locale 
instead.",function(a,b){return vb.locale(a,b)}),vb.locale=function(a,b){var 
c;return a&&(c="undefined"!=typeof 
b?vb.defineLocale(a,b):vb.localeData(a),c&&(vb.duration._locale=vb._locale=c)),vb._locale._abbr},vb.defineLocale=function(a,b){return
 null!==b?(b.abbr=a,Jb[a]||(Jb[a]=new 
l),Jb[a].set(b),vb.locale(a),Jb[a]):(delete 
Jb[a],null)},vb.langData=f("moment.langData is deprecated. Use 
moment.localeData instead.",function(a){return 
vb.localeData(a)}),vb.localeData=function(a){var 
b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return 
vb._locale;if(!w(a)){if(b=L(a))return b;a=[a]}return 
K(a)},vb.isMoment=function(a){return a instanceof 
m||null!=a&&c(a,"_isAMomentObject")},vb.isDuration=function(a){return a 
instanceof 
n};for(xb=tc.length-1;xb>=0;--xb)B(tc[xb]);vb.normalizeUnits=function(a){return 
z(a)},vb.invalid=function(a){var b=vb.utc(0/0);return 
null!=a?o(b._pf,a):b._pf.userInvalidated=!0,b},vb.parseZone=
 function(){return 
vb.apply(null,arguments).parseZone()},vb.parseTwoDigitYear=function(a){return 
C(a)+(C(a)>68?1900:2e3)},vb.isDate=x,o(vb.fn=m.prototype,{clone:function(){return
 
vb(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return
 Math.floor(+this/1e3)},toString:function(){return 
this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss 
[GMT]ZZ")},toDate:function(){return this._offset?new 
Date(+this):this._d},toISOString:function(){var a=vb(this).utc();return 
0<a.year()&&a.year()<=9999?"function"==typeof 
Date.prototype.toISOString?this.toDate().toISOString():P(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):P(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var
 
a=this;return[a.year(),a.month(),a.date(),a.hours(),a.minutes(),a.seconds(),a.milliseconds()]},isValid:function(){return
 I(this)},isDSTShifted:function(){return 
this._a?this.isValid()&&y(this._a,(this._isUTC?vb.utc(this._a):vb(this._a)).toArray())>0:!1},parsingFlags:function(){return
 o({},this._
 pf)},invalidAt:function(){return this._pf.overflow},utc:function(a){return 
this.utcOffset(0,a)},local:function(a){return 
this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(a){var
 b=P(this,a||vb.defaultFormat);return 
this.localeData().postformat(b)},add:u(1,"add"),subtract:u(-1,"subtract"),diff:function(a,b,c){var
 d,e,f=M(a,this),g=6e4*(f.utcOffset()-this.utcOffset());return 
b=z(b),"year"===b||"month"===b||"quarter"===b?(e=j(this,f),"quarter"===b?e/=3:"year"===b&&(e/=12)):(d=this-f,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-g)/864e5:"week"===b?(d-g)/6048e5:d),c?e:q(e)},from:function(a,b){return
 
vb.duration({to:this,from:a}).locale(this.locale()).humanize(!b)},fromNow:function(a){return
 this.from(vb(),a)},calendar:function(a){var 
b=a||vb(),c=M(b,this).startOf("day"),d=this.diff(c,"days",!0),e=-6>d?"sameElse":-1>d?"lastWeek":0>d?"lastDay":1>d?"sameDay":2>d?"nextDay":7>d?"nextWeek":"sameElse";re
 turn 
this.format(this.localeData().calendar(e,this,vb(b)))},isLeapYear:function(){return
 G(this.year())},isDST:function(){return 
this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(a){var
 b=this._isUTC?this._d.getUTCDay():this._d.getDay();return 
null!=a?(a=gb(a,this.localeData()),this.add(a-b,"d")):b},month:qb("Month",!0),startOf:function(a){switch(a=z(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a?this.weekday(0):"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(b){return
 
b=z(b),b===a||"millisecond"===b?this:this.startOf(b).add(1,"isoWeek"===b?"week":b).subtract(1,"ms")},isAfter:function(a,b){var
 c;return b=z("undefined"!=typeof 
b?b:"millisecond"),"millisecond"===b?(a=vb.isMoment(a)?a
 
:vb(a),+this>+a):(c=vb.isMoment(a)?+a:+vb(a),c<+this.clone().startOf(b))},isBefore:function(a,b){var
 c;return b=z("undefined"!=typeof 
b?b:"millisecond"),"millisecond"===b?(a=vb.isMoment(a)?a:vb(a),+a>+this):(c=vb.isMoment(a)?+a:+vb(a),+this.clone().endOf(b)<c)},isBetween:function(a,b,c){return
 this.isAfter(a,c)&&this.isBefore(b,c)},isSame:function(a,b){var c;return 
b=z(b||"millisecond"),"millisecond"===b?(a=vb.isMoment(a)?a:vb(a),+this===+a):(c=+vb(a),+this.clone().startOf(b)<=c&&c<=+this.clone().endOf(b))},min:f("moment().min
 is deprecated, use moment.min instead. 
https://github.com/moment/moment/issues/1548",function(a){return 
a=vb.apply(null,arguments),this>a?this:a}),max:f("moment().max is deprecated, 
use moment.max instead. 
https://github.com/moment/moment/issues/1548",function(a){return 
a=vb.apply(null,arguments),a>this?this:a}),zone:f("moment().zone is deprecated, 
use moment().utcOffset instead. 
https://github.com/moment/moment/issues/1779",function(a,b){return 
null!=a?("stri
 ng"!=typeof 
a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}),utcOffset:function(a,b){var
 c,d=this._offset||0;return null!=a?("string"==typeof 
a&&(a=S(a)),Math.abs(a)<16&&(a=60*a),!this._isUTC&&b&&(c=this._dateUtcOffset()),this._offset=a,this._isUTC=!0,null!=c&&this.add(c,"m"),d!==a&&(!b||this._changeInProgress?v(this,vb.duration(a-d,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,vb.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?d:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return
 this._isUTC},isUtc:function(){return 
this._isUTC&&0===this._offset},zoneAbbr:function(){return 
this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated 
Universal Time":""},parseZone:function(){return 
this._tzm?this.utcOffset(this._tzm):"string"==typeof 
this._i&&this.utcOffset(S(this._i)),this},hasAlignedHourOffset:function(a){return
 a=a?vb(a).utcOffset():0,(this.utcOffset()-a)%60===0},daysInMonth:function(
 ){return D(this.year(),this.month())},dayOfYear:function(a){var 
b=Ab((vb(this).startOf("day")-vb(this).startOf("year"))/864e5)+1;return 
null==a?b:this.add(a-b,"d")},quarter:function(a){return 
null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)},weekYear:function(a){var
 b=jb(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return 
null==a?b:this.add(a-b,"y")},isoWeekYear:function(a){var 
b=jb(this,1,4).year;return null==a?b:this.add(a-b,"y")},week:function(a){var 
b=this.localeData().week(this);return 
null==a?b:this.add(7*(a-b),"d")},isoWeek:function(a){var 
b=jb(this,1,4).week;return 
null==a?b:this.add(7*(a-b),"d")},weekday:function(a){var 
b=(this.day()+7-this.localeData()._week.dow)%7;return 
null==a?b:this.add(a-b,"d")},isoWeekday:function(a){return 
null==a?this.day()||7:this.day(this.day()%7?a:a-7)},isoWeeksInYear:function(){return
 E(this.year(),1,4)},weeksInYear:function(){var 
a=this.localeData()._week;return E(this.year(),a.dow,a.doy)},get:func
 tion(a){return a=z(a),this[a]()},set:function(a,b){var c;if("object"==typeof 
a)for(c in a)this.set(c,a[c]);else a=z(a),"function"==typeof 
this[a]&&this[a](b);return this},locale:function(b){var c;return 
b===a?this._locale._abbr:(c=vb.localeData(b),null!=c&&(this._locale=c),this)},lang:f("moment().lang()
 is deprecated. Instead, use moment().localeData() to get the language 
configuration. Use moment().locale() to change languages.",function(b){return 
b===a?this.localeData():this.locale(b)}),localeData:function(){return 
this._locale},_dateUtcOffset:function(){return 
15*-Math.round(this._d.getTimezoneOffset()/15)}}),vb.fn.millisecond=vb.fn.milliseconds=qb("Milliseconds",!1),vb.fn.second=vb.fn.seconds=qb("Seconds",!1),vb.fn.minute=vb.fn.minutes=qb("Minutes",!1),vb.fn.hour=vb.fn.hours=qb("Hours",!0),vb.fn.date=qb("Date",!0),vb.fn.dates=f("dates
 accessor is deprecated. Use date 
instead.",qb("Date",!0)),vb.fn.year=qb("FullYear",!0),vb.fn.years=f("years 
accessor is deprecated. Use year inste
 
ad.",qb("FullYear",!0)),vb.fn.days=vb.fn.day,vb.fn.months=vb.fn.month,vb.fn.weeks=vb.fn.week,vb.fn.isoWeeks=vb.fn.isoWeek,vb.fn.quarters=vb.fn.quarter,vb.fn.toJSON=vb.fn.toISOString,vb.fn.isUTC=vb.fn.isUtc,o(vb.duration.fn=n.prototype,{_bubble:function(){var
 
a,b,c,d=this._milliseconds,e=this._days,f=this._months,g=this._data,h=0;g.milliseconds=d%1e3,a=q(d/1e3),g.seconds=a%60,b=q(a/60),g.minutes=b%60,c=q(b/60),g.hours=c%24,e+=q(c/24),h=q(rb(e)),e-=q(sb(h)),f+=q(e/30),e%=30,h+=q(f/12),f%=12,g.days=e,g.months=f,g.years=h},abs:function(){return
 
this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return
 q(this.days()/7)
 },valueOf:function(){return 
this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*C(this._months/12)
+},humanize:function(a){var b=ib(this,!a,this.localeData());return 
a&&(b=this.localeData().pastFuture(+this,b)),this.localeData().postformat(b)},add:function(a,b){var
 c=vb.duration(a,b);return 
this._milliseconds+=c._milliseconds,this._days+=c._days,this._months+=c._months,this._bubble(),this},subtract:function(a,b){var
 c=vb.duration(a,b);return 
this._milliseconds-=c._milliseconds,this._days-=c._days,this._months-=c._months,this._bubble(),this},get:function(a){return
 a=z(a),this[a.toLowerCase()+"s"]()},as:function(a){var 
b,c;if(a=z(a),"month"===a||"year"===a)return 
b=this._days+this._milliseconds/864e5,c=this._months+12*rb(b),"month"===a?c:c/12;switch(b=this._days+Math.round(sb(this._months/12)),a){case"week":return
 b/7+this._milliseconds/6048e5;case"day":return 
b+this._milliseconds/864e5;case"hour":return 
24*b+this._milliseconds/36e5;case"minute":return 
24*b*60+this._milliseconds/6e4;case"second":return 
24*b*60*60+this._milliseconds/1e3;case"millisecond":return 
Math.floor(24*b*60*60*
 1e3)+this._milliseconds;default:throw new Error("Unknown unit 
"+a)}},lang:vb.fn.lang,locale:vb.fn.locale,toIsoString:f("toIsoString() is 
deprecated. Please use toISOString() instead (notice the 
capitals)",function(){return this.toISOString()}),toISOString:function(){var 
a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),f=Math.abs(this.seconds()+this.milliseconds()/1e3);return
 
this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"},localeData:function(){return
 this._locale},toJSON:function(){return 
this.toISOString()}}),vb.duration.fn.toString=vb.duration.fn.toISOString;for(xb 
in 
kc)c(kc,xb)&&tb(xb.toLowerCase());vb.duration.fn.asMilliseconds=function(){return
 this.as("ms")},vb.duration.fn.asSeconds=function(){return 
this.as("s")},vb.duration.fn.asMinutes=function(){return 
this.as("m")},vb.duration.fn.asHours=funct
 ion(){return this.as("h")},vb.duration.fn.asDays=function(){return 
this.as("d")},vb.duration.fn.asWeeks=function(){return 
this.as("weeks")},vb.duration.fn.asMonths=function(){return 
this.as("M")},vb.duration.fn.asYears=function(){return 
this.as("y")},vb.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var
 b=a%10,c=1===C(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return 
a+c}}),Lb?module.exports=vb:"function"==typeof 
define&&define.amd?(define(function(a,b,c){return 
c.config&&c.config()&&c.config().noGlobal===!0&&(zb.moment=wb),vb}),ub(!0)):ub()}).call(this);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.colorhelpers.min.js
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.colorhelpers.min.js
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.colorhelpers.min.js
new file mode 100644
index 0000000..7f42659
--- /dev/null
+++ 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.colorhelpers.min.js
@@ -0,0 +1 @@
+(function($){$.color={};$.color.make=function(r,g,b,a){var 
o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var 
i=0;i<c.length;++i)o[c.charAt(i)]+=d;return 
o.normalize()};o.scale=function(c,f){for(var 
i=0;i<c.length;++i)o[c.charAt(i)]*=f;return 
o.normalize()};o.toString=function(){if(o.a>=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function
 clamp(min,value,max){return 
value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return
 o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return 
o.normalize()};$.color.extract=function(elem,css){var 
c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0,
 0, 0, 0)")c="transparent";return 
$.color.parse(c)};$.color.parse=function(str){var res,m=$.color.ma
 
ke;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return
 
m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return
 
m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return
 
m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return
 
m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return
 
m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(st
 r))return 
m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var
 name=$.trim(str).toLowerCase();if(name=="transparent")return 
m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return 
m(res[0],res[1],res[2])}};var 
lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0]
 
,pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.canvas.js
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.canvas.js
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.canvas.js
new file mode 100644
index 0000000..d94b961
--- /dev/null
+++ 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.canvas.js
@@ -0,0 +1,345 @@
+/* Flot plugin for drawing all elements of a plot on the canvas.
+
+Copyright (c) 2007-2013 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+Flot normally produces certain elements, like axis labels and the legend, using
+HTML elements. This permits greater interactivity and customization, and often
+looks better, due to cross-browser canvas text inconsistencies and limitations.
+
+It can also be desirable to render the plot entirely in canvas, particularly
+if the goal is to save it as an image, or if Flot is being used in a context
+where the HTML DOM does not exist, as is the case within Node.js. This plugin
+switches out Flot's standard drawing operations for canvas-only replacements.
+
+Currently the plugin supports only axis labels, but it will eventually allow
+every element of the plot to be rendered directly to canvas.
+
+The plugin supports these options:
+
+{
+    canvas: boolean
+}
+
+The "canvas" option controls whether full canvas drawing is enabled, making it
+possible to toggle on and off. This is useful when a plot uses HTML text in the
+browser, but needs to redraw with canvas text when exporting as an image.
+
+*/
+
+(function($) {
+
+       var options = {
+               canvas: true
+       };
+
+       var render, getTextInfo, addText;
+
+       // Cache the prototype hasOwnProperty for faster access
+
+       var hasOwnProperty = Object.prototype.hasOwnProperty;
+
+       function init(plot, classes) {
+
+               var Canvas = classes.Canvas;
+
+               // We only want to replace the functions once; the second time 
around
+               // we would just get our new function back.  This whole 
replacing of
+               // prototype functions is a disaster, and needs to be changed 
ASAP.
+
+               if (render == null) {
+                       getTextInfo = Canvas.prototype.getTextInfo,
+                       addText = Canvas.prototype.addText,
+                       render = Canvas.prototype.render;
+               }
+
+               // Finishes rendering the canvas, including overlaid text
+
+               Canvas.prototype.render = function() {
+
+                       if (!plot.getOptions().canvas) {
+                               return render.call(this);
+                       }
+
+                       var context = this.context,
+                               cache = this._textCache;
+
+                       // For each text layer, render elements marked as active
+
+                       context.save();
+                       context.textBaseline = "middle";
+
+                       for (var layerKey in cache) {
+                               if (hasOwnProperty.call(cache, layerKey)) {
+                                       var layerCache = cache[layerKey];
+                                       for (var styleKey in layerCache) {
+                                               if 
(hasOwnProperty.call(layerCache, styleKey)) {
+                                                       var styleCache = 
layerCache[styleKey],
+                                                               updateStyles = 
true;
+                                                       for (var key in 
styleCache) {
+                                                               if 
(hasOwnProperty.call(styleCache, key)) {
+
+                                                                       var 
info = styleCache[key],
+                                                                               
positions = info.positions,
+                                                                               
lines = info.lines;
+
+                                                                       // 
Since every element at this level of the cache have the
+                                                                       // same 
font and fill styles, we can just change them once
+                                                                       // 
using the values from the first element.
+
+                                                                       if 
(updateStyles) {
+                                                                               
context.fillStyle = info.font.color;
+                                                                               
context.font = info.font.definition;
+                                                                               
updateStyles = false;
+                                                                       }
+
+                                                                       for 
(var i = 0, position; position = positions[i]; i++) {
+                                                                               
if (position.active) {
+                                                                               
        for (var j = 0, line; line = position.lines[j]; j++) {
+                                                                               
                context.fillText(lines[j].text, line[0], line[1]);
+                                                                               
        }
+                                                                               
} else {
+                                                                               
        positions.splice(i--, 1);
+                                                                               
}
+                                                                       }
+
+                                                                       if 
(positions.length == 0) {
+                                                                               
delete styleCache[key];
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+
+                       context.restore();
+               };
+
+               // Creates (if necessary) and returns a text info object.
+               //
+               // When the canvas option is set, the object looks like this:
+               //
+               // {
+               //     width: Width of the text's bounding box.
+               //     height: Height of the text's bounding box.
+               //     positions: Array of positions at which this text is 
drawn.
+               //     lines: [{
+               //         height: Height of this line.
+               //         widths: Width of this line.
+               //         text: Text on this line.
+               //     }],
+               //     font: {
+               //         definition: Canvas font property string.
+               //         color: Color of the text.
+               //     },
+               // }
+               //
+               // The positions array contains objects that look like this:
+               //
+               // {
+               //     active: Flag indicating whether the text should be 
visible.
+               //     lines: Array of [x, y] coordinates at which to draw the 
line.
+               //     x: X coordinate at which to draw the text.
+               //     y: Y coordinate at which to draw the text.
+               // }
+
+               Canvas.prototype.getTextInfo = function(layer, text, font, 
angle, width) {
+
+                       if (!plot.getOptions().canvas) {
+                               return getTextInfo.call(this, layer, text, 
font, angle, width);
+                       }
+
+                       var textStyle, layerCache, styleCache, info;
+
+                       // Cast the value to a string, in case we were given a 
number
+
+                       text = "" + text;
+
+                       // If the font is a font-spec object, generate a CSS 
definition
+
+                       if (typeof font === "object") {
+                               textStyle = font.style + " " + font.variant + " 
" + font.weight + " " + font.size + "px " + font.family;
+                       } else {
+                               textStyle = font;
+                       }
+
+                       // Retrieve (or create) the cache for the text's layer 
and styles
+
+                       layerCache = this._textCache[layer];
+
+                       if (layerCache == null) {
+                               layerCache = this._textCache[layer] = {};
+                       }
+
+                       styleCache = layerCache[textStyle];
+
+                       if (styleCache == null) {
+                               styleCache = layerCache[textStyle] = {};
+                       }
+
+                       info = styleCache[text];
+
+                       if (info == null) {
+
+                               var context = this.context;
+
+                               // If the font was provided as CSS, create a 
div with those
+                               // classes and examine it to generate a canvas 
font spec.
+
+                               if (typeof font !== "object") {
+
+                                       var element = $("<div>&nbsp;</div>")
+                                               .css("position", "absolute")
+                                               .addClass(typeof font === 
"string" ? font : null)
+                                               
.appendTo(this.getTextLayer(layer));
+
+                                       font = {
+                                               lineHeight: element.height(),
+                                               style: 
element.css("font-style"),
+                                               variant: 
element.css("font-variant"),
+                                               weight: 
element.css("font-weight"),
+                                               family: 
element.css("font-family"),
+                                               color: element.css("color")
+                                       };
+
+                                       // Setting line-height to 1, without 
units, sets it equal
+                                       // to the font-size, even if the 
font-size is abstract,
+                                       // like 'smaller'.  This enables us to 
read the real size
+                                       // via the element's height, working 
around browsers that
+                                       // return the literal 'smaller' value.
+
+                                       font.size = element.css("line-height", 
1).height();
+
+                                       element.remove();
+                               }
+
+                               textStyle = font.style + " " + font.variant + " 
" + font.weight + " " + font.size + "px " + font.family;
+
+                               // Create a new info object, initializing the 
dimensions to
+                               // zero so we can count them up line-by-line.
+
+                               info = styleCache[text] = {
+                                       width: 0,
+                                       height: 0,
+                                       positions: [],
+                                       lines: [],
+                                       font: {
+                                               definition: textStyle,
+                                               color: font.color
+                                       }
+                               };
+
+                               context.save();
+                               context.font = textStyle;
+
+                               // Canvas can't handle multi-line strings; 
break on various
+                               // newlines, including HTML brs, to build a 
list of lines.
+                               // Note that we could split directly on 
regexps, but IE < 9 is
+                               // broken; revisit when we drop IE 7/8 support.
+
+                               var lines = (text + "").replace(/<br 
?\/?>|\r\n|\r/g, "\n").split("\n");
+
+                               for (var i = 0; i < lines.length; ++i) {
+
+                                       var lineText = lines[i],
+                                               measured = 
context.measureText(lineText);
+
+                                       info.width = Math.max(measured.width, 
info.width);
+                                       info.height += font.lineHeight;
+
+                                       info.lines.push({
+                                               text: lineText,
+                                               width: measured.width,
+                                               height: font.lineHeight
+                                       });
+                               }
+
+                               context.restore();
+                       }
+
+                       return info;
+               };
+
+               // Adds a text string to the canvas text overlay.
+
+               Canvas.prototype.addText = function(layer, x, y, text, font, 
angle, width, halign, valign) {
+
+                       if (!plot.getOptions().canvas) {
+                               return addText.call(this, layer, x, y, text, 
font, angle, width, halign, valign);
+                       }
+
+                       var info = this.getTextInfo(layer, text, font, angle, 
width),
+                               positions = info.positions,
+                               lines = info.lines;
+
+                       // Text is drawn with baseline 'middle', which we need 
to account
+                       // for by adding half a line's height to the y position.
+
+                       y += info.height / lines.length / 2;
+
+                       // Tweak the initial y-position to match vertical 
alignment
+
+                       if (valign == "middle") {
+                               y = Math.round(y - info.height / 2);
+                       } else if (valign == "bottom") {
+                               y = Math.round(y - info.height);
+                       } else {
+                               y = Math.round(y);
+                       }
+
+                       // FIXME: LEGACY BROWSER FIX
+                       // AFFECTS: Opera < 12.00
+
+                       // Offset the y coordinate, since Opera is off pretty
+                       // consistently compared to the other browsers.
+
+                       if (!!(window.opera && 
window.opera.version().split(".")[0] < 12)) {
+                               y -= 2;
+                       }
+
+                       // Determine whether this text already exists at this 
position.
+                       // If so, mark it for inclusion in the next render pass.
+
+                       for (var i = 0, position; position = positions[i]; i++) 
{
+                               if (position.x == x && position.y == y) {
+                                       position.active = true;
+                                       return;
+                               }
+                       }
+
+                       // If the text doesn't exist at this position, create a 
new entry
+
+                       position = {
+                               active: true,
+                               lines: [],
+                               x: x,
+                               y: y
+                       };
+
+                       positions.push(position);
+
+                       // Fill in the x & y positions of each line, adjusting 
them
+                       // individually for horizontal alignment.
+
+                       for (var i = 0, line; line = lines[i]; i++) {
+                               if (halign == "center") {
+                                       position.lines.push([Math.round(x - 
line.width / 2), y]);
+                               } else if (halign == "right") {
+                                       position.lines.push([Math.round(x - 
line.width), y]);
+                               } else {
+                                       position.lines.push([Math.round(x), y]);
+                               }
+                               y += line.height;
+                       }
+               };
+       }
+
+       $.plot.plugins.push({
+               init: init,
+               options: options,
+               name: "canvas",
+               version: "1.0"
+       });
+
+})(jQuery);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.canvas.min.js
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.canvas.min.js
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.canvas.min.js
new file mode 100644
index 0000000..826d217
--- /dev/null
+++ 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.canvas.min.js
@@ -0,0 +1 @@
+(function($){var options={canvas:true};var render,getTextInfo,addText;var 
hasOwnProperty=Object.prototype.hasOwnProperty;function init(plot,classes){var 
Canvas=classes.Canvas;if(render==null){getTextInfo=Canvas.prototype.getTextInfo,addText=Canvas.prototype.addText,render=Canvas.prototype.render}Canvas.prototype.render=function(){if(!plot.getOptions().canvas){return
 render.call(this)}var 
context=this.context,cache=this._textCache;context.save();context.textBaseline="middle";for(var
 layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var 
layerCache=cache[layerKey];for(var styleKey in 
layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var 
styleCache=layerCache[styleKey],updateStyles=true;for(var key in 
styleCache){if(hasOwnProperty.call(styleCache,key)){var 
info=styleCache[key],positions=info.positions,lines=info.lines;if(updateStyles){context.fillStyle=info.font.color;context.font=info.font.definition;updateStyles=false}for(var
 i=0,position;position=positions[i];i++){if(
 position.active){for(var 
j=0,line;line=position.lines[j];j++){context.fillText(lines[j].text,line[0],line[1])}}else{positions.splice(i--,1)}}if(positions.length==0){delete
 
styleCache[key]}}}}}}}context.restore()};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){if(!plot.getOptions().canvas){return
 getTextInfo.call(this,layer,text,font,angle,width)}var 
textStyle,layerCache,styleCache,info;text=""+text;if(typeof 
font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" 
"+font.size+"px 
"+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var
 context=this.context;if(typeof font!=="object"){var 
element=$("<div>&nbsp;</div>").css("position","absolute").addClass(typeof 
font==="string"?font:null).appendTo(this.getTextLayer(layer));font={lineHeight:element.height
 
(),style:element.css("font-style"),variant:element.css("font-variant"),weight:element.css("font-weight"),family:element.css("font-family"),color:element.css("color")};font.size=element.css("line-height",1).height();element.remove()}textStyle=font.style+"
 "+font.variant+" "+font.weight+" "+font.size+"px 
"+font.family;info=styleCache[text]={width:0,height:0,positions:[],lines:[],font:{definition:textStyle,color:font.color}};context.save();context.font=textStyle;var
 lines=(text+"").replace(/<br ?\/?>|\r\n|\r/g,"\n").split("\n");for(var 
i=0;i<lines.length;++i){var 
lineText=lines[i],measured=context.measureText(lineText);info.width=Math.max(measured.width,info.width);info.height+=font.lineHeight;info.lines.push({text:lineText,width:measured.width,height:font.lineHeight})}context.restore()}return
 
info};Canvas.prototype.addText=function(layer,x,y,text,font,angle,width,halign,valign){if(!plot.getOptions().canvas){return
 addText.call(this,layer,x,y,text,font,angle,width,halign,valign)}var in
 
fo=this.getTextInfo(layer,text,font,angle,width),positions=info.positions,lines=info.lines;y+=info.height/lines.length/2;if(valign=="middle"){y=Math.round(y-info.height/2)}else
 
if(valign=="bottom"){y=Math.round(y-info.height)}else{y=Math.round(y)}if(!!(window.opera&&window.opera.version().split(".")[0]<12)){y-=2}for(var
 
i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=true;return}}position={active:true,lines:[],x:x,y:y};positions.push(position);for(var
 
i=0,line;line=lines[i];i++){if(halign=="center"){position.lines.push([Math.round(x-line.width/2),y])}else
 
if(halign=="right"){position.lines.push([Math.round(x-line.width),y])}else{position.lines.push([Math.round(x),y])}y+=line.height}}}$.plot.plugins.push({init:init,options:options,name:"canvas",version:"1.0"})})(jQuery);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.errorbars.js
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.errorbars.js
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.errorbars.js
new file mode 100644
index 0000000..7298436
--- /dev/null
+++ 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.errorbars.js
@@ -0,0 +1,353 @@
+/* Flot plugin for plotting error bars.
+
+Copyright (c) 2007-2013 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+Error bars are used to show standard deviation and other statistical
+properties in a plot.
+
+* Created by Rui Pereira  -  rui (dot) pereira (at) gmail (dot) com
+
+This plugin allows you to plot error-bars over points. Set "errorbars" inside
+the points series to the axis name over which there will be error values in
+your data array (*even* if you do not intend to plot them later, by setting
+"show: null" on xerr/yerr).
+
+The plugin supports these options:
+
+       series: {
+               points: {
+                       errorbars: "x" or "y" or "xy",
+                       xerr: {
+                               show: null/false or true,
+                               asymmetric: null/false or true,
+                               upperCap: null or "-" or function,
+                               lowerCap: null or "-" or function,
+                               color: null or color,
+                               radius: null or number
+                       },
+                       yerr: { same options as xerr }
+               }
+       }
+
+Each data point array is expected to be of the type:
+
+       "x"  [ x, y, xerr ]
+       "y"  [ x, y, yerr ]
+       "xy" [ x, y, xerr, yerr ]
+
+Where xerr becomes xerr_lower,xerr_upper for the asymmetric error case, and
+equivalently for yerr. Eg., a datapoint for the "xy" case with symmetric
+error-bars on X and asymmetric on Y would be:
+
+       [ x, y, xerr, yerr_lower, yerr_upper ]
+
+By default no end caps are drawn. Setting upperCap and/or lowerCap to "-" will
+draw a small cap perpendicular to the error bar. They can also be set to a
+user-defined drawing function, with (ctx, x, y, radius) as parameters, as eg.
+
+       function drawSemiCircle( ctx, x, y, radius ) {
+               ctx.beginPath();
+               ctx.arc( x, y, radius, 0, Math.PI, false );
+               ctx.moveTo( x - radius, y );
+               ctx.lineTo( x + radius, y );
+               ctx.stroke();
+       }
+
+Color and radius both default to the same ones of the points series if not
+set. The independent radius parameter on xerr/yerr is useful for the case when
+we may want to add error-bars to a line, without showing the interconnecting
+points (with radius: 0), and still showing end caps on the error-bars.
+shadowSize and lineWidth are derived as well from the points series.
+
+*/
+
+(function ($) {
+    var options = {
+        series: {
+            points: {
+                errorbars: null, //should be 'x', 'y' or 'xy'
+                xerr: { err: 'x', show: null, asymmetric: null, upperCap: 
null, lowerCap: null, color: null, radius: null},
+                yerr: { err: 'y', show: null, asymmetric: null, upperCap: 
null, lowerCap: null, color: null, radius: null}
+            }
+        }
+    };
+
+    function processRawData(plot, series, data, datapoints){
+        if (!series.points.errorbars)
+            return;
+
+        // x,y values
+        var format = [
+            { x: true, number: true, required: true },
+            { y: true, number: true, required: true }
+        ];
+
+        var errors = series.points.errorbars;
+        // error bars - first X then Y
+        if (errors == 'x' || errors == 'xy') {
+            // lower / upper error
+            if (series.points.xerr.asymmetric) {
+                format.push({ x: true, number: true, required: true });
+                format.push({ x: true, number: true, required: true });
+            } else
+                format.push({ x: true, number: true, required: true });
+        }
+        if (errors == 'y' || errors == 'xy') {
+            // lower / upper error
+            if (series.points.yerr.asymmetric) {
+                format.push({ y: true, number: true, required: true });
+                format.push({ y: true, number: true, required: true });
+            } else
+                format.push({ y: true, number: true, required: true });
+        }
+        datapoints.format = format;
+    }
+
+    function parseErrors(series, i){
+
+        var points = series.datapoints.points;
+
+        // read errors from points array
+        var exl = null,
+                exu = null,
+                eyl = null,
+                eyu = null;
+        var xerr = series.points.xerr,
+                yerr = series.points.yerr;
+
+        var eb = series.points.errorbars;
+        // error bars - first X
+        if (eb == 'x' || eb == 'xy') {
+            if (xerr.asymmetric) {
+                exl = points[i + 2];
+                exu = points[i + 3];
+                if (eb == 'xy')
+                    if (yerr.asymmetric){
+                        eyl = points[i + 4];
+                        eyu = points[i + 5];
+                    } else eyl = points[i + 4];
+            } else {
+                exl = points[i + 2];
+                if (eb == 'xy')
+                    if (yerr.asymmetric) {
+                        eyl = points[i + 3];
+                        eyu = points[i + 4];
+                    } else eyl = points[i + 3];
+            }
+        // only Y
+        } else if (eb == 'y')
+            if (yerr.asymmetric) {
+                eyl = points[i + 2];
+                eyu = points[i + 3];
+            } else eyl = points[i + 2];
+
+        // symmetric errors?
+        if (exu == null) exu = exl;
+        if (eyu == null) eyu = eyl;
+
+        var errRanges = [exl, exu, eyl, eyu];
+        // nullify if not showing
+        if (!xerr.show){
+            errRanges[0] = null;
+            errRanges[1] = null;
+        }
+        if (!yerr.show){
+            errRanges[2] = null;
+            errRanges[3] = null;
+        }
+        return errRanges;
+    }
+
+    function drawSeriesErrors(plot, ctx, s){
+
+        var points = s.datapoints.points,
+                ps = s.datapoints.pointsize,
+                ax = [s.xaxis, s.yaxis],
+                radius = s.points.radius,
+                err = [s.points.xerr, s.points.yerr];
+
+        //sanity check, in case some inverted axis hack is applied to flot
+        var invertX = false;
+        if (ax[0].p2c(ax[0].max) < ax[0].p2c(ax[0].min)) {
+            invertX = true;
+            var tmp = err[0].lowerCap;
+            err[0].lowerCap = err[0].upperCap;
+            err[0].upperCap = tmp;
+        }
+
+        var invertY = false;
+        if (ax[1].p2c(ax[1].min) < ax[1].p2c(ax[1].max)) {
+            invertY = true;
+            var tmp = err[1].lowerCap;
+            err[1].lowerCap = err[1].upperCap;
+            err[1].upperCap = tmp;
+        }
+
+        for (var i = 0; i < s.datapoints.points.length; i += ps) {
+
+            //parse
+            var errRanges = parseErrors(s, i);
+
+            //cycle xerr & yerr
+            for (var e = 0; e < err.length; e++){
+
+                var minmax = [ax[e].min, ax[e].max];
+
+                //draw this error?
+                if (errRanges[e * err.length]){
+
+                    //data coordinates
+                    var x = points[i],
+                        y = points[i + 1];
+
+                    //errorbar ranges
+                    var upper = [x, y][e] + errRanges[e * err.length + 1],
+                        lower = [x, y][e] - errRanges[e * err.length];
+
+                    //points outside of the canvas
+                    if (err[e].err == 'x')
+                        if (y > ax[1].max || y < ax[1].min || upper < 
ax[0].min || lower > ax[0].max)
+                            continue;
+                    if (err[e].err == 'y')
+                        if (x > ax[0].max || x < ax[0].min || upper < 
ax[1].min || lower > ax[1].max)
+                            continue;
+
+                    // prevent errorbars getting out of the canvas
+                    var drawUpper = true,
+                        drawLower = true;
+
+                    if (upper > minmax[1]) {
+                        drawUpper = false;
+                        upper = minmax[1];
+                    }
+                    if (lower < minmax[0]) {
+                        drawLower = false;
+                        lower = minmax[0];
+                    }
+
+                    //sanity check, in case some inverted axis hack is applied 
to flot
+                    if ((err[e].err == 'x' && invertX) || (err[e].err == 'y' 
&& invertY)) {
+                        //swap coordinates
+                        var tmp = lower;
+                        lower = upper;
+                        upper = tmp;
+                        tmp = drawLower;
+                        drawLower = drawUpper;
+                        drawUpper = tmp;
+                        tmp = minmax[0];
+                        minmax[0] = minmax[1];
+                        minmax[1] = tmp;
+                    }
+
+                    // convert to pixels
+                    x = ax[0].p2c(x),
+                        y = ax[1].p2c(y),
+                        upper = ax[e].p2c(upper);
+                    lower = ax[e].p2c(lower);
+                    minmax[0] = ax[e].p2c(minmax[0]);
+                    minmax[1] = ax[e].p2c(minmax[1]);
+
+                    //same style as points by default
+                    var lw = err[e].lineWidth ? err[e].lineWidth : 
s.points.lineWidth,
+                        sw = s.points.shadowSize != null ? s.points.shadowSize 
: s.shadowSize;
+
+                    //shadow as for points
+                    if (lw > 0 && sw > 0) {
+                        var w = sw / 2;
+                        ctx.lineWidth = w;
+                        ctx.strokeStyle = "rgba(0,0,0,0.1)";
+                        drawError(ctx, err[e], x, y, upper, lower, drawUpper, 
drawLower, radius, w + w/2, minmax);
+
+                        ctx.strokeStyle = "rgba(0,0,0,0.2)";
+                        drawError(ctx, err[e], x, y, upper, lower, drawUpper, 
drawLower, radius, w/2, minmax);
+                    }
+
+                    ctx.strokeStyle = err[e].color? err[e].color: s.color;
+                    ctx.lineWidth = lw;
+                    //draw it
+                    drawError(ctx, err[e], x, y, upper, lower, drawUpper, 
drawLower, radius, 0, minmax);
+                }
+            }
+        }
+    }
+
+    function 
drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){
+
+        //shadow offset
+        y += offset;
+        upper += offset;
+        lower += offset;
+
+        // error bar - avoid plotting over circles
+        if (err.err == 'x'){
+            if (upper > x + radius) drawPath(ctx, [[upper,y],[Math.max(x + 
radius,minmax[0]),y]]);
+            else drawUpper = false;
+            if (lower < x - radius) drawPath(ctx, [[Math.min(x - 
radius,minmax[1]),y],[lower,y]] );
+            else drawLower = false;
+        }
+        else {
+            if (upper < y - radius) drawPath(ctx, [[x,upper],[x,Math.min(y - 
radius,minmax[0])]] );
+            else drawUpper = false;
+            if (lower > y + radius) drawPath(ctx, [[x,Math.max(y + 
radius,minmax[1])],[x,lower]] );
+            else drawLower = false;
+        }
+
+        //internal radius value in errorbar, allows to plot radius 0 points 
and still keep proper sized caps
+        //this is a way to get errorbars on lines without visible connecting 
dots
+        radius = err.radius != null? err.radius: radius;
+
+        // upper cap
+        if (drawUpper) {
+            if (err.upperCap == '-'){
+                if (err.err=='x') drawPath(ctx, [[upper,y - radius],[upper,y + 
radius]] );
+                else drawPath(ctx, [[x - radius,upper],[x + radius,upper]] );
+            } else if ($.isFunction(err.upperCap)){
+                if (err.err=='x') err.upperCap(ctx, upper, y, radius);
+                else err.upperCap(ctx, x, upper, radius);
+            }
+        }
+        // lower cap
+        if (drawLower) {
+            if (err.lowerCap == '-'){
+                if (err.err=='x') drawPath(ctx, [[lower,y - radius],[lower,y + 
radius]] );
+                else drawPath(ctx, [[x - radius,lower],[x + radius,lower]] );
+            } else if ($.isFunction(err.lowerCap)){
+                if (err.err=='x') err.lowerCap(ctx, lower, y, radius);
+                else err.lowerCap(ctx, x, lower, radius);
+            }
+        }
+    }
+
+    function drawPath(ctx, pts){
+        ctx.beginPath();
+        ctx.moveTo(pts[0][0], pts[0][1]);
+        for (var p=1; p < pts.length; p++)
+            ctx.lineTo(pts[p][0], pts[p][1]);
+        ctx.stroke();
+    }
+
+    function draw(plot, ctx){
+        var plotOffset = plot.getPlotOffset();
+
+        ctx.save();
+        ctx.translate(plotOffset.left, plotOffset.top);
+        $.each(plot.getData(), function (i, s) {
+            if (s.points.errorbars && (s.points.xerr.show || 
s.points.yerr.show))
+                drawSeriesErrors(plot, ctx, s);
+        });
+        ctx.restore();
+    }
+
+    function init(plot) {
+        plot.hooks.processRawData.push(processRawData);
+        plot.hooks.draw.push(draw);
+    }
+
+    $.plot.plugins.push({
+                init: init,
+                options: options,
+                name: 'errorbars',
+                version: '1.0'
+            });
+})(jQuery);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.image.js
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.image.js
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.image.js
new file mode 100644
index 0000000..2e00ab1
--- /dev/null
+++ 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.image.js
@@ -0,0 +1,241 @@
+/* Flot plugin for plotting images.
+
+Copyright (c) 2007-2013 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+The data syntax is [ [ image, x1, y1, x2, y2 ], ... ] where (x1, y1) and
+(x2, y2) are where you intend the two opposite corners of the image to end up
+in the plot. Image must be a fully loaded Javascript image (you can make one
+with new Image()). If the image is not complete, it's skipped when plotting.
+
+There are two helpers included for retrieving images. The easiest work the way
+that you put in URLs instead of images in the data, like this:
+
+       [ "myimage.png", 0, 0, 10, 10 ]
+
+Then call $.plot.image.loadData( data, options, callback ) where data and
+options are the same as you pass in to $.plot. This loads the images, replaces
+the URLs in the data with the corresponding images and calls "callback" when
+all images are loaded (or failed loading). In the callback, you can then call
+$.plot with the data set. See the included example.
+
+A more low-level helper, $.plot.image.load(urls, callback) is also included.
+Given a list of URLs, it calls callback with an object mapping from URL to
+Image object when all images are loaded or have failed loading.
+
+The plugin supports these options:
+
+       series: {
+               images: {
+                       show: boolean
+                       anchor: "corner" or "center"
+                       alpha: [ 0, 1 ]
+               }
+       }
+
+They can be specified for a specific series:
+
+       $.plot( $("#placeholder"), [{
+               data: [ ... ],
+               images: { ... }
+       ])
+
+Note that because the data format is different from usual data points, you
+can't use images with anything else in a specific data series.
+
+Setting "anchor" to "center" causes the pixels in the image to be anchored at
+the corner pixel centers inside of at the pixel corners, effectively letting
+half a pixel stick out to each side in the plot.
+
+A possible future direction could be support for tiling for large images (like
+Google Maps).
+
+*/
+
+(function ($) {
+    var options = {
+        series: {
+            images: {
+                show: false,
+                alpha: 1,
+                anchor: "corner" // or "center"
+            }
+        }
+    };
+
+    $.plot.image = {};
+
+    $.plot.image.loadDataImages = function (series, options, callback) {
+        var urls = [], points = [];
+
+        var defaultShow = options.series.images.show;
+        
+        $.each(series, function (i, s) {
+            if (!(defaultShow || s.images.show))
+                return;
+            
+            if (s.data)
+                s = s.data;
+
+            $.each(s, function (i, p) {
+                if (typeof p[0] == "string") {
+                    urls.push(p[0]);
+                    points.push(p);
+                }
+            });
+        });
+
+        $.plot.image.load(urls, function (loadedImages) {
+            $.each(points, function (i, p) {
+                var url = p[0];
+                if (loadedImages[url])
+                    p[0] = loadedImages[url];
+            });
+
+            callback();
+        });
+    };
+    
+    $.plot.image.load = function (urls, callback) {
+        var missing = urls.length, loaded = {};
+        if (missing == 0)
+            callback({});
+
+        $.each(urls, function (i, url) {
+            var handler = function () {
+                --missing;
+                
+                loaded[url] = this;
+                
+                if (missing == 0)
+                    callback(loaded);
+            };
+
+            $('<img />').load(handler).error(handler).attr('src', url);
+        });
+    };
+    
+    function drawSeries(plot, ctx, series) {
+        var plotOffset = plot.getPlotOffset();
+        
+        if (!series.images || !series.images.show)
+            return;
+        
+        var points = series.datapoints.points,
+            ps = series.datapoints.pointsize;
+        
+        for (var i = 0; i < points.length; i += ps) {
+            var img = points[i],
+                x1 = points[i + 1], y1 = points[i + 2],
+                x2 = points[i + 3], y2 = points[i + 4],
+                xaxis = series.xaxis, yaxis = series.yaxis,
+                tmp;
+
+            // actually we should check img.complete, but it
+            // appears to be a somewhat unreliable indicator in
+            // IE6 (false even after load event)
+            if (!img || img.width <= 0 || img.height <= 0)
+                continue;
+
+            if (x1 > x2) {
+                tmp = x2;
+                x2 = x1;
+                x1 = tmp;
+            }
+            if (y1 > y2) {
+                tmp = y2;
+                y2 = y1;
+                y1 = tmp;
+            }
+            
+            // if the anchor is at the center of the pixel, expand the 
+            // image by 1/2 pixel in each direction
+            if (series.images.anchor == "center") {
+                tmp = 0.5 * (x2-x1) / (img.width - 1);
+                x1 -= tmp;
+                x2 += tmp;
+                tmp = 0.5 * (y2-y1) / (img.height - 1);
+                y1 -= tmp;
+                y2 += tmp;
+            }
+            
+            // clip
+            if (x1 == x2 || y1 == y2 ||
+                x1 >= xaxis.max || x2 <= xaxis.min ||
+                y1 >= yaxis.max || y2 <= yaxis.min)
+                continue;
+
+            var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height;
+            if (x1 < xaxis.min) {
+                sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1);
+                x1 = xaxis.min;
+            }
+
+            if (x2 > xaxis.max) {
+                sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1);
+                x2 = xaxis.max;
+            }
+
+            if (y1 < yaxis.min) {
+                sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1);
+                y1 = yaxis.min;
+            }
+
+            if (y2 > yaxis.max) {
+                sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1);
+                y2 = yaxis.max;
+            }
+            
+            x1 = xaxis.p2c(x1);
+            x2 = xaxis.p2c(x2);
+            y1 = yaxis.p2c(y1);
+            y2 = yaxis.p2c(y2);
+            
+            // the transformation may have swapped us
+            if (x1 > x2) {
+                tmp = x2;
+                x2 = x1;
+                x1 = tmp;
+            }
+            if (y1 > y2) {
+                tmp = y2;
+                y2 = y1;
+                y1 = tmp;
+            }
+
+            tmp = ctx.globalAlpha;
+            ctx.globalAlpha *= series.images.alpha;
+            ctx.drawImage(img,
+                          sx1, sy1, sx2 - sx1, sy2 - sy1,
+                          x1 + plotOffset.left, y1 + plotOffset.top,
+                          x2 - x1, y2 - y1);
+            ctx.globalAlpha = tmp;
+        }
+    }
+
+    function processRawData(plot, series, data, datapoints) {
+        if (!series.images.show)
+            return;
+
+        // format is Image, x1, y1, x2, y2 (opposite corners)
+        datapoints.format = [
+            { required: true },
+            { x: true, number: true, required: true },
+            { y: true, number: true, required: true },
+            { x: true, number: true, required: true },
+            { y: true, number: true, required: true }
+        ];
+    }
+    
+    function init(plot) {
+        plot.hooks.processRawData.push(processRawData);
+        plot.hooks.drawSeries.push(drawSeries);
+    }
+    
+    $.plot.plugins.push({
+        init: init,
+        options: options,
+        name: 'image',
+        version: '1.1'
+    });
+})(jQuery);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.image.min.js
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.image.min.js
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.image.min.js
new file mode 100644
index 0000000..6060024
--- /dev/null
+++ 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/flot/jquery.flot.image.min.js
@@ -0,0 +1 @@
+(function($){var 
options={series:{images:{show:false,alpha:1,anchor:"corner"}}};$.plot.image={};$.plot.image.loadDataImages=function(series,options,callback){var
 urls=[],points=[];var 
defaultShow=options.series.images.show;$.each(series,function(i,s){if(!(defaultShow||s.images.show))return;if(s.data)s=s.data;$.each(s,function(i,p){if(typeof
 
p[0]=="string"){urls.push(p[0]);points.push(p)}})});$.plot.image.load(urls,function(loadedImages){$.each(points,function(i,p){var
 
url=p[0];if(loadedImages[url])p[0]=loadedImages[url]});callback()})};$.plot.image.load=function(urls,callback){var
 
missing=urls.length,loaded={};if(missing==0)callback({});$.each(urls,function(i,url){var
 
handler=function(){--missing;loaded[url]=this;if(missing==0)callback(loaded)};$("<img
 />").load(handler).error(handler).attr("src",url)})};function 
drawSeries(plot,ctx,series){var 
plotOffset=plot.getPlotOffset();if(!series.images||!series.images.show)return;var
 points=series.datapoints.points,ps=series.datapoints.point
 size;for(var i=0;i<points.length;i+=ps){var 
img=points[i],x1=points[i+1],y1=points[i+2],x2=points[i+3],y2=points[i+4],xaxis=series.xaxis,yaxis=series.yaxis,tmp;if(!img||img.width<=0||img.height<=0)continue;if(x1>x2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}if(series.images.anchor=="center"){tmp=.5*(x2-x1)/(img.width-1);x1-=tmp;x2+=tmp;tmp=.5*(y2-y1)/(img.height-1);y1-=tmp;y2+=tmp}if(x1==x2||y1==y2||x1>=xaxis.max||x2<=xaxis.min||y1>=yaxis.max||y2<=yaxis.min)continue;var
 
sx1=0,sy1=0,sx2=img.width,sy2=img.height;if(x1<xaxis.min){sx1+=(sx2-sx1)*(xaxis.min-x1)/(x2-x1);x1=xaxis.min}if(x2>xaxis.max){sx2+=(sx2-sx1)*(xaxis.max-x2)/(x2-x1);x2=xaxis.max}if(y1<yaxis.min){sy2+=(sy1-sy2)*(yaxis.min-y1)/(y2-y1);y1=yaxis.min}if(y2>yaxis.max){sy1+=(sy1-sy2)*(yaxis.max-y2)/(y2-y1);y2=yaxis.max}x1=xaxis.p2c(x1);x2=xaxis.p2c(x2);y1=yaxis.p2c(y1);y2=yaxis.p2c(y2);if(x1>x2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}tmp=ctx.globalAlpha;ctx.globalAlpha*=series.images.alpha;ctx.drawImage(im
 
g,sx1,sy1,sx2-sx1,sy2-sy1,x1+plotOffset.left,y1+plotOffset.top,x2-x1,y2-y1);ctx.globalAlpha=tmp}}function
 
processRawData(plot,series,data,datapoints){if(!series.images.show)return;datapoints.format=[{required:true},{x:true,number:true,required:true},{y:true,number:true,required:true},{x:true,number:true,required:true},{y:true,number:true,required:true}]}function
 
init(plot){plot.hooks.processRawData.push(processRawData);plot.hooks.drawSeries.push(drawSeries)}$.plot.plugins.push({init:init,options:options,name:"image",version:"1.1"})})(jQuery);
\ No newline at end of file

Reply via email to