text: /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  angular.module("ngMaterial", ["ng", "ngAnimate", "ngAria", "material.core", "material.core.theming.palette", "material.core.theming", "material.components.autocomplete", "material.components.backdrop", "material.components.bottomSheet", "material.components.button", "material.components.card", "material.components.checkbox", "material.components.content", "material.components.dialog", "material.components.divider", "material.components.gridList", "material.components.icon", "material.components.input", "material.components.list", "material.components.progressCircular", "material.components.progressLinear", "material.components.radioButton", "material.components.select", "material.components.sidenav", "material.components.slider", "material.components.sticky", "material.components.subheader", "material.components.swipe", "material.components.switch", "material.components.tabs", "material.components.textField", "material.components.toast", "material.components.toolbar", "material.components.tooltip", "material.components.whiteframe"]), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, n) {
  			e.decorator("$$rAF", ["$delegate", t]), n.theme("default").primaryPalette("indigo").accentPalette("pink").warnPalette("red").backgroundPalette("grey")
  		}
  
  		function t(e) {
  			return e.throttle = function (t) {
  				var n, r, o, a;
  				return function () {
  					n = arguments, a = this, o = t, r || (r = !0, e(function () {
  						o.apply(a, n), r = !1
  					}))
  				}
  			}, e
  		}
  
  		angular.module("material.core", ["material.core.theming"]).config(e), e.$inject = ["$provide", "$mdThemingProvider"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t) {
  			function n(e) {
  				return r ? "webkit" + e.charAt(0).toUpperCase() + e.substring(1) : e
  			}
  
  			var r = /webkit/i.test(t.vendorPrefix);
  			return {
  				KEY_CODE: {
  					ENTER: 13,
  					ESCAPE: 27,
  					SPACE: 32,
  					LEFT_ARROW: 37,
  					UP_ARROW: 38,
  					RIGHT_ARROW: 39,
  					DOWN_ARROW: 40,
  					TAB: 9
  				},
  				CSS: {
  					TRANSITIONEND: "transitionend" + (r ? " webkitTransitionEnd" : ""),
  					ANIMATIONEND: "animationend" + (r ? " webkitAnimationEnd" : ""),
  					TRANSFORM: n("transform"),
  					TRANSFORM_ORIGIN: n("transformOrigin"),
  					TRANSITION: n("transition"),
  					TRANSITION_DURATION: n("transitionDuration"),
  					ANIMATION_PLAY_STATE: n("animationPlayState"),
  					ANIMATION_DURATION: n("animationDuration"),
  					ANIMATION_NAME: n("animationName"),
  					ANIMATION_TIMING: n("animationTimingFunction"),
  					ANIMATION_DIRECTION: n("animationDirection")
  				},
  				MEDIA: {
  					sm: "(max-width: 600px)",
  					"gt-sm": "(min-width: 600px)",
  					md: "(min-width: 600px) and (max-width: 960px)",
  					"gt-md": "(min-width: 960px)",
  					lg: "(min-width: 960px) and (max-width: 1200px)",
  					"gt-lg": "(min-width: 1200px)"
  				},
  				MEDIA_PRIORITY: ["gt-lg", "lg", "gt-md", "md", "gt-sm", "sm"]
  			}
  		}
  
  		angular.module("material.core").factory("$mdConstant", e), e.$inject = ["$$rAF", "$sniffer"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		function e(e, t) {
  			function n() {
  				return [].concat(b)
  			}
  
  			function r() {
  				return b.length
  			}
  
  			function o(e) {
  				return b.length && e > -1 && e < b.length
  			}
  
  			function a(e) {
  				return e ? o(m(e) + 1) : !1
  			}
  
  			function i(e) {
  				return e ? o(m(e) - 1) : !1
  			}
  
  			function c(e) {
  				return o(e) ? b[e] : null
  			}
  
  			function d(e, t) {
  				return b.filter(function (n) {
  					return n[e] === t
  				})
  			}
  
  			function l(e, t) {
  				return e ? (angular.isNumber(t) || (t = b.length), b.splice(t, 0, e), m(e)) : -1
  			}
  
  			function s(e) {
  				u(e) && b.splice(m(e), 1)
  			}
  
  			function m(e) {
  				return b.indexOf(e)
  			}
  
  			function u(e) {
  				return e && m(e) > -1
  			}
  
  			function f() {
  				return b.length ? b[0] : null
  			}
  
  			function p() {
  				return b.length ? b[b.length - 1] : null
  			}
  
  			function h(e, n, r, a) {
  				r = r || g;
  				for (var i = m(n); ;) {
  					if (!o(i))return null;
  					var c = i + (e ? -1 : 1), d = null;
  					if (o(c) ? d = b[c] : t && (d = e ? p() : f(), c = m(d)), null === d || c === a)return null;
  					if (r(d))return d;
  					angular.isUndefined(a) && (a = c), i = c
  				}
  			}
  
  			var g = function () {
  				return !0
  			};
  			e && !angular.isArray(e) && (e = Array.prototype.slice.call(e)), t = !!t;
  			var b = e || [];
  			return {
  				items: n,
  				count: r,
  				inRange: o,
  				contains: u,
  				indexOf: m,
  				itemAt: c,
  				findBy: d,
  				add: l,
  				remove: s,
  				first: f,
  				last: p,
  				next: angular.bind(null, h, !1),
  				previous: angular.bind(null, h, !0),
  				hasPrevious: i,
  				hasNext: a
  			}
  		}
  
  		angular.module("material.core").config(["$provide", function (t) {
  			t.decorator("$mdUtil", ["$delegate", function (t) {
  				return t.iterator = e, t
  			}])
  		}])
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		function e(e, t, n) {
  			function r(e) {
  				var t = m[e];
  				angular.isUndefined(t) && (t = m[e] = o(e));
  				var n = f[t];
  				return angular.isUndefined(n) && (n = a(t)), n
  			}
  
  			function o(t) {
  				return e.MEDIA[t] || ("(" !== t.charAt(0) ? "(" + t + ")" : t)
  			}
  
  			function a(e) {
  				var t = u[e] = n.matchMedia(e);
  				return t.addListener(i), f[t.media] = !!t.matches
  			}
  
  			function i(e) {
  				t.$evalAsync(function () {
  					f[e.media] = !!e.matches
  				})
  			}
  
  			function c(e) {
  				return u[e]
  			}
  
  			function d(t, n) {
  				for (var r = 0; r < e.MEDIA_PRIORITY.length; r++) {
  					var o = e.MEDIA_PRIORITY[r];
  					if (u[m[o]].matches) {
  						var a = s(t, n + "-" + o);
  						if (t[a])return t[a]
  					}
  				}
  				return t[s(t, n)]
  			}
  
  			function l(t, n, r) {
  				var o = [];
  				return t.forEach(function (t) {
  					var a = s(n, t);
  					n[a] && o.push(n.$observe(a, angular.bind(void 0, r, null)));
  					for (var i in e.MEDIA) {
  						if (a = s(n, t + "-" + i), !n[a])return;
  						o.push(n.$observe(a, angular.bind(void 0, r, i)))
  					}
  				}), function () {
  					o.forEach(function (e) {
  						e()
  					})
  				}
  			}
  
  			function s(e, t) {
  				return p[t] || (p[t] = e.$normalize(t))
  			}
  
  			var m = {}, u = {}, f = {}, p = {};
  			return r.getResponsiveAttribute = d, r.getQuery = c, r.watchResponsiveAttributes = l, r
  		}
  
  		angular.module("material.core").factory("$mdMedia", e), e.$inject = ["$mdConstant", "$rootScope", "$window"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		var e = ["0", "0", "0"];
  		angular.module("material.core").factory("$mdUtil", ["$cacheFactory", "$document", "$timeout", "$q", "$window", "$mdConstant", function (t, n, r, o, a, i) {
  			function c(e) {
  				return e[0] || e
  			}
  
  			var d;
  			return d = {
  				now: window.performance ? angular.bind(window.performance, window.performance.now) : Date.now,
  				clientRect: function (e, t, n) {
  					var r = c(e);
  					t = c(t || r.offsetParent || document.body);
  					var o = r.getBoundingClientRect(), a = n ? t.getBoundingClientRect() : {
  						left: 0,
  						top: 0,
  						width: 0,
  						height: 0
  					};
  					return {
  						left: o.left - a.left + t.scrollLeft,
  						top: o.top - a.top + t.scrollTop,
  						width: o.width,
  						height: o.height
  					}
  				},
  				offsetRect: function (e, t) {
  					return d.clientRect(e, t, !0)
  				},
  				floatingScrollbars: function () {
  					if (void 0 === this.floatingScrollbars.cached) {
  						var e = angular.element('<div style="z-index: -1; position: absolute; height: 1px; overflow-y: scroll"><div style="height: 2px;"></div></div>');
  						n[0].body.appendChild(e[0]), this.floatingScrollbars.cached = e[0].offsetWidth == e[0].childNodes[0].offsetWidth, e.remove()
  					}
  					return this.floatingScrollbars.cached
  				},
  				forceFocus: function (e) {
  					var t = e[0] || e;
  					document.addEventListener("click", function r(e) {
  						e.target === t && e.$focus && (t.focus(), e.stopImmediatePropagation(), e.preventDefault(), t.removeEventListener("click", r))
  					}, !0);
  					var n = document.createEvent("MouseEvents");
  					n.initMouseEvent("click", !1, !0, window, {}, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), n.$material = !0, n.$focus = !0, t.dispatchEvent(n)
  				},
  				transitionEndPromise: function (e, t) {
  					function n(t) {
  						t && t.target !== e[0] || (e.off(i.CSS.TRANSITIONEND, n), a.resolve())
  					}
  
  					t = t || {};
  					var a = o.defer();
  					return e.on(i.CSS.TRANSITIONEND, n), t.timeout && r(n, t.timeout), a.promise
  				},
  				fakeNgModel: function () {
  					return {
  						$fake: !0, $setTouched: angular.noop, $setViewValue: function (e) {
  							this.$viewValue = e, this.$render(e), this.$viewChangeListeners.forEach(function (e) {
  								e()
  							})
  						}, $isEmpty: function (e) {
  							return 0 === ("" + e).length
  						}, $parsers: [], $formatters: [], $viewChangeListeners: [], $render: angular.noop
  					}
  				},
  				debounce: function (e, t, n, o) {
  					var a;
  					return function () {
  						var i = n, c = Array.prototype.slice.call(arguments);
  						r.cancel(a), a = r(function () {
  							a = void 0, e.apply(i, c)
  						}, t || 10, o)
  					}
  				},
  				throttle: function (e, t) {
  					var n;
  					return function () {
  						var r = this, o = arguments, a = d.now();
  						(!n || a - n > t) && (e.apply(r, o), n = a)
  					}
  				},
  				time: function (e) {
  					var t = d.now();
  					return e(), d.now() - t
  				},
  				nextUid: function () {
  					for (var t, n = e.length; n;) {
  						if (n--, t = e[n].charCodeAt(0), 57 == t)return e[n] = "A", e.join("");
  						if (90 != t)return e[n] = String.fromCharCode(t + 1), e.join("");
  						e[n] = "0"
  					}
  					return e.unshift("0"), e.join("")
  				},
  				disconnectScope: function (e) {
  					if (e && e.$root !== e && !e.$$destroyed) {
  						var t = e.$parent;
  						e.$$disconnected = !0, t.$$childHead === e && (t.$$childHead = e.$$nextSibling), t.$$childTail === e && (t.$$childTail = e.$$prevSibling), e.$$prevSibling && (e.$$prevSibling.$$nextSibling = e.$$nextSibling), e.$$nextSibling && (e.$$nextSibling.$$prevSibling = e.$$prevSibling), e.$$nextSibling = e.$$prevSibling = null
  					}
  				},
  				reconnectScope: function (e) {
  					if (e && e.$root !== e && e.$$disconnected) {
  						var t = e, n = t.$parent;
  						t.$$disconnected = !1, t.$$prevSibling = n.$$childTail, n.$$childHead ? (n.$$childTail.$$nextSibling = t, n.$$childTail = t) : n.$$childHead = n.$$childTail = t
  					}
  				},
  				getClosest: function (e, t) {
  					t = t.toUpperCase();
  					do if (e.nodeName === t)return e; while (e = e.parentNode);
  					return null
  				}
  			}
  		}]), angular.element.prototype.focus = angular.element.prototype.focus || function () {
  			return this.length && this[0].focus(), this
  		}, angular.element.prototype.blur = angular.element.prototype.blur || function () {
  			return this.length && this[0].blur(), this
  		}
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n) {
  			function r(e, n, r) {
  				var o = e[0];
  				o.hasAttribute(n) || c(o, n) || (r = angular.isString(r) ? r.trim() : "", r.length ? e.attr(n, r) : t.warn('ARIA: Attribute "', n, '", required for accessibility, is missing on node:', o))
  			}
  
  			function o(t, n, o) {
  				e(function () {
  					r(t, n, o())
  				})
  			}
  
  			function a(e, t) {
  				o(e, t, function () {
  					return i(e)
  				})
  			}
  
  			function i(e) {
  				return e.text().trim()
  			}
  
  			function c(e, t) {
  				function r(e) {
  					var t = e.currentStyle ? e.currentStyle : n.getComputedStyle(e);
  					return "none" === t.display
  				}
  
  				var o = e.hasChildNodes(), a = !1;
  				if (o)for (var i = e.childNodes, c = 0; c < i.length; c++) {
  					var d = i[c];
  					1 === d.nodeType && d.hasAttribute(t) && (r(d) || (a = !0))
  				}
  				return a
  			}
  
  			return {expect: r, expectAsync: o, expectWithText: a}
  		}
  
  		angular.module("material.core").service("$mdAria", e), e.$inject = ["$$rAF", "$log", "$window"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n, r, o, a) {
  			this.compile = function (i) {
  				var c = i.templateUrl, d = i.template || "", l = i.controller, s = i.controllerAs, m = i.resolve || {}, u = i.locals || {}, f = i.transformTemplate || angular.identity, p = i.bindToController;
  				return angular.forEach(m, function (e, t) {
  					m[t] = angular.isString(e) ? n.get(e) : n.invoke(e)
  				}), angular.extend(m, u), m.$template = c ? t.get(c, {cache: a}).then(function (e) {
  					return e.data
  				}) : e.when(d), e.all(m).then(function (e) {
  					var t = f(e.$template), n = i.element || angular.element("<div>").html(t.trim()).contents(), a = r(n);
  					return {
  						locals: e, element: n, link: function (t) {
  							if (e.$scope = t, l) {
  								var r = o(l, e);
  								p && angular.extend(r, e), n.data("$ngControllerController", r), n.children().data("$ngControllerController", r), s && (t[s] = r)
  							}
  							return a(t)
  						}
  					}
  				})
  			}
  		}
  
  		angular.module("material.core").service("$mdCompiler", e), e.$inject = ["$q", "$http", "$injector", "$compile", "$controller", "$templateCache"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t) {
  			var n;
  			for (var r in d)n = d[r], "start" === e && n.cancel(), n[e](t, g)
  		}
  
  		function t(t) {
  			if (!g) {
  				var n = +Date.now();
  				b && !o(t, b) && n - b.endTime < 1500 || (g = c(t), e("start", t))
  			}
  		}
  
  		function n(t) {
  			g && o(t, g) && (i(t, g), e("move", t))
  		}
  
  		function r(t) {
  			g && o(t, g) && (i(t, g), g.endTime = +Date.now(), e("end", t), b = g, g = null)
  		}
  
  		function o(e, t) {
  			return e && t && e.type.charAt(0) === t.type
  		}
  
  		function a(e) {
  			return e = e.originalEvent || e, e.touches && e.touches[0] || e.changedTouches && e.changedTouches[0] || e
  		}
  
  		function i(e, t) {
  			var n = a(e), r = t.x = n.pageX, o = t.y = n.pageY;
  			t.distanceX = r - t.startX, t.distanceY = o - t.startY, t.distance = Math.sqrt(t.distanceX * t.distanceX + t.distanceY * t.distanceY), t.directionX = t.distanceX > 0 ? "right" : t.distanceX < 0 ? "left" : "", t.directionY = t.distanceY > 0 ? "up" : t.distanceY < 0 ? "down" : "", t.duration = +Date.now() - t.startTime, t.velocityX = t.distanceX / t.duration, t.velocityY = t.distanceY / t.duration
  		}
  
  		function c(e) {
  			var t = a(e), n = {startTime: +Date.now(), target: e.target, type: e.type.charAt(0)};
  			return n.startX = n.x = t.pageX, n.startY = n.y = t.pageY, n
  		}
  
  		var d, l = "mousedown touchstart pointerdown", s = "mousemove touchmove pointermove", m = "mouseup mouseleave touchend touchcancel pointerup pointercancel";
  		document.contains || (document.contains = function (e) {
  			return document.body.contains(e)
  		});
  		var u = navigator.userAgent || navigator.vendor || window.opera, f = u.match(/iPad/i) || u.match(/iPhone/i) || u.match(/iPod/i), p = u.match(/Android/i), h = f || p;
  		h && document.addEventListener("click", function (e) {
  			var t = 0 === e.clientX && 0 === e.clientY;
  			window.jQuery || t || e.$material || (e.preventDefault(), e.stopPropagation())
  		}, !0), angular.element(document).on(l, t).on(s, n).on(m, r).on("$$mdGestureReset", function () {
  			b = g = null
  		});
  		var g, b;
  		angular.module("material.core").run(["$mdGesture", function () {
  		}]).factory("$mdGesture", ["$$MdGestureHandler", "$$rAF", "$timeout", function (e, t, n) {
  			function r(t, n) {
  				var r = new e(t);
  				return angular.extend(r, n), d[t] = r, a
  			}
  
  			function o(e, t, n) {
  				var r = d[t.replace(/^\$md./, "")];
  				if (!r)throw new Error("Failed to register element with handler " + t + ". Available handlers: " + Object.keys(d).join(", "));
  				return r.registerElement(e, n)
  			}
  
  			d = {}, h && r("click", {
  				options: {maxDistance: 6}, onEnd: function (e, t) {
  					t.distance < this.state.options.maxDistance && this.dispatchEvent(e, "click")
  				}
  			}), r("press", {
  				onStart: function (e) {
  					this.dispatchEvent(e, "$md.pressdown")
  				}, onEnd: function (e) {
  					this.dispatchEvent(e, "$md.pressup")
  				}
  			}), r("hold", {
  				options: {maxDistance: 6, delay: 500}, onCancel: function () {
  					n.cancel(this.state.timeout)
  				}, onStart: function (e, t) {
  					return this.state.registeredParent ? (this.state.pos = {
  						x: t.x,
  						y: t.y
  					}, this.state.timeout = n(angular.bind(this, function () {
  						this.dispatchEvent(e, "$md.hold"), this.cancel()
  					}), this.state.options.delay, !1), void 0) : this.cancel()
  				}, onMove: function (e, t) {
  					e.preventDefault();
  					var n = this.state.pos.x - t.x, r = this.state.pos.y - t.y;
  					Math.sqrt(n * n + r * r) > this.options.maxDistance && this.cancel()
  				}, onEnd: function () {
  					this.onCancel()
  				}
  			}), r("drag", {
  				options: {minDistance: 6, horizontal: !0}, onStart: function () {
  					this.state.registeredParent || this.cancel()
  				}, onMove: function (e, t) {
  					var n, r;
  					e.preventDefault(), this.state.dragPointer ? this.dispatchDragMove(e) : (this.state.options.horizontal ? (n = Math.abs(t.distanceX) > this.state.options.minDistance, r = Math.abs(t.distanceY) > 1.5 * this.state.options.minDistance) : (n = Math.abs(t.distanceY) > this.state.options.minDistance, r = Math.abs(t.distanceX) > 1.5 * this.state.options.minDistance), n ? (this.state.dragPointer = c(e), i(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragstart", this.state.dragPointer)) : r && this.cancel())
  				}, dispatchDragMove: t.throttle(function (e) {
  					this.state.isRunning && (i(e, this.state.dragPointer), this.dispatchEvent(e, "$md.drag", this.state.dragPointer))
  				}), onEnd: function (e) {
  					this.state.dragPointer && (i(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragend", this.state.dragPointer))
  				}
  			}), r("swipe", {
  				options: {minVelocity: .65, minDistance: 10}, onEnd: function (e, t) {
  					if (Math.abs(t.velocityX) > this.state.options.minVelocity && Math.abs(t.distanceX) > this.state.options.minDistance) {
  						var n = "left" == t.directionX ? "$md.swipeleft" : "$md.swiperight";
  						this.dispatchEvent(e, n)
  					}
  				}
  			});
  			var a;
  			return a = {handler: r, register: o}
  		}]).factory("$$MdGestureHandler", ["$$rAF", function () {
  			function e(e) {
  				this.name = e, this.state = {}
  			}
  
  			function t(e, t, n) {
  				n = n || g;
  				var r = new angular.element.Event(t);
  				r.$material = !0, r.pointer = n, r.srcEvent = e, angular.extend(r, {
  					clientX: n.x,
  					clientY: n.y,
  					screenX: n.x,
  					screenY: n.y,
  					pageX: n.x,
  					pageY: n.y,
  					ctrlKey: e.ctrlKey,
  					altKey: e.altKey,
  					shiftKey: e.shiftKey,
  					metaKey: e.metaKey
  				}), angular.element(n.target).trigger(r)
  			}
  
  			function n(e, t, n) {
  				n = n || g;
  				var r;
  				"click" === t ? (r = document.createEvent("MouseEvents"), r.initMouseEvent("click", !0, !0, window, e.detail, n.x, n.y, n.x, n.y, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget || null)) : (r = document.createEvent("CustomEvent"), r.initCustomEvent(t, !0, !0, {})), r.$material = !0, r.pointer = n, r.srcEvent = e, n.target.dispatchEvent(r)
  			}
  
  			return e.prototype = {
  				onStart: angular.noop,
  				onMove: angular.noop,
  				onEnd: angular.noop,
  				onCancel: angular.noop,
  				options: {},
  				dispatchEvent: "undefined" != typeof window.jQuery && angular.element === window.jQuery ? t : n,
  				start: function (e, t) {
  					if (!this.state.isRunning) {
  						var n = this.getNearestParent(e.target), r = n && n.$mdGesture[this.name] || {};
  						this.state = {
  							isRunning: !0,
  							options: angular.extend({}, this.options, r),
  							registeredParent: n
  						}, this.onStart(e, t)
  					}
  				},
  				move: function (e, t) {
  					this.state.isRunning && this.onMove(e, t)
  				},
  				end: function (e, t) {
  					this.state.isRunning && (this.onEnd(e, t), this.state.isRunning = !1)
  				},
  				cancel: function (e, t) {
  					this.onCancel(e, t), this.state = {}
  				},
  				getNearestParent: function (e) {
  					for (var t = e; t;) {
  						if ((t.$mdGesture || {})[this.name])return t;
  						t = t.parentNode
  					}
  				},
  				registerElement: function (e, t) {
  					function n() {
  						delete e[0].$mdGesture[r.name], e.off("$destroy", n)
  					}
  
  					var r = this;
  					return e[0].$mdGesture = e[0].$mdGesture || {}, e[0].$mdGesture[this.name] = t || {}, e.on("$destroy", n), n
  				}
  			}, e
  		}])
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e() {
  			function e(e) {
  				function t(e) {
  					return c.optionsFactory = e.options, c.methods = (e.methods || []).concat(a), d
  				}
  
  				function n(e, t) {
  					return i[e] = t, d
  				}
  
  				function r(t, n) {
  					if (n = n || {}, n.methods = n.methods || [], n.options = n.options || function () {
  							return {}
  						}, /^cancel|hide|show$/.test(t))throw new Error("Preset '" + t + "' in " + e + " is reserved!");
  					if (n.methods.indexOf("_options") > -1)throw new Error("Method '_options' in " + e + " is reserved!");
  					return c.presets[t] = {
  						methods: n.methods.concat(a),
  						optionsFactory: n.options,
  						argOption: n.argOption
  					}, d
  				}
  
  				function o(t, n, r) {
  					function o(e) {
  						return e && e._options && (e = e._options), s.show(angular.extend({}, l, e))
  					}
  
  					function a(t, n) {
  						var o = {};
  						return o[e] = m, r.invoke(t || function () {
  							return n
  						}, {}, o)
  					}
  
  					var d, l, s = t(), m = {hide: s.hide, cancel: s.cancel, show: o};
  					return d = c.methods || [], l = a(c.optionsFactory, {}), angular.forEach(i, function (e, t) {
  						m[t] = e
  					}), angular.forEach(c.presets, function (e, t) {
  						function n(e) {
  							this._options = angular.extend({}, r, e)
  						}
  
  						var r = a(e.optionsFactory, {}), o = (e.methods || []).concat(d);
  						if (angular.extend(r, {$type: t}), angular.forEach(o, function (e) {
  								n.prototype[e] = function (t) {
  									return this._options[e] = t, this
  								}
  							}), e.argOption) {
  							var i = "show" + t.charAt(0).toUpperCase() + t.slice(1);
  							m[i] = function (e) {
  								var n = m[t](e);
  								return m.show(n)
  							}
  						}
  						m[t] = function (t) {
  							return arguments.length && e.argOption && !angular.isObject(t) && !angular.isArray(t) ? (new n)[e.argOption](t) : new n(t)
  						}
  					}), m
  				}
  
  				var a = ["onHide", "onShow", "onRemove"], i = {}, c = {presets: {}}, d = {
  					setDefaults: t,
  					addPreset: r,
  					addMethod: n,
  					$get: o
  				};
  				return d.addPreset("build", {methods: ["controller", "controllerAs", "resolve", "template", "templateUrl", "themable", "transformTemplate", "parent"]}), o.$inject = ["$$interimElement", "$animate", "$injector"], d
  			}
  
  			function t(e, t, n, r, o, a, i, c, d) {
  				function l(e) {
  					return e && angular.isString(e) ? e.replace(/\{\{/g, s).replace(/}}/g, m) : e
  				}
  
  				var s = i.startSymbol(), m = i.endSymbol(), u = "{{" === s && "}}" === m, f = u ? angular.identity : l;
  				return function () {
  					function i(e) {
  						if (p.length)return u.cancel().then(function () {
  							return i(e)
  						});
  						var t = new m(e);
  						return p.push(t), t.show().then(function () {
  							return t.deferred.promise
  						})
  					}
  
  					function l(e) {
  						var t = p.shift();
  						return t && t.remove().then(function () {
  								t.deferred.resolve(e)
  							})
  					}
  
  					function s(e) {
  						var n = p.shift();
  						return t.when(n && n.remove().then(function () {
  							n.deferred.reject(e)
  						}))
  					}
  
  					function m(i) {
  						var l, s, m, p, h;
  						return i = i || {}, i = angular.extend({
  							preserveScope: !1,
  							scope: i.scope || n.$new(i.isolateScope),
  							onShow: function (e, t, n) {
  								return a.enter(t, n.parent)
  							},
  							onRemove: function (e, n) {
  								return n && a.leave(n) || t.when()
  							}
  						}, i), i.template && (i.template = f(i.template)), l = {
  							options: i,
  							deferred: t.defer(),
  							show: function () {
  								var n;
  								return n = i.skipCompile ? t(function (e) {
  									e({
  										locals: {}, link: function () {
  											return i.element
  										}
  									})
  								}) : c.compile(i), p = n.then(function (n) {
  									function a() {
  										i.hideDelay && (s = r(u.cancel, i.hideDelay))
  									}
  
  									angular.extend(n.locals, l.options), m = n.link(i.scope), angular.isFunction(i.parent) ? i.parent = i.parent(i.scope, m, i) : angular.isString(i.parent) && (i.parent = angular.element(e[0].querySelector(i.parent))), (i.parent || {}).length || (i.parent = o.find("body"), i.parent.length || (i.parent = o)), i.themable && d(m);
  									var c = i.onShow(i.scope, m, i);
  									return t.when(c).then(function () {
  										(i.onComplete || angular.noop)(i.scope, m, i), a()
  									})
  								}, function (e) {
  									p = !0, l.deferred.reject(e)
  								})
  							},
  							cancelTimeout: function () {
  								s && (r.cancel(s), s = void 0)
  							},
  							remove: function () {
  								return l.cancelTimeout(), h = t.when(p).then(function () {
  									var e = m ? i.onRemove(i.scope, m, i) : !0;
  									return t.when(e).then(function () {
  										i.preserveScope || i.scope.$destroy(), h = !0
  									})
  								})
  							}
  						}
  					}
  
  					var u, p = [];
  					return u = {show: i, hide: l, cancel: s}
  				}
  			}
  
  			return e.$get = t, t.$inject = ["$document", "$q", "$rootScope", "$timeout", "$rootElement", "$animate", "$interpolate", "$mdCompiler", "$mdTheming"], e
  		}
  
  		angular.module("material.core").provider("$$interimElement", e)
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t) {
  			function n(e) {
  				return e && "" !== e
  			}
  
  			var r, o = [], a = {};
  			return r = {
  				notFoundError: function (t) {
  					e.error("No instance found for handle", t)
  				}, getInstances: function () {
  					return o
  				}, get: function (e) {
  					if (!n(e))return null;
  					var t, r, a;
  					for (t = 0, r = o.length; r > t; t++)if (a = o[t], a.$$mdHandle === e)return a;
  					return null
  				}, register: function (e, t) {
  					function n() {
  						var t = o.indexOf(e);
  						-1 !== t && o.splice(t, 1)
  					}
  
  					function r() {
  						var n = a[t];
  						n && (n.resolve(e), delete a[t])
  					}
  
  					return t ? (e.$$mdHandle = t, o.push(e), r(), n) : angular.noop
  				}, when: function (e) {
  					if (n(e)) {
  						var o = t.defer(), i = r.get(e);
  						return i ? o.resolve(i) : a[e] = o, o.promise
  					}
  					return t.reject("Invalid `md-component-id` value.")
  				}
  			}
  		}
  
  		angular.module("material.core").factory("$mdComponentRegistry", e), e.$inject = ["$log", "$q"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e) {
  			return {
  				controller: angular.noop, link: function (t, n, r) {
  					r.hasOwnProperty("mdInkRippleCheckbox") ? e.attachCheckboxBehavior(t, n) : e.attachButtonBehavior(t, n)
  				}
  			}
  		}
  
  		function t(e, t) {
  			function n(e, t, n) {
  				return a(e, t, angular.extend({
  					fullRipple: !0,
  					isMenuItem: t.hasClass("md-menu-item"),
  					center: !1,
  					dimBackground: !0
  				}, n))
  			}
  
  			function r(e, t, n) {
  				return a(e, t, angular.extend({center: !0, dimBackground: !1, fitRipple: !0}, n))
  			}
  
  			function o(e, t, n) {
  				return a(e, t, angular.extend({center: !1, dimBackground: !0, outline: !1, rippleSize: "full"}, n))
  			}
  
  			function a(n, r, o) {
  				function a() {
  					var e = r.data("$mdRippleContainer");
  					return e ? e : (e = angular.element('<div class="md-ripple-container">'), r.append(e), r.data("$mdRippleContainer", e), e)
  				}
  
  				function i(e) {
  					function t(e) {
  						var t = "#" === e.charAt(0) ? e.substr(1) : e, n = t.length / 3, r = t.substr(0, n), o = t.substr(n, n), a = t.substr(2 * n);
  						return 1 === n && (r += r, o += o, a += a), "rgba(" + parseInt(r, 16) + "," + parseInt(o, 16) + "," + parseInt(a, 16) + ",0.1)"
  					}
  
  					function n(e) {
  						return e.replace(")", ", 0.1)").replace("(", "a(")
  					}
  
  					if (e)return 0 === e.indexOf("rgba") ? e.replace(/\d?\.?\d*\s*\)\s*$/, "0.1)") : 0 === e.indexOf("rgb") ? n(e) : 0 === e.indexOf("#") ? t(e) : void 0
  				}
  
  				function c(e, n) {
  					g.splice(g.indexOf(e), 1), 0 === g.length && a().css({backgroundColor: ""}), t(function () {
  						e.remove()
  					}, n, !1)
  				}
  
  				function d(e) {
  					var t = g.indexOf(e), n = b[t] || {}, r = g.length > 1 ? !1 : E, a = g.length > 1 ? !1 : $;
  					r || n.animating || a ? e.addClass("md-ripple-visible") : e && (e.removeClass("md-ripple-visible"), o.outline && e.css({
  						width: f + "px",
  						height: f + "px",
  						marginLeft: -1 * f + "px",
  						marginTop: -1 * f + "px"
  					}), c(e, o.outline ? 450 : 650))
  				}
  
  				function l(n, c) {
  					function l(e) {
  						var t = angular.element('<div class="md-ripple" data-counter="' + h++ + '">');
  						return g.unshift(t), b.unshift({animating: !0}), u.append(t), e && t.css(e), t
  					}
  
  					function s(e, t) {
  						var n, r, a, i = u.prop("offsetWidth"), c = u.prop("offsetHeight");
  						return o.isMenuItem ? r = Math.sqrt(Math.pow(i, 2) + Math.pow(c, 2)) : o.outline ? (a = M.getBoundingClientRect(), e -= a.left, t -= a.top, i = Math.max(e, i - e), c = Math.max(t, c - t), r = 2 * Math.sqrt(Math.pow(i, 2) + Math.pow(c, 2))) : (n = o.fullRipple ? 1.1 : .8, r = Math.sqrt(Math.pow(i, 2) + Math.pow(c, 2)) * n, o.fitRipple && (r = Math.min(c, i, r))), r
  					}
  
  					function m(e, t, n) {
  						function r(e) {
  							return e.replace("rgba", "rgb").replace(/,[^\),]+\)/, ")")
  						}
  
  						var a, i = {backgroundColor: r(T), borderColor: r(T), width: e + "px", height: e + "px"};
  						return o.outline ? (i.width = 0, i.height = 0) : i.marginLeft = i.marginTop = e * -.5 + "px", o.center ? i.left = i.top = "50%" : (a = M.getBoundingClientRect(), i.left = Math.round((t - a.left) / u.prop("offsetWidth") * 100) + "%", i.top = Math.round((n - a.top) / u.prop("offsetHeight") * 100) + "%"), i
  					}
  
  					T = i(r.attr("md-ink-ripple")) || i(e.getComputedStyle(o.colorElement[0]).color || "rgb(0, 0, 0)");
  					var u = a(), p = s(n, c), v = m(p, n, c), E = l(v), $ = g.indexOf(E), A = b[$] || {};
  					return f = p, A.animating = !0, t(function () {
  						o.dimBackground && u.css({backgroundColor: T}), E.addClass("md-ripple-placed md-ripple-scaled"), o.outline ? E.css({
  							borderWidth: .5 * p + "px",
  							marginLeft: p * -.5 + "px",
  							marginTop: p * -.5 + "px"
  						}) : E.css({left: "50%", top: "50%"}), d(E), t(function () {
  							A.animating = !1, d(E)
  						}, o.outline ? 450 : 225, !1)
  					}, 0, !1), E
  				}
  
  				function s(e) {
  					u() && (l(e.pointer.x, e.pointer.y), $ = !0)
  				}
  
  				function m() {
  					$ = !1;
  					var e = g[g.length - 1];
  					t(function () {
  						d(e)
  					}, 0, !1)
  				}
  
  				function u() {
  					function e(e) {
  						return e && e.hasAttribute && e.hasAttribute("disabled")
  					}
  
  					var t = M.parentNode, n = t && t.parentNode, r = n && n.parentNode;
  					return !(e(M) || e(t) || e(n) || e(r))
  				}
  
  				if (r.controller("mdNoInk"))return angular.noop;
  				o = angular.extend({
  					colorElement: r,
  					mousedown: !0,
  					hover: !0,
  					focus: !0,
  					center: !1,
  					mousedownPauseTime: 150,
  					dimBackground: !1,
  					outline: !1,
  					fullRipple: !0,
  					isMenuItem: !1,
  					fitRipple: !1
  				}, o);
  				var f, p = r.controller("mdInkRipple") || {}, h = 0, g = [], b = [], v = r.attr("md-highlight"), E = !1, $ = !1, M = r[0], A = r.attr("md-ripple-size"), T = i(r.attr("md-ink-ripple")) || i(e.getComputedStyle(o.colorElement[0]).color || "rgb(0, 0, 0)");
  				switch (A) {
  					case"full":
  						o.fullRipple = !0;
  						break;
  					case"partial":
  						o.fullRipple = !1
  				}
  				return o.mousedown && r.on("$md.pressdown", s).on("$md.pressup", m), p.createRipple = l, v && n.$watch(v, function (e) {
  					E = e, E && !g.length && t(function () {
  						l(0, 0)
  					}, 0, !1), angular.forEach(g, d)
  				}), function () {
  					r.off("$md.pressdown", s).off("$md.pressup", m), a().remove()
  				}
  			}
  
  			return {attachButtonBehavior: n, attachCheckboxBehavior: r, attachTabBehavior: o, attach: a}
  		}
  
  		function n() {
  			return function () {
  				return {controller: angular.noop}
  			}
  		}
  
  		angular.module("material.core").factory("$mdInkRipple", t).directive("mdInkRipple", e).directive("mdNoInk", n()).directive("mdNoBar", n()).directive("mdNoStretch", n()), e.$inject = ["$mdInkRipple"], t.$inject = ["$window", "$timeout"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		angular.module("material.core.theming.palette", []).constant("$mdColorPalette", {
  			red: {
  				50: "#ffebee",
  				100: "#ffcdd2",
  				200: "#ef9a9a",
  				300: "#e57373",
  				400: "#ef5350",
  				500: "#f44336",
  				600: "#e53935",
  				700: "#d32f2f",
  				800: "#c62828",
  				900: "#b71c1c",
  				A100: "#ff8a80",
  				A200: "#ff5252",
  				A400: "#ff1744",
  				A700: "#d50000",
  				contrastDefaultColor: "light",
  				contrastDarkColors: "50 100 200 300 400 A100",
  				contrastStrongLightColors: "500 600 700 A200 A400 A700"
  			},
  			pink: {
  				50: "#fce4ec",
  				100: "#f8bbd0",
  				200: "#f48fb1",
  				300: "#f06292",
  				400: "#ec407a",
  				500: "#e91e63",
  				600: "#d81b60",
  				700: "#c2185b",
  				800: "#ad1457",
  				900: "#880e4f",
  				A100: "#ff80ab",
  				A200: "#ff4081",
  				A400: "#f50057",
  				A700: "#c51162",
  				contrastDefaultColor: "light",
  				contrastDarkColors: "50 100 200 300 400 A100",
  				contrastStrongLightColors: "500 600 A200 A400 A700"
  			},
  			purple: {
  				50: "#f3e5f5",
  				100: "#e1bee7",
  				200: "#ce93d8",
  				300: "#ba68c8",
  				400: "#ab47bc",
  				500: "#9c27b0",
  				600: "#8e24aa",
  				700: "#7b1fa2",
  				800: "#6a1b9a",
  				900: "#4a148c",
  				A100: "#ea80fc",
  				A200: "#e040fb",
  				A400: "#d500f9",
  				A700: "#aa00ff",
  				contrastDefaultColor: "light",
  				contrastDarkColors: "50 100 200 A100",
  				contrastStrongLightColors: "300 400 A200 A400 A700"
  			},
  			"deep-purple": {
  				50: "#ede7f6",
  				100: "#d1c4e9",
  				200: "#b39ddb",
  				300: "#9575cd",
  				400: "#7e57c2",
  				500: "#673ab7",
  				600: "#5e35b1",
  				700: "#512da8",
  				800: "#4527a0",
  				900: "#311b92",
  				A100: "#b388ff",
  				A200: "#7c4dff",
  				A400: "#651fff",
  				A700: "#6200ea",
  				contrastDefaultColor: "light",
  				contrastDarkColors: "50 100 200 A100",
  				contrastStrongLightColors: "300 400 A200"
  			},
  			indigo: {
  				50: "#e8eaf6",
  				100: "#c5cae9",
  				200: "#9fa8da",
  				300: "#7986cb",
  				400: "#5c6bc0",
  				500: "#3f51b5",
  				600: "#3949ab",
  				700: "#303f9f",
  				800: "#283593",
  				900: "#1a237e",
  				A100: "#8c9eff",
  				A200: "#536dfe",
  				A400: "#3d5afe",
  				A700: "#304ffe",
  				contrastDefaultColor: "light",
  				contrastDarkColors: "50 100 200 A100",
  				contrastStrongLightColors: "300 400 A200 A400"
  			},
  			blue: {
  				50: "#e3f2fd",
  				100: "#bbdefb",
  				200: "#90caf9",
  				300: "#64b5f6",
  				400: "#42a5f5",
  				500: "#2196f3",
  				600: "#1e88e5",
  				700: "#1976d2",
  				800: "#1565c0",
  				900: "#0d47a1",
  				A100: "#82b1ff",
  				A200: "#448aff",
  				A400: "#2979ff",
  				A700: "#2962ff",
  				contrastDefaultColor: "light",
  				contrastDarkColors: "100 200 300 400 A100",
  				contrastStrongLightColors: "500 600 700 A200 A400 A700"
  			},
  			"light-blue": {
  				50: "#e1f5fe",
  				100: "#b3e5fc",
  				200: "#81d4fa",
  				300: "#4fc3f7",
  				400: "#29b6f6",
  				500: "#03a9f4",
  				600: "#039be5",
  				700: "#0288d1",
  				800: "#0277bd",
  				900: "#01579b",
  				A100: "#80d8ff",
  				A200: "#40c4ff",
  				A400: "#00b0ff",
  				A700: "#0091ea",
  				contrastDefaultColor: "dark",
  				contrastLightColors: "500 600 700 800 900 A700",
  				contrastStrongLightColors: "500 600 700 800 A700"
  			},
  			cyan: {
  				50: "#e0f7fa",
  				100: "#b2ebf2",
  				200: "#80deea",
  				300: "#4dd0e1",
  				400: "#26c6da",
  				500: "#00bcd4",
  				600: "#00acc1",
  				700: "#0097a7",
  				800: "#00838f",
  				900: "#006064",
  				A100: "#84ffff",
  				A200: "#18ffff",
  				A400: "#00e5ff",
  				A700: "#00b8d4",
  				contrastDefaultColor: "dark",
  				contrastLightColors: "500 600 700 800 900",
  				contrastStrongLightColors: "500 600 700 800"
  			},
  			teal: {
  				50: "#e0f2f1",
  				100: "#b2dfdb",
  				200: "#80cbc4",
  				300: "#4db6ac",
  				400: "#26a69a",
  				500: "#009688",
  				600: "#00897b",
  				700: "#00796b",
  				800: "#00695c",
  				900: "#004d40",
  				A100: "#a7ffeb",
  				A200: "#64ffda",
  				A400: "#1de9b6",
  				A700: "#00bfa5",
  				contrastDefaultColor: "dark",
  				contrastLightColors: "500 600 700 800 900",
  				contrastStrongLightColors: "500 600 700"
  			},
  			green: {
  				50: "#e8f5e9",
  				100: "#c8e6c9",
  				200: "#a5d6a7",
  				300: "#81c784",
  				400: "#66bb6a",
  				500: "#4caf50",
  				600: "#43a047",
  				700: "#388e3c",
  				800: "#2e7d32",
  				900: "#1b5e20",
  				A100: "#b9f6ca",
  				A200: "#69f0ae",
  				A400: "#00e676",
  				A700: "#00c853",
  				contrastDefaultColor: "dark",
  				contrastLightColors: "500 600 700 800 900",
  				contrastStrongLightColors: "500 600 700"
  			},
  			"light-green": {
  				50: "#f1f8e9",
  				100: "#dcedc8",
  				200: "#c5e1a5",
  				300: "#aed581",
  				400: "#9ccc65",
  				500: "#8bc34a",
  				600: "#7cb342",
  				700: "#689f38",
  				800: "#558b2f",
  				900: "#33691e",
  				A100: "#ccff90",
  				A200: "#b2ff59",
  				A400: "#76ff03",
  				A700: "#64dd17",
  				contrastDefaultColor: "dark",
  				contrastLightColors: "800 900",
  				contrastStrongLightColors: "800 900"
  			},
  			lime: {
  				50: "#f9fbe7",
  				100: "#f0f4c3",
  				200: "#e6ee9c",
  				300: "#dce775",
  				400: "#d4e157",
  				500: "#cddc39",
  				600: "#c0ca33",
  				700: "#afb42b",
  				800: "#9e9d24",
  				900: "#827717",
  				A100: "#f4ff81",
  				A200: "#eeff41",
  				A400: "#c6ff00",
  				A700: "#aeea00",
  				contrastDefaultColor: "dark",
  				contrastLightColors: "900",
  				contrastStrongLightColors: "900"
  			},
  			yellow: {
  				50: "#fffde7",
  				100: "#fff9c4",
  				200: "#fff59d",
  				300: "#fff176",
  				400: "#ffee58",
  				500: "#ffeb3b",
  				600: "#fdd835",
  				700: "#fbc02d",
  				800: "#f9a825",
  				900: "#f57f17",
  				A100: "#ffff8d",
  				A200: "#ffff00",
  				A400: "#ffea00",
  				A700: "#ffd600",
  				contrastDefaultColor: "dark"
  			},
  			amber: {
  				50: "#fff8e1",
  				100: "#ffecb3",
  				200: "#ffe082",
  				300: "#ffd54f",
  				400: "#ffca28",
  				500: "#ffc107",
  				600: "#ffb300",
  				700: "#ffa000",
  				800: "#ff8f00",
  				900: "#ff6f00",
  				A100: "#ffe57f",
  				A200: "#ffd740",
  				A400: "#ffc400",
  				A700: "#ffab00",
  				contrastDefaultColor: "dark"
  			},
  			orange: {
  				50: "#fff3e0",
  				100: "#ffe0b2",
  				200: "#ffcc80",
  				300: "#ffb74d",
  				400: "#ffa726",
  				500: "#ff9800",
  				600: "#fb8c00",
  				700: "#f57c00",
  				800: "#ef6c00",
  				900: "#e65100",
  				A100: "#ffd180",
  				A200: "#ffab40",
  				A400: "#ff9100",
  				A700: "#ff6d00",
  				contrastDefaultColor: "dark",
  				contrastLightColors: "800 900",
  				contrastStrongLightColors: "800 900"
  			},
  			"deep-orange": {
  				50: "#fbe9e7",
  				100: "#ffccbc",
  				200: "#ffab91",
  				300: "#ff8a65",
  				400: "#ff7043",
  				500: "#ff5722",
  				600: "#f4511e",
  				700: "#e64a19",
  				800: "#d84315",
  				900: "#bf360c",
  				A100: "#ff9e80",
  				A200: "#ff6e40",
  				A400: "#ff3d00",
  				A700: "#dd2c00",
  				contrastDefaultColor: "light",
  				contrastDarkColors: "50 100 200 300 400 A100 A200",
  				contrastStrongLightColors: "500 600 700 800 900 A400 A700"
  			},
  			brown: {
  				50: "#efebe9",
  				100: "#d7ccc8",
  				200: "#bcaaa4",
  				300: "#a1887f",
  				400: "#8d6e63",
  				500: "#795548",
  				600: "#6d4c41",
  				700: "#5d4037",
  				800: "#4e342e",
  				900: "#3e2723",
  				A100: "#d7ccc8",
  				A200: "#bcaaa4",
  				A400: "#8d6e63",
  				A700: "#5d4037",
  				contrastDefaultColor: "light",
  				contrastDarkColors: "50 100 200",
  				contrastStrongLightColors: "300 400"
  			},
  			grey: {
  				0: "#ffffff",
  				50: "#fafafa",
  				100: "#f5f5f5",
  				200: "#eeeeee",
  				300: "#e0e0e0",
  				400: "#bdbdbd",
  				500: "#9e9e9e",
  				600: "#757575",
  				700: "#616161",
  				800: "#424242",
  				900: "#212121",
  				1000: "#000000",
  				A100: "#ffffff",
  				A200: "#eeeeee",
  				A400: "#bdbdbd",
  				A700: "#616161",
  				contrastDefaultColor: "dark",
  				contrastLightColors: "600 700 800 900"
  			},
  			"blue-grey": {
  				50: "#eceff1",
  				100: "#cfd8dc",
  				200: "#b0bec5",
  				300: "#90a4ae",
  				400: "#78909c",
  				500: "#607d8b",
  				600: "#546e7a",
  				700: "#455a64",
  				800: "#37474f",
  				900: "#263238",
  				A100: "#cfd8dc",
  				A200: "#b0bec5",
  				A400: "#78909c",
  				A700: "#455a64",
  				contrastDefaultColor: "light",
  				contrastDarkColors: "50 100 200 300",
  				contrastStrongLightColors: "400 500"
  			}
  		})
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e) {
  			function t(e, t) {
  				return t = t || {}, d[e] = o(e, t), s
  			}
  
  			function n(e, t) {
  				return o(e, angular.extend({}, d[e] || {}, t))
  			}
  
  			function o(e, t) {
  				var n = T.filter(function (e) {
  					return !t[e]
  				});
  				if (n.length)throw new Error("Missing colors %1 in palette %2!".replace("%1", n.join(", ")).replace("%2", e));
  				return t
  			}
  
  			function a(e, t) {
  				if (t = t || "default", l[e])return l[e];
  				var n = "string" == typeof t ? l[t] : t, r = new i(e);
  				return n && angular.forEach(n.colors, function (e, t) {
  					r.colors[t] = {name: e.name, hues: angular.extend({}, e.hues)}
  				}), l[e] = r, r
  			}
  
  			function i(e) {
  				function t(e) {
  					if (e = 0 === arguments.length ? !0 : !!e, e !== n.isDark) {
  						n.isDark = e, n.foregroundPalette = n.isDark ? f : u, n.foregroundShadow = n.isDark ? p : h;
  						var t = n.isDark ? A : M, r = n.isDark ? M : A;
  						return angular.forEach(t, function (e, t) {
  							var o = n.colors[t], a = r[t];
  							if (o)for (var i in o.hues)o.hues[i] === a[i] && (o.hues[i] = e[i])
  						}), n
  					}
  				}
  
  				var n = this;
  				n.name = e, n.colors = {}, n.dark = t, t(!1), E.forEach(function (e) {
  					var t = (n.isDark ? A : M)[e];
  					n[e + "Palette"] = function (r, o) {
  						var a = n.colors[e] = {name: r, hues: angular.extend({}, t, o)};
  						return Object.keys(a.hues).forEach(function (e) {
  							if (!t[e])throw new Error("Invalid hue name '%1' in theme %2's %3 color %4. Available hue names: %4".replace("%1", e).replace("%2", n.name).replace("%3", r).replace("%4", Object.keys(t).join(", ")))
  						}), Object.keys(a.hues).map(function (e) {
  							return a.hues[e]
  						}).forEach(function (t) {
  							if (-1 == T.indexOf(t))throw new Error("Invalid hue value '%1' in theme %2's %3 color %4. Available hue values: %5".replace("%1", t).replace("%2", n.name).replace("%3", e).replace("%4", r).replace("%5", T.join(", ")))
  						}), n
  					}, n[e + "Color"] = function () {
  						var t = Array.prototype.slice.call(arguments);
  						return console.warn("$mdThemingProviderTheme." + e + "Color() has been deprecated. Use $mdThemingProviderTheme." + e + "Palette() instead."), n[e + "Palette"].apply(n, t)
  					}
  				})
  			}
  
  			function m(e, t) {
  				function n(e) {
  					return void 0 === e || "" === e ? !0 : void 0 !== l[e]
  				}
  
  				function r(t, n) {
  					void 0 === n && (n = t, t = void 0), void 0 === t && (t = e), r.inherit(n, n)
  				}
  
  				return r.inherit = function (r, o) {
  					function a(e) {
  						n(e) || t.warn("Attempted to use unregistered theme '" + e + "'. Register it with $mdThemingProvider.theme().");
  						var o = r.data("$mdThemeName");
  						o && r.removeClass("md-" + o + "-theme"), r.addClass("md-" + e + "-theme"), r.data("$mdThemeName", e)
  					}
  
  					var i = o.controller("mdTheme"), c = r.attr("md-theme-watch");
  					if ((b || angular.isDefined(c)) && "false" != c) {
  						var d = e.$watch(function () {
  							return i && i.$mdTheme || g
  						}, a);
  						r.on("$destroy", d)
  					} else {
  						var l = i && i.$mdTheme || g;
  						a(l)
  					}
  				}, r.registered = n, r.defaultTheme = function () {
  					return g
  				}, r
  			}
  
  			d = {}, l = {};
  			var g = "default", b = !1;
  			return angular.extend(d, e), m.$inject = ["$rootScope", "$log"], s = {
  				definePalette: t,
  				extendPalette: n,
  				theme: a,
  				setDefaultTheme: function (e) {
  					g = e
  				},
  				alwaysWatchTheme: function (e) {
  					b = e
  				},
  				$get: m,
  				_LIGHT_DEFAULT_HUES: M,
  				_DARK_DEFAULT_HUES: A,
  				_PALETTES: d,
  				_THEMES: l,
  				_parseRules: r,
  				_rgba: c
  			}
  		}
  
  		function t(e, t, n) {
  			return {
  				priority: 100, link: {
  					pre: function (r, o, a) {
  						var i = {
  							$setTheme: function (t) {
  								e.registered(t) || n.warn("attempted to use unregistered theme '" + t + "'"), i.$mdTheme = t
  							}
  						};
  						o.data("$mdThemeController", i), i.$setTheme(t(a.mdTheme)(r)), a.$observe("mdTheme", i.$setTheme)
  					}
  				}
  			}
  		}
  
  		function n(e) {
  			return e
  		}
  
  		function r(e, t, n) {
  			a(e, t), n = n.replace(/THEME_NAME/g, e.name);
  			var r = [], o = e.colors[t], i = new RegExp(".md-" + e.name + "-theme", "g"), l = new RegExp("('|\")?{{\\s*(" + t + ")-(color|contrast)-?(\\d\\.?\\d*)?\\s*}}(\"|')?", "g"), s = /'?"?\{\{\s*([a-zA-Z]+)-(A?\d+|hue\-[0-3]|shadow)-?(\d\.?\d*)?\s*\}\}'?"?/g, m = d[o.name];
  			return n = n.replace(s, function (t, n, r, o) {
  				return "foreground" === n ? "shadow" == r ? e.foregroundShadow : e.foregroundPalette[r] || e.foregroundPalette["1"] : (0 === r.indexOf("hue") && (r = e.colors[n].hues[r]), c((d[e.colors[n].name][r] || "").value, o))
  			}), angular.forEach(o.hues, function (t, o) {
  				var a = n.replace(l, function (e, n, r, o, a) {
  					return c(m[t]["color" === o ? "value" : "contrast"], a)
  				});
  				"default" !== o && (a = a.replace(i, ".md-" + e.name + "-theme.md-" + o)), r.push(a)
  			}), r.join("")
  		}
  
  		function o(e) {
  			function t(e) {
  				var t = e.contrastDefaultColor, n = e.contrastLightColors || [], r = e.contrastStrongLightColors || [], o = e.contrastDarkColors || [];
  				"string" == typeof n && (n = n.split(" ")), "string" == typeof r && (r = r.split(" ")), "string" == typeof o && (o = o.split(" ")), delete e.contrastDefaultColor, delete e.contrastLightColors, delete e.contrastStrongLightColors, delete e.contrastDarkColors, angular.forEach(e, function (a, c) {
  					function d() {
  						return "light" === t ? o.indexOf(c) > -1 ? g : r.indexOf(c) > -1 ? v : b : n.indexOf(c) > -1 ? r.indexOf(c) > -1 ? v : b : g
  					}
  
  					if (!angular.isObject(a)) {
  						var l = i(a);
  						if (!l)throw new Error("Color %1, in palette %2's hue %3, is invalid. Hex or rgb(a) color expected.".replace("%1", a).replace("%2", e.name).replace("%3", c));
  						e[c] = {value: l, contrast: d()}
  					}
  				})
  			}
  
  			var n = e.has("$MD_THEME_CSS") ? e.get("$MD_THEME_CSS") : "";
  			angular.forEach(d, t);
  			var o = n.split(/\}(?!(\}|'|"|;))/).filter(function (e) {
  				return e && e.length
  			}).map(function (e) {
  				return e.trim() + "}"
  			}), a = {};
  			E.forEach(function (e) {
  				a[e] = ""
  			});
  			var c = new RegExp("md-(" + E.join("|") + ")", "g");
  			o.forEach(function (e) {
  				for (var t, n = (e.match(c), 0); t = E[n]; n++)if (e.indexOf(".md-" + t) > -1)return a[t] += e;
  				for (n = 0; t = E[n]; n++)if (e.indexOf(t) > -1)return a[t] += e;
  				return a[$] += e
  			});
  			var s = "";
  			if (angular.forEach(l, function (e) {
  					E.forEach(function (t) {
  						s += r(e, t, a[t] + "")
  					}), e.colors.primary.name == e.colors.accent.name && console.warn("$mdThemingProvider: Using the same palette for primary and accent. This violates the material design spec.")
  				}), !m) {
  				var u = document.createElement("style");
  				u.innerHTML = s;
  				var f = document.getElementsByTagName("head")[0];
  				f.insertBefore(u, f.firstElementChild), m = !0
  			}
  		}
  
  		function a(e, t) {
  			if (!d[(e.colors[t] || {}).name])throw new Error("You supplied an invalid color palette for theme %1's %2 palette. Available palettes: %3".replace("%1", e.name).replace("%2", t).replace("%3", Object.keys(d).join(", ")))
  		}
  
  		function i(e) {
  			if (angular.isArray(e) && 3 == e.length)return e;
  			if (/^rgb/.test(e))return e.replace(/(^\s*rgba?\(|\)\s*$)/g, "").split(",").map(function (e, t) {
  				return 3 == t ? parseFloat(e, 10) : parseInt(e, 10)
  			});
  			if ("#" == e.charAt(0) && (e = e.substring(1)), /^([a-fA-F0-9]{3}){1,2}$/g.test(e)) {
  				var t = e.length / 3, n = e.substr(0, t), r = e.substr(t, t), o = e.substr(2 * t);
  				return 1 === t && (n += n, r += r, o += o), [parseInt(n, 16), parseInt(r, 16), parseInt(o, 16)]
  			}
  		}
  
  		function c(e, t) {
  			return 4 == e.length && (e = angular.copy(e), t ? e.pop() : t = e.pop()), t && ("number" == typeof t || "string" == typeof t && t.length) ? "rgba(" + e.join(",") + "," + t + ")" : "rgb(" + e.join(",") + ")"
  		}
  
  		angular.module("material.core.theming", ["material.core.theming.palette"]).directive("mdTheme", t).directive("mdThemable", n).provider("$mdTheming", e).run(o);
  		var d, l, s, m, u = {
  			name: "dark",
  			1: "rgba(0,0,0,0.87)",
  			2: "rgba(0,0,0,0.54)",
  			3: "rgba(0,0,0,0.26)",
  			4: "rgba(0,0,0,0.12)"
  		}, f = {
  			name: "light",
  			1: "rgba(255,255,255,1.0)",
  			2: "rgba(255,255,255,0.7)",
  			3: "rgba(255,255,255,0.3)",
  			4: "rgba(255,255,255,0.12)"
  		}, p = "1px 1px 0px rgba(0,0,0,0.4), -1px -1px 0px rgba(0,0,0,0.4)", h = "", g = i("rgba(0,0,0,0.87)"), b = i("rgba(255,255,255,0.87"), v = i("rgb(255,255,255)"), E = ["primary", "accent", "warn", "background"], $ = "primary", M = {
  			accent: {
  				"default": "A200",
  				"hue-1": "A100",
  				"hue-2": "A400",
  				"hue-3": "A700"
  			}
  		}, A = {background: {"default": "500", "hue-1": "300", "hue-2": "600", "hue-3": "800"}};
  		E.forEach(function (e) {
  			var t = {"default": "500", "hue-1": "300", "hue-2": "800", "hue-3": "A100"};
  			M[e] || (M[e] = t), A[e] || (A[e] = t)
  		});
  		var T = ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "A100", "A200", "A400", "A700"];
  		e.$inject = ["$mdColorPalette"], t.$inject = ["$mdTheming", "$interpolate", "$log"], n.$inject = ["$mdTheming"], o.$inject = ["$injector"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		angular.module("material.components.autocomplete", ["material.core", "material.components.icon"])
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e) {
  			return e
  		}
  
  		angular.module("material.components.backdrop", ["material.core"]).directive("mdBackdrop", e), e.$inject = ["$mdTheming"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e() {
  			return {restrict: "E"}
  		}
  
  		function t(e) {
  			function t(e, t, o, a, i, c, d, l, s, m) {
  				function u(n, r, a) {
  					h = i('<md-backdrop class="md-opaque md-bottom-sheet-backdrop">')(n), h.on("click", function () {
  						o(d.cancel)
  					}), c.inherit(h, a.parent), e.enter(h, a.parent, null);
  					var s = new p(r, a.parent);
  					return a.bottomSheet = s, a.targetEvent && angular.element(a.targetEvent.target).blur(), c.inherit(s.element, a.parent), a.disableParentScroll && (a.lastOverflow = a.parent.css("overflow"), a.parent.css("overflow", "hidden")), e.enter(s.element, a.parent).then(function () {
  						var e = angular.element(r[0].querySelector("button") || r[0].querySelector("a") || r[0].querySelector("[ng-click]"));
  						e.focus(), a.escapeToClose && (a.rootElementKeyupCallback = function (e) {
  							e.keyCode === t.KEY_CODE.ESCAPE && o(d.cancel)
  						}, l.on("keyup", a.rootElementKeyupCallback))
  					})
  				}
  
  				function f(t, n, r) {
  					var o = r.bottomSheet;
  					return e.leave(h), e.leave(o.element).then(function () {
  						r.disableParentScroll && (r.parent.css("overflow", r.lastOverflow), delete r.lastOverflow), o.cleanup(), r.targetEvent && angular.element(r.targetEvent.target).focus()
  					})
  				}
  
  				function p(e, a) {
  					function i() {
  						e.css(t.CSS.TRANSITION_DURATION, "0ms")
  					}
  
  					function c(n) {
  						var o = n.pointer.distanceY;
  						5 > o && (o = Math.max(-r, o / 2)), e.css(t.CSS.TRANSFORM, "translate3d(0," + (r + o) + "px,0)")
  					}
  
  					function l(r) {
  						if (r.pointer.distanceY > 0 && (r.pointer.distanceY > 20 || Math.abs(r.pointer.velocityY) > n)) {
  							var a = e.prop("offsetHeight") - r.pointer.distanceY, i = Math.min(a / r.pointer.velocityY * .75, 500);
  							e.css(t.CSS.TRANSITION_DURATION, i + "ms"), o(d.cancel)
  						} else e.css(t.CSS.TRANSITION_DURATION, ""), e.css(t.CSS.TRANSFORM, "")
  					}
  
  					var s = m.register(a, "drag", {horizontal: !1});
  					return a.on("$md.dragstart", i).on("$md.drag", c).on("$md.dragend", l), {
  						element: e,
  						cleanup: function () {
  							s(), a.off("$md.dragstart", i).off("$md.drag", c).off("$md.dragend", l)
  						}
  					}
  				}
  
  				var h;
  				return {
  					themable: !0,
  					targetEvent: null,
  					onShow: u,
  					onRemove: f,
  					escapeToClose: !0,
  					disableParentScroll: !0
  				}
  			}
  
  			var n = .5, r = 80;
  			return t.$inject = ["$animate", "$mdConstant", "$timeout", "$$rAF", "$compile", "$mdTheming", "$mdBottomSheet", "$rootElement", "$rootScope", "$mdGesture"], e("$mdBottomSheet").setDefaults({
  				methods: ["disableParentScroll", "escapeToClose", "targetEvent"],
  				options: t
  			})
  		}
  
  		angular.module("material.components.bottomSheet", ["material.core", "material.components.backdrop"]).directive("mdBottomSheet", e).provider("$mdBottomSheet", t), t.$inject = ["$$interimElementProvider"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n) {
  			function r(e) {
  				return angular.isDefined(e.href) || angular.isDefined(e.ngHref)
  			}
  
  			function o(e, t) {
  				return r(t) ? '<a class="md-button" ng-transclude></a>' : '<button class="md-button" ng-transclude></button>'
  			}
  
  			function a(o, a, i) {
  				var c = a[0];
  				t(a), e.attachButtonBehavior(o, a);
  				var d = c.textContent.trim();
  				d || n.expect(a, "aria-label"), r(i) && angular.isDefined(i.ngDisabled) && o.$watch(i.ngDisabled, function (e) {
  					a.attr("tabindex", e ? -1 : 0)
  				})
  			}
  
  			return {restrict: "EA", replace: !0, transclude: !0, template: o, link: a}
  		}
  
  		angular.module("material.components.button", ["material.core"]).directive("mdButton", e), e.$inject = ["$mdInkRipple", "$mdTheming", "$mdAria"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e) {
  			return {
  				restrict: "E", link: function (t, n) {
  					e(n)
  				}
  			}
  		}
  
  		angular.module("material.components.card", ["material.core"]).directive("mdCard", e), e.$inject = ["$mdTheming"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n, r, o, a) {
  			function i(t, i) {
  				return i.type = "checkbox", i.tabIndex = 0, t.attr("role", i.type), function (t, i, d, l) {
  					function s(e) {
  						e.which === r.KEY_CODE.SPACE && (e.preventDefault(), m(e))
  					}
  
  					function m(e) {
  						i[0].hasAttribute("disabled") || t.$apply(function () {
  							f = !f, l.$setViewValue(f, e && e.type), l.$render()
  						})
  					}
  
  					function u() {
  						f = l.$viewValue, f ? i.addClass(c) : i.removeClass(c)
  					}
  
  					l = l || a.fakeNgModel();
  					var f = !1;
  					o(i), d.ngChecked && t.$watch(t.$eval.bind(t, d.ngChecked), l.$setViewValue.bind(l)), n.expectWithText(i, "aria-label"), e.link.pre(t, {
  						on: angular.noop,
  						0: {}
  					}, d, [l]), i.on("click", m).on("keypress", s), l.$render = u
  				}
  			}
  
  			e = e[0];
  			var c = "md-checked";
  			return {
  				restrict: "E",
  				transclude: !0,
  				require: "?ngModel",
  				template: '<div class="md-container" md-ink-ripple md-ink-ripple-checkbox><div class="md-icon"></div></div><div ng-transclude class="md-label"></div>',
  				compile: i
  			}
  		}
  
  		angular.module("material.components.checkbox", ["material.core"]).directive("mdCheckbox", e), e.$inject = ["inputDirective", "$mdInkRipple", "$mdAria", "$mdConstant", "$mdTheming", "$mdUtil"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e) {
  			function n(e, t) {
  				this.$scope = e, this.$element = t
  			}
  
  			return {
  				restrict: "E", controller: ["$scope", "$element", n], link: function (n, r) {
  					r[0];
  					e(r), n.$broadcast("$mdContentLoaded", r), t(r[0])
  				}
  			}
  		}
  
  		function t(e) {
  			angular.element(e).on("$md.pressdown", function (t) {
  				"t" === t.pointer.type && (t.$materialScrollFixed || (t.$materialScrollFixed = !0, 0 === e.scrollTop ? e.scrollTop = 1 : e.scrollHeight === e.scrollTop + e.offsetHeight && (e.scrollTop -= 1)))
  			})
  		}
  
  		angular.module("material.components.content", ["material.core"]).directive("mdContent", e), e.$inject = ["$mdTheming"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t) {
  			return {
  				restrict: "E", link: function (n, r) {
  					t(r), e(function () {
  						var e = r[0].querySelector("md-content");
  						e && e.scrollHeight > e.clientHeight && r.addClass("md-content-overflow")
  					})
  				}
  			}
  		}
  
  		function t(e) {
  			function t(e, t) {
  				return {
  					template: ['<md-dialog md-theme="{{ dialog.theme }}" aria-label="{{ dialog.ariaLabel }}">', "<md-content>", "<h2>{{ dialog.title }}</h2>", "<p>{{ dialog.content }}</p>", "</md-content>", '<div class="md-actions">', '<md-button ng-if="dialog.$type == \'confirm\'" ng-click="dialog.abort()">', "{{ dialog.cancel }}", "</md-button>", '<md-button ng-click="dialog.hide()" class="md-primary">', "{{ dialog.ok }}", "</md-button>", "</div>", "</md-dialog>"].join(""),
  					controller: function () {
  						this.hide = function () {
  							e.hide(!0)
  						}, this.abort = function () {
  							e.cancel()
  						}
  					},
  					controllerAs: "dialog",
  					bindToController: !0,
  					theme: t.defaultTheme()
  				}
  			}
  
  			function n(e, t, n, r, o, a, i, c, d, l, s, m) {
  				function u(n, o, i) {
  					function l() {
  						var e = o[0].querySelector(".dialog-close");
  						if (!e) {
  							var t = o[0].querySelectorAll(".md-actions button");
  							e = t[t.length - 1]
  						}
  						return angular.element(e)
  					}
  
  					i.parent = angular.element(i.parent), i.popInTarget = angular.element((i.targetEvent || {}).target);
  					var s = l();
  					if (p(o.find("md-dialog")), i.hasBackdrop) {
  						var u = i.parent[0] == a[0].body && a[0].documentElement && a[0].scrollTop ? angular.element(a[0].documentElement) : i.parent, f = u.prop("scrollTop");
  						i.backdrop = angular.element('<md-backdrop class="md-dialog-backdrop md-opaque">'), d.inherit(i.backdrop, i.parent), r.enter(i.backdrop, i.parent), o.css("top", f + "px")
  					}
  					return i.disableParentScroll && (i.lastOverflow = i.parent.css("overflow"), i.parent.css("overflow", "hidden")), h(o, i.parent, i.popInTarget && i.popInTarget.length && i.popInTarget).then(function () {
  						i.escapeToClose && (i.rootElementKeyupCallback = function (t) {
  							t.keyCode === c.KEY_CODE.ESCAPE && e(m.cancel)
  						}, t.on("keyup", i.rootElementKeyupCallback)), i.clickOutsideToClose && (i.dialogClickOutsideCallback = function (t) {
  							t.target === o[0] && e(m.cancel)
  						}, o.on("click", i.dialogClickOutsideCallback)), s.focus()
  					})
  				}
  
  				function f(e, n, o) {
  					return o.backdrop && r.leave(o.backdrop), o.disableParentScroll && (o.parent.css("overflow", o.lastOverflow), delete o.lastOverflow), o.escapeToClose && t.off("keyup", o.rootElementKeyupCallback), o.clickOutsideToClose && n.off("click", o.dialogClickOutsideCallback), g(n, o.parent, o.popInTarget && o.popInTarget.length && o.popInTarget).then(function () {
  						o.scope.$destroy(), n.remove(), o.popInTarget && o.popInTarget.focus()
  					})
  				}
  
  				function p(e) {
  					e.attr({role: "dialog"});
  					var t = e.find("md-content");
  					0 === t.length && (t = e), o.expectAsync(e, "aria-label", function () {
  						var e = t.text().split(/\s+/);
  						return e.length > 3 && (e = e.slice(0, 3).concat("...")), e.join(" ")
  					})
  				}
  
  				function h(e, t, n) {
  					var r = e.find("md-dialog");
  					return t.append(e), b(r, n), l(function () {
  						r.addClass("transition-in").css(c.CSS.TRANSFORM, "")
  					}), i.transitionEndPromise(r)
  				}
  
  				function g(e, t, n) {
  					var r = e.find("md-dialog");
  					return r.addClass("transition-out").removeClass("transition-in"), b(r, n), i.transitionEndPromise(r)
  				}
  
  				function b(e, t) {
  					if (t) {
  						var n = t[0].getBoundingClientRect(), r = e[0].getBoundingClientRect(), o = Math.min(.5, n.width / r.width), a = Math.min(.5, n.height / r.height);
  						e.css(c.CSS.TRANSFORM, "translate3d(" + (-r.left + n.left + n.width / 2 - r.width / 2) + "px," + (-r.top + n.top + n.height / 2 - r.height / 2) + "px,0) scale(" + o + "," + a + ")")
  					}
  				}
  
  				return {
  					hasBackdrop: !0,
  					isolateScope: !0,
  					onShow: u,
  					onRemove: f,
  					clickOutsideToClose: !0,
  					escapeToClose: !0,
  					targetEvent: null,
  					disableParentScroll: !0,
  					transformTemplate: function (e) {
  						return '<div class="md-dialog-container">' + e + "</div>"
  					}
  				}
  			}
  
  			return t.$inject = ["$mdDialog", "$mdTheming"], n.$inject = ["$timeout", "$rootElement", "$compile", "$animate", "$mdAria", "$document", "$mdUtil", "$mdConstant", "$mdTheming", "$$rAF", "$q", "$mdDialog"], e("$mdDialog").setDefaults({
  				methods: ["disableParentScroll", "hasBackdrop", "clickOutsideToClose", "escapeToClose", "targetEvent"],
  				options: n
  			}).addPreset("alert", {
  				methods: ["title", "content", "ariaLabel", "ok", "theme"],
  				options: t
  			}).addPreset("confirm", {methods: ["title", "content", "ariaLabel", "ok", "cancel", "theme"], options: t})
  		}
  
  		angular.module("material.components.dialog", ["material.core", "material.components.backdrop"]).directive("mdDialog", e).provider("$mdDialog", t), e.$inject = ["$$rAF", "$mdTheming"], t.$inject = ["$$interimElementProvider"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e() {
  		}
  
  		function t(t) {
  			return {restrict: "E", link: t, controller: [e]}
  		}
  
  		angular.module("material.components.divider", ["material.core"]).directive("mdDivider", t), t.$inject = ["$mdTheming"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, n, r, o) {
  			function a(t, a, i, c) {
  				function d() {
  					for (var e in n.MEDIA)o(e), o.getQuery(n.MEDIA[e]).addListener(M);
  					return o.watchResponsiveAttributes(["md-cols", "md-row-height"], i, s)
  				}
  
  				function l() {
  					A();
  					for (var e in n.MEDIA)o.getQuery(n.MEDIA[e]).removeListener(M)
  				}
  
  				function s(e) {
  					null == e ? c.invalidateLayout() : o(e) && c.invalidateLayout()
  				}
  
  				function m() {
  					var e = p(), n = g(), o = E(), i = v(), c = b(), d = r(n, h(), p()).map(function (t, r) {
  						return {
  							grid: {element: a, style: f(n, r, c, o, i)}, tiles: t.map(function (t, a) {
  								return {element: angular.element(e[a]), style: u(t.position, t.spans, n, r, c, o, i)}
  							})
  						}
  					}).reflow().performance();
  					t.mdOnLayout({$event: {performance: d}})
  				}
  
  				function u(e, t, n, r, o, a, i) {
  					var c = 1 / n * 100, d = 1 === n ? 0 : (n - 1) / n, l = T({
  						share: c,
  						gutterShare: d,
  						gutter: o
  					}), s = {
  						left: w({unit: l, offset: e.col, gutter: o}),
  						width: k({unit: l, span: t.col, gutter: o}),
  						paddingTop: "",
  						marginTop: "",
  						top: "",
  						height: ""
  					};
  					switch (a) {
  						case"fixed":
  							s.top = w({unit: i, offset: e.row, gutter: o}), s.height = k({
  								unit: i,
  								span: t.row,
  								gutter: o
  							});
  							break;
  						case"ratio":
  							var m = c * (1 / i), u = T({share: m, gutterShare: d, gutter: o});
  							s.paddingTop = k({unit: u, span: t.row, gutter: o}), s.marginTop = w({
  								unit: u,
  								offset: e.row,
  								gutter: o
  							});
  							break;
  						case"fit":
  							var f = 1 === r ? 0 : (r - 1) / r, m = 1 / r * 100, u = T({
  								share: m,
  								gutterShare: f,
  								gutter: o
  							});
  							s.top = w({unit: u, offset: e.row, gutter: o}), s.height = k({
  								unit: u,
  								span: t.row,
  								gutter: o
  							})
  					}
  					return s
  				}
  
  				function f(e, t, n, r, o) {
  					var a = {height: "", paddingBottom: ""};
  					switch (r) {
  						case"fixed":
  							a.height = k({unit: o, span: t, gutter: n});
  							break;
  						case"ratio":
  							var i = 1 === e ? 0 : (e - 1) / e, c = 1 / e * 100, d = c * (1 / o), l = T({
  								share: d,
  								gutterShare: i,
  								gutter: n
  							});
  							a.paddingBottom = k({unit: l, span: t, gutter: n});
  							break;
  						case"fit":
  					}
  					return a
  				}
  
  				function p() {
  					return c.tiles.map(function (e) {
  						return e.element
  					})
  				}
  
  				function h() {
  					return c.tiles.map(function (e) {
  						return {
  							row: parseInt(o.getResponsiveAttribute(e.attrs, "md-rowspan"), 10) || 1,
  							col: parseInt(o.getResponsiveAttribute(e.attrs, "md-colspan"), 10) || 1
  						}
  					})
  				}
  
  				function g() {
  					var e = parseInt(o.getResponsiveAttribute(i, "md-cols"), 10);
  					if (isNaN(e))throw"md-grid-list: md-cols attribute was not found, or contained a non-numeric value";
  					return e
  				}
  
  				function b() {
  					return $(o.getResponsiveAttribute(i, "md-gutter") || 1)
  				}
  
  				function v() {
  					var e = o.getResponsiveAttribute(i, "md-row-height");
  					switch (E()) {
  						case"fixed":
  							return $(e);
  						case"ratio":
  							var t = e.split(":");
  							return parseFloat(t[0]) / parseFloat(t[1]);
  						case"fit":
  							return 0
  					}
  				}
  
  				function E() {
  					var e = o.getResponsiveAttribute(i, "md-row-height");
  					return "fit" == e ? "fit" : -1 !== e.indexOf(":") ? "ratio" : "fixed"
  				}
  
  				function $(e) {
  					return /\D$/.test(e) ? e : e + "px"
  				}
  
  				a.attr("role", "list"), c.layoutDelegate = m;
  				var M = angular.bind(c, c.invalidateLayout), A = d();
  				t.$on("$destroy", l);
  				var T = e("{{ share }}% - ({{ gutter }} * {{ gutterShare }})"), w = e("calc(({{ unit }}) * {{ offset }} + {{ offset }} * {{ gutter }})"), k = e("calc(({{ unit }}) * {{ span }} + ({{ span }} - 1) * {{ gutter }})")
  			}
  
  			return {restrict: "E", controller: t, scope: {mdOnLayout: "&"}, link: a}
  		}
  
  		function t(e) {
  			this.invalidated = !1, this.$timeout_ = e, this.tiles = [], this.layoutDelegate = angular.noop
  		}
  
  		function n(e) {
  			function t(t, n) {
  				var a, i, c, d, l, s, i;
  				return d = e.time(function () {
  					i = r(t, n)
  				}), a = {
  					layoutInfo: function () {
  						return i
  					}, map: function (t) {
  						return l = e.time(function () {
  							var e = a.layoutInfo();
  							c = t(e.positioning, e.rowCount)
  						}), a
  					}, reflow: function (t) {
  						return s = e.time(function () {
  							var e = t || o;
  							e(c.grid, c.tiles)
  						}), a
  					}, performance: function () {
  						return {tileCount: n.length, layoutTime: d, mapTime: l, reflowTime: s, totalTime: d + l + s}
  					}
  				}
  			}
  
  			function n(e, t) {
  				e.element.css(e.style), t.forEach(function (e) {
  					e.element.css(e.style)
  				})
  			}
  
  			function r(e, t) {
  				function n(t, n) {
  					if (t.col > e)throw"md-grid-list: Tile at position " + n + " has a colspan (" + t.col + ") that exceeds the column count (" + e + ")";
  					for (var i = 0, s = 0; s - i < t.col;)c >= e ? r() : (i = l.indexOf(0, c), -1 !== i && -1 !== (s = a(i + 1)) ? c = s + 1 : (i = s = 0, r()));
  					return o(i, t.col, t.row), c = i + t.col, {col: i, row: d}
  				}
  
  				function r() {
  					c = 0, d++, o(0, e, -1)
  				}
  
  				function o(e, t, n) {
  					for (var r = e; e + t > r; r++)l[r] = Math.max(l[r] + n, 0)
  				}
  
  				function a(e) {
  					var t;
  					for (t = e; t < l.length; t++)if (0 !== l[t])return t;
  					return t === l.length ? t : void 0
  				}
  
  				function i() {
  					for (var t = [], n = 0; e > n; n++)t.push(0);
  					return t
  				}
  
  				var c = 0, d = 0, l = i();
  				return {
  					positioning: t.map(function (e, t) {
  						return {spans: e, position: n(e, t)}
  					}), rowCount: d + Math.max.apply(Math, l)
  				}
  			}
  
  			var o = n;
  			return t.animateWith = function (e) {
  				o = angular.isFunction(e) ? e : n
  			}, t
  		}
  
  		function r(e) {
  			function t(t, n, r, o) {
  				n.attr("role", "listitem");
  				var a = e.watchResponsiveAttributes(["md-colspan", "md-rowspan"], r, angular.bind(o, o.invalidateLayout));
  				o.addTile(n, r, t.$parent.$index), t.$on("$destroy", function () {
  					a(), o.removeTile(n, r)
  				})
  			}
  
  			return {
  				restrict: "E",
  				require: "^mdGridList",
  				template: "<figure ng-transclude></figure>",
  				transclude: !0,
  				scope: {},
  				link: t
  			}
  		}
  
  		function o() {
  			return {template: "<figcaption ng-transclude></figcaption>", transclude: !0}
  		}
  
  		angular.module("material.components.gridList", ["material.core"]).directive("mdGridList", e).directive("mdGridTile", r).directive("mdGridTileFooter", o).directive("mdGridTileHeader", o).factory("$mdGridLayout", n), e.$inject = ["$interpolate", "$mdConstant", "$mdGridLayout", "$mdMedia", "$mdUtil"], t.$inject = ["$timeout"], t.prototype = {
  			addTile: function (e, t, n) {
  				var r = {element: e, attrs: t};
  				angular.isUndefined(n) ? this.tiles.push(r) : this.tiles.splice(n, 0, r), this.invalidateLayout()
  			}, removeTile: function (e, t) {
  				var n = this._findTileIndex(t);
  				-1 !== n && (this.tiles.splice(n, 1), this.invalidateLayout())
  			}, invalidateLayout: function () {
  				this.invalidated || (this.invalidated = !0, this.$timeout_(angular.bind(this, this.layout)))
  			}, layout: function () {
  				try {
  					this.layoutDelegate()
  				} finally {
  					this.invalidated = !1
  				}
  			}, _findTileIndex: function (e) {
  				for (var t = 0; t < this.tiles.length; t++)if (this.tiles[t].attrs == e)return t;
  				return -1
  			}
  		}, n.$inject = ["$mdUtil"], r.$inject = ["$mdMedia"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n) {
  			function r(e, t) {
  				return t.mdFontIcon ? '<span class="md-font" ng-class="fontIcon"></span>' : ""
  			}
  
  			function o(r, o, a) {
  				function i() {
  					var e = o.parent();
  					return e.attr("aria-label") || e.text() ? !0 : e.parent().attr("aria-label") || e.parent().text() ? !0 : !1
  				}
  
  				t(o);
  				var c = a.alt || r.fontIcon || r.svgIcon, d = a.$normalize(a.$attr.mdSvgIcon || a.$attr.mdSvgSrc || "");
  				"" == a.alt || i() ? n.expect(o, "aria-hidden", "true") : (n.expect(o, "aria-label", c), n.expect(o, "role", "img")), d && a.$observe(d, function (t) {
  					o.empty(), t && e(t).then(function (e) {
  						o.append(e)
  					})
  				})
  			}
  
  			return {
  				scope: {fontIcon: "@mdFontIcon", svgIcon: "@mdSvgIcon", svgSrc: "@mdSvgSrc"},
  				restrict: "E",
  				template: r,
  				link: o
  			}
  		}
  
  		angular.module("material.components.icon", ["material.core"]).directive("mdIcon", e), e.$inject = ["$mdIcon", "$mdTheming", "$mdAria"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e() {
  		}
  
  		function t(e, t) {
  			this.url = e, this.iconSize = t || r.defaultIconSize
  		}
  
  		function n(e, t, n, r, o) {
  			function a(t) {
  				return function (n) {
  					return h[t] = m(n) ? n : new u(n, e[t]), h[t].clone()
  				}
  			}
  
  			function i(t) {
  				var r = e[t];
  				return r ? d(r.url).then(function (e) {
  					return new u(e, r)
  				}) : n.reject(t)
  			}
  
  			function c(t) {
  				function r(e) {
  					var r = t.slice(t.lastIndexOf(":") + 1), o = e.querySelector("#" + r);
  					return o ? new u(o, a) : n.reject(t)
  				}
  
  				var o = t.substring(0, t.lastIndexOf(":")) || "$default", a = e[o];
  				return a ? d(a.url).then(r) : n.reject(t)
  			}
  
  			function d(e) {
  				return t.get(e, {cache: o}).then(function (e) {
  					for (var t = angular.element(e.data), n = 0; n < t.length; ++n)if ("svg" == t[n].nodeName)return t[n]
  				})
  			}
  
  			function l(e) {
  				var t;
  				return angular.isString(e) && (t = "icon " + e + " not found", r.warn(t)), n.reject(t || e)
  			}
  
  			function s(e) {
  				var t = angular.isString(e) ? e : e.message || e.data || e.statusText;
  				return r.warn(t), n.reject(t)
  			}
  
  			function m(e) {
  				return angular.isDefined(e.element) && angular.isDefined(e.config)
  			}
  
  			function u(e, t) {
  				"svg" != e.tagName && (e = angular.element('<svg xmlns="http://www.w3.org/2000/svg">').append(e)[0]), e = angular.element(e), e.attr("xmlns") || e.attr("xmlns", "http://www.w3.org/2000/svg"), this.element = e, this.config = t, this.prepare()
  			}
  
  			function f() {
  				var t = this.config ? this.config.iconSize : e.defaultIconSize, n = angular.element(this.element);
  				n.attr({
  					fit: "",
  					height: "100%",
  					width: "100%",
  					preserveAspectRatio: "xMidYMid meet",
  					viewBox: n.attr("viewBox") || "0 0 " + t + " " + t
  				}).css({"pointer-events": "none", display: "block"}), this.element = n
  			}
  
  			function p() {
  				return angular.element(this.element[0].cloneNode(!0))
  			}
  
  			var h = {}, g = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/i;
  			return u.prototype = {clone: p, prepare: f}, function (e) {
  				return e = e || "", h[e] ? n.when(h[e].clone()) : g.test(e) ? d(e).then(a(e)) : (-1 == e.indexOf(":") && (e = "$default:" + e), i(e).catch(c).catch(l).catch(s).then(a(e)))
  			}
  		}
  
  		angular.module("material.components.icon").provider("$mdIcon", e);
  		var r = {defaultIconSize: 24};
  		e.prototype = {
  			icon: function (e, n, o) {
  				return -1 == e.indexOf(":") && (e = "$default:" + e), r[e] = new t(n, o), this
  			}, iconSet: function (e, n, o) {
  				return r[e] = new t(n, o), this
  			}, defaultIconSet: function (e, n) {
  				var o = "$default";
  				return r[o] || (r[o] = new t(e, n)), r[o].iconSize = n || r.defaultIconSize, this
  			}, defaultIconSize: function (e) {
  				return r.defaultIconSize = e, this
  			}, preloadIcons: function (e) {
  				var t = this, n = [{
  					id: "tabs-arrow",
  					url: "tabs-arrow.svg",
  					svg: '<svg version="1.1" x="0px" y="0px" viewBox="0 0 24 24"><g id="tabs-arrow"><polygon points="15.4,7.4 14,6 8,12 14,18 15.4,16.6 10.8,12 "/></g></svg>'
  				}, {
  					id: "close",
  					url: "close.svg",
  					svg: '<svg version="1.1" x="0px" y="0px" viewBox="0 0 24 24"><g id="close"><path d="M19 6.41l-1.41-1.41-5.59 5.59-5.59-5.59-1.41 1.41 5.59 5.59-5.59 5.59 1.41 1.41 5.59-5.59 5.59 5.59 1.41-1.41-5.59-5.59z"/></g></svg>'
  				}, {
  					id: "cancel",
  					url: "cancel.svg",
  					svg: '<svg version="1.1" x="0px" y="0px" viewBox="0 0 24 24"><g id="cancel"><path d="M12 2c-5.53 0-10 4.47-10 10s4.47 10 10 10 10-4.47 10-10-4.47-10-10-10zm5 13.59l-1.41 1.41-3.59-3.59-3.59 3.59-1.41-1.41 3.59-3.59-3.59-3.59 1.41-1.41 3.59 3.59 3.59-3.59 1.41 1.41-3.59 3.59 3.59 3.59z"/></g></svg>'
  				}];
  				n.forEach(function (n) {
  					t.icon(n.id, n.url), e.put(n.url, n.svg)
  				})
  			}, $get: ["$http", "$q", "$log", "$templateCache", function (e, t, o, a) {
  				return this.preloadIcons(a), new n(r, e, t, o, a)
  			}]
  		}
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		function e(e, t) {
  			function n(t, n) {
  				e(n)
  			}
  
  			function r(e, n, r) {
  				var o = this;
  				o.isErrorGetter = r.mdIsError && t(r.mdIsError), o.element = n, o.setFocused = function (e) {
  					n.toggleClass("md-input-focused", !!e)
  				}, o.setHasValue = function (e) {
  					n.toggleClass("md-input-has-value", !!e)
  				}, o.setInvalid = function (e) {
  					n.toggleClass("md-input-invalid", !!e)
  				}, e.$watch(function () {
  					return o.label && o.input
  				}, function (e) {
  					e && !o.label.attr("for") && o.label.attr("for", o.input.attr("id"))
  				})
  			}
  
  			return r.$inject = ["$scope", "$element", "$attrs"], {restrict: "E", link: n, controller: r}
  		}
  
  		function t() {
  			return {
  				restrict: "E", require: "^?mdInputContainer", link: function (e, t, n, r) {
  					r && !n.mdNoFloat && (r.label = t, e.$on("$destroy", function () {
  						r.label = null
  					}))
  				}
  			}
  		}
  
  		function n(e, t) {
  			function n(n, r, o, a) {
  				function i(e) {
  					return l.setHasValue(!s.$isEmpty(e)), e
  				}
  
  				function c() {
  					l.setHasValue(r.val().length > 0 || (r[0].validity || {}).badInput)
  				}
  
  				function d() {
  					function o(e) {
  						return l(), e
  					}
  
  					function a() {
  						d.style.height = "auto", d.scrollTop = 0;
  						var e = i();
  						e && (d.style.height = e + "px")
  					}
  
  					function i() {
  						var e = d.scrollHeight - d.offsetHeight;
  						return d.offsetHeight + (e > 0 ? e : 0)
  					}
  
  					function c() {
  						d.scrollTop = 0;
  						var e = d.scrollHeight - d.offsetHeight, t = d.offsetHeight + e;
  						d.style.height = t + "px"
  					}
  
  					var d = r[0], l = e.debounce(a, 1);
  					s ? (s.$formatters.push(o), s.$viewChangeListeners.push(o)) : l(), r.on("keydown input", l), r.on("scroll", c), angular.element(t).on("resize", l), n.$on("$destroy", function () {
  						angular.element(t).off("resize", l)
  					})
  				}
  
  				var l = a[0], s = a[1] || e.fakeNgModel(), m = angular.isDefined(o.readonly);
  				if (l) {
  					if (l.input)throw new Error("<md-input-container> can only have *one* <input> or <textarea> child element!");
  					l.input = r, r.addClass("md-input"), r.attr("id") || r.attr("id", "input_" + e.nextUid()), "textarea" === r[0].tagName.toLowerCase() && d();
  					var u = !1, f = l.isErrorGetter || function () {
  							return s.$invalid && (u || s.$touched)
  						};
  					n.$watch(f, l.setInvalid), s.$parsers.push(i), s.$formatters.push(i), r.on("input", c), m || r.on("focus", function () {
  						u = !0, l.setFocused(!0), n.$evalAsync()
  					}).on("blur", function () {
  						l.setFocused(!1), c()
  					}), n.$on("$destroy", function () {
  						l.setFocused(!1), l.setHasValue(!1), l.input = null
  					})
  				}
  			}
  
  			return {restrict: "E", require: ["^?mdInputContainer", "?ngModel"], link: n}
  		}
  
  		function r(e) {
  			function t(t, n, r, o) {
  				function a(e) {
  					return l.text((n.val() || e || "").length + "/" + i), e
  				}
  
  				var i, c = o[0], d = o[1], l = angular.element('<div class="md-char-counter">');
  				r.$set("ngTrim", "false"), d.element.append(l), c.$formatters.push(a), c.$viewChangeListeners.push(a), n.on("input keydown", function () {
  					a()
  				}), t.$watch(r.mdMaxlength, function (t) {
  					i = t, angular.isNumber(t) && t > 0 ? (l.parent().length || e.enter(l, d.element, angular.element(d.element[0].lastElementChild)), a()) : e.leave(l)
  				}), c.$validators["md-maxlength"] = function (e, t) {
  					return !angular.isNumber(i) || 0 > i ? !0 : (e || n.val() || t || "").length <= i
  				}
  			}
  
  			return {restrict: "A", require: ["ngModel", "^mdInputContainer"], link: t}
  		}
  
  		function o() {
  			function e(e, t, n, r) {
  				if (r && !angular.isDefined(r.element.attr("md-no-float"))) {
  					var o = n.placeholder;
  					t.removeAttr("placeholder"), r.element.append('<div class="md-placeholder">' + o + "</div>")
  				}
  			}
  
  			return {restrict: "A", require: "^^?mdInputContainer", link: e}
  		}
  
  		angular.module("material.components.input", ["material.core"]).directive("mdInputContainer", e).directive("label", t).directive("input", n).directive("textarea", n).directive("mdMaxlength", r).directive("placeholder", o), e.$inject = ["$mdTheming", "$parse"], n.$inject = ["$mdUtil", "$window"], r.$inject = ["$animate"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e() {
  			return {
  				restrict: "E", link: function (e, t) {
  					t.attr({role: "list"})
  				}
  			}
  		}
  
  		function t() {
  			return {
  				restrict: "E", link: function (e, t) {
  					t.attr({role: "listitem"})
  				}
  			}
  		}
  
  		angular.module("material.components.list", ["material.core"]).directive("mdList", e).directive("mdItem", t).directive("mdListItem", t)
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n) {
  			function r(e) {
  				return e.attr("aria-valuemin", 0), e.attr("aria-valuemax", 100), e.attr("role", "progressbar"), o
  			}
  
  			function o(e, r, o) {
  				n(r);
  				var d, l, s, m, u = r[0], f = u.querySelectorAll(".md-fill, .md-mask.md-full"), p = u.querySelectorAll(".md-fill.md-fix"), h = o.mdDiameter || 48, g = h / 48;
  				u.style[t.CSS.TRANSFORM] = "scale(" + g.toString() + ")", o.$observe("value", function (e) {
  					for (l = a(e), s = i[l], m = c[l], r.attr("aria-valuenow", l), d = 0; d < f.length; d++)f[d].style[t.CSS.TRANSFORM] = s;
  					for (d = 0; d < p.length; d++)p[d].style[t.CSS.TRANSFORM] = m
  				})
  			}
  
  			function a(e) {
  				return e > 100 ? 100 : 0 > e ? 0 : Math.ceil(e || 0)
  			}
  
  			for (var i = new Array(101), c = new Array(101), d = 0; 101 > d; d++) {
  				var l = d / 100, s = Math.floor(180 * l);
  				i[d] = "rotate(" + s.toString() + "deg)", c[d] = "rotate(" + (2 * s).toString() + "deg)"
  			}
  			return {
  				restrict: "E",
  				template: '<div class="md-spinner-wrapper"><div class="md-inner"><div class="md-gap"></div><div class="md-left"><div class="md-half-circle"></div></div><div class="md-right"><div class="md-half-circle"></div></div></div></div>',
  				compile: r
  			}
  		}
  
  		angular.module("material.components.progressCircular", ["material.core"]).directive("mdProgressCircular", e), e.$inject = ["$$rAF", "$mdConstant", "$mdTheming"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, n, r) {
  			function o(e) {
  				return e.attr("aria-valuemin", 0), e.attr("aria-valuemax", 100), e.attr("role", "progressbar"), a
  			}
  
  			function a(o, a, c) {
  				r(a);
  				var d = a[0].querySelector(".md-bar1").style, l = a[0].querySelector(".md-bar2").style, s = angular.element(a[0].querySelector(".md-container"));
  				c.$observe("value", function (e) {
  					if ("query" != c.mdMode) {
  						var r = i(e);
  						a.attr("aria-valuenow", r), l[n.CSS.TRANSFORM] = t[r]
  					}
  				}), c.$observe("mdBufferValue", function (e) {
  					d[n.CSS.TRANSFORM] = t[i(e)]
  				}), e(function () {
  					s.addClass("md-ready")
  				})
  			}
  
  			function i(e) {
  				return e > 100 ? 100 : 0 > e ? 0 : Math.ceil(e || 0)
  			}
  
  			return {
  				restrict: "E",
  				template: '<div class="md-container"><div class="md-dashed"></div><div class="md-bar md-bar1"></div><div class="md-bar md-bar2"></div></div>',
  				compile: o
  			}
  		}
  
  		angular.module("material.components.progressLinear", ["material.core"]).directive("mdProgressLinear", e), e.$inject = ["$$rAF", "$mdConstant", "$mdTheming"];
  		var t = function () {
  			function e(e) {
  				var t = e / 100, n = (e - 100) / 2;
  				return "translateX(" + n.toString() + "%) scale(" + t.toString() + ", 1)"
  			}
  
  			for (var t = new Array(101), n = 0; 101 > n; n++)t[n] = e(n);
  			return t
  		}()
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n) {
  			function r(r, o, a, i) {
  				function c(n) {
  					switch (n.keyCode) {
  						case t.KEY_CODE.LEFT_ARROW:
  						case t.KEY_CODE.UP_ARROW:
  							n.preventDefault(), d.selectPrevious();
  							break;
  						case t.KEY_CODE.RIGHT_ARROW:
  						case t.KEY_CODE.DOWN_ARROW:
  							n.preventDefault(), d.selectNext();
  							break;
  						case t.KEY_CODE.ENTER:
  							var r = angular.element(e.getClosest(o[0], "form"));
  							r.length > 0 && r.triggerHandler("submit")
  					}
  				}
  
  				n(o);
  				var d = i[0], l = i[1] || e.fakeNgModel();
  				d.init(l), o.attr({role: "radiogroup", tabIndex: o.attr("tabindex") || "0"}).on("keydown", c)
  			}
  
  			function o(e) {
  				this._radioButtonRenderFns = [], this.$element = e
  			}
  
  			function a() {
  				return {
  					init: function (e) {
  						this._ngModelCtrl = e, this._ngModelCtrl.$render = angular.bind(this, this.render)
  					}, add: function (e) {
  						this._radioButtonRenderFns.push(e)
  					}, remove: function (e) {
  						var t = this._radioButtonRenderFns.indexOf(e);
  						-1 !== t && this._radioButtonRenderFns.splice(t, 1)
  					}, render: function () {
  						this._radioButtonRenderFns.forEach(function (e) {
  							e()
  						})
  					}, setViewValue: function (e, t) {
  						this._ngModelCtrl.$setViewValue(e, t), this.render()
  					}, getViewValue: function () {
  						return this._ngModelCtrl.$viewValue
  					}, selectNext: function () {
  						return i(this.$element, 1)
  					}, selectPrevious: function () {
  						return i(this.$element, -1)
  					}, setActiveDescendant: function (e) {
  						this.$element.attr("aria-activedescendant", e)
  					}
  				}
  			}
  
  			function i(t, n) {
  				var r = e.iterator(t[0].querySelectorAll("md-radio-button"), !0);
  				if (r.count()) {
  					var o = function (e) {
  						return !angular.element(e).attr("disabled")
  					}, a = t[0].querySelector("md-radio-button.md-checked"), i = r[0 > n ? "previous" : "next"](a, o) || r.first();
  					angular.element(i).triggerHandler("click")
  				}
  			}
  
  			return o.prototype = a(), {
  				restrict: "E",
  				controller: ["$element", o],
  				require: ["mdRadioGroup", "?ngModel"],
  				link: {pre: r}
  			}
  		}
  
  		function t(e, t, n) {
  			function r(r, a, i, c) {
  				function d(e) {
  					a[0].hasAttribute("disabled") || r.$apply(function () {
  						c.setViewValue(i.value, e && e.type)
  					})
  				}
  
  				function l() {
  					var e = c.getViewValue() == i.value;
  					e !== m && (m = e, a.attr("aria-checked", e), e ? (a.addClass(o), c.setActiveDescendant(a.attr("id"))) : a.removeClass(o))
  				}
  
  				function s(n, r) {
  					function o() {
  						return i.id || "radio_" + t.nextUid()
  					}
  
  					r.ariaId = o(), n.attr({
  						id: r.ariaId,
  						role: "radio",
  						"aria-checked": "false"
  					}), e.expectWithText(n, "aria-label")
  				}
  
  				var m;
  				n(a), s(a, r), c.add(l), i.$observe("value", l), a.on("click", d).on("$destroy", function () {
  					c.remove(l)
  				})
  			}
  
  			var o = "md-checked";
  			return {
  				restrict: "E",
  				require: "^mdRadioGroup",
  				transclude: !0,
  				template: '<div class="md-container" md-ink-ripple md-ink-ripple-checkbox><div class="md-off"></div><div class="md-on"></div></div><div ng-transclude class="md-label"></div>',
  				link: r
  			}
  		}
  
  		angular.module("material.components.radioButton", ["material.core"]).directive("mdRadioGroup", e).directive("mdRadioButton", t), e.$inject = ["$mdUtil", "$mdConstant", "$mdTheming"], t.$inject = ["$mdAria", "$mdUtil", "$mdTheming"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n, r, o) {
  			function a(r, a) {
  				var i = r.find("md-select-label").remove();
  				i.length || (i = angular.element("<md-select-label><span></span></md-select-label>")), i.append('<span class="md-select-icon" aria-hidden="true"></span>'), i.addClass("md-select-label"), i.attr("id", "select_label_" + t.nextUid()), r.find("md-content").length || r.append(angular.element("<md-content>").append(r.contents())), a.mdOnOpen && r.find("md-content").prepend(angular.element("<md-progress-circular>").attr("md-mode", "indeterminate").attr("ng-hide", "$$loadingAsyncDone").wrap("<div>").parent());
  				var c = '<div class="md-select-menu-container"><md-select-menu ' + (angular.isDefined(a.multiple) ? "multiple" : "") + ">" + r.html() + "</md-select-menu></div>";
  				return r.empty().append(i), n(r), function (n, r, a, i) {
  					function d() {
  						if (f) {
  							var e = f.find("md-select-menu").controller("mdSelectMenu");
  							h.setLabelText(e.selectedLabels())
  						}
  					}
  
  					function l() {
  						f = angular.element(c);
  						var e = f.find("md-select-menu");
  						e.data("$ngModelController", g), e.data("$mdSelectController", h), p = n.$new(), f = o(f)(p)
  					}
  
  					function s(e) {
  						var t = [32, 13, 38, 40];
  						-1 != t.indexOf(e.keyCode) && (e.preventDefault(), m(e))
  					}
  
  					function m() {
  						n.$evalAsync(function () {
  							u = !0, e.show({
  								scope: p,
  								preserveScope: !0,
  								skipCompile: !0,
  								element: f,
  								target: r[0],
  								hasBackdrop: !0,
  								loadingAsync: a.mdOnOpen ? n.$eval(a.mdOnOpen) : !1
  							}).then(function () {
  								u = !1
  							})
  						})
  					}
  
  					var u, f, p, h = i[0], g = i[1], b = r.find("md-select-label"), v = 0 !== b.text().length;
  					l();
  					var E = g.$render;
  					g.$render = function () {
  						E(), d()
  					}, h.setLabelText = function (e) {
  						if (!v) {
  							h.setIsPlaceholder(!e);
  							var t = e || a.placeholder || "", n = v ? b : b.children().eq(0);
  							n.text(t)
  						}
  					}, h.setIsPlaceholder = function (e) {
  						e ? b.addClass("md-placeholder") : b.removeClass("md-placeholder")
  					}, n.$$postDigest(d), a.$observe("disabled", function (e) {
  						"string" == typeof e && (e = !0), e ? (r.attr("tabindex", -1), r.off("click", m), r.off("keydown", s)) : (r.attr("tabindex", 0), r.on("click", m), r.on("keydown", s))
  					}), a.disabled || a.ngDisabled || (r.attr("tabindex", 0), r.on("click", m), r.on("keydown", s)), r.attr({
  						role: "combobox",
  						id: "select_" + t.nextUid(),
  						"aria-haspopup": !0,
  						"aria-expanded": "false",
  						"aria-labelledby": b.attr("id")
  					}), n.$on("$destroy", function () {
  						u ? e.cancel().then(function () {
  							f.remove()
  						}) : f.remove()
  					})
  				}
  			}
  
  			r.startSymbol(), r.endSymbol();
  			return {
  				restrict: "E", require: ["mdSelect", "ngModel"], compile: a, controller: function () {
  				}
  			}
  		}
  
  		function t(e, t, n) {
  			function r(e, r, o, a) {
  				function i() {
  					r.attr({
  						id: "select_menu_" + t.nextUid(),
  						role: "listbox",
  						"aria-multiselectable": l.isMultiple ? "true" : "false"
  					})
  				}
  
  				function c(e) {
  					(13 == e.keyCode || 32 == e.keyCode) && d(e)
  				}
  
  				function d(n) {
  					var r = t.getClosest(n.target, "md-option"), o = r && angular.element(r).data("$mdOptionController");
  					if (r && o) {
  						var a = l.hashGetter(o.value), i = angular.isDefined(l.selected[a]);
  						e.$apply(function () {
  							l.isMultiple ? i ? l.deselect(a) : l.select(a, o.value) : i || (l.deselect(Object.keys(l.selected)[0]), l.select(a, o.value)), l.refreshViewValue()
  						})
  					}
  				}
  
  				var l = a[0], s = a[1];
  				n(r), r.on("click", d), r.on("keypress", c), s && l.init(s), i()
  			}
  
  			function o(t, n, r) {
  				function o() {
  					var e = d.ngModel.$modelValue || d.ngModel.$viewValue;
  					if (angular.isArray(e)) {
  						var t = Object.keys(d.selected), n = e.map(d.hashGetter), r = t.filter(function (e) {
  							return -1 === n.indexOf(e)
  						});
  						r.forEach(d.deselect), n.forEach(function (t, n) {
  							d.select(t, e[n])
  						})
  					}
  				}
  
  				function i() {
  					var e = d.ngModel.$viewValue || d.ngModel.$modelValue;
  					Object.keys(d.selected).forEach(d.deselect), d.select(d.hashGetter(e), e)
  				}
  
  				var d = this;
  				d.isMultiple = angular.isDefined(n.multiple), d.selected = {}, d.options = {}, d.init = function (r) {
  					function a(e, t) {
  						return angular.isArray(e || t || [])
  					}
  
  					if (d.ngModel = r, r.$options && r.$options.trackBy) {
  						var l = {}, s = e(r.$options.trackBy);
  						d.hashGetter = function (e, n) {
  							return l.$value = e, s(n || t, l)
  						}
  					} else d.hashGetter = function (e) {
  						return angular.isObject(e) ? "$$object_" + (e.$$mdSelectId || (e.$$mdSelectId = ++c)) : e
  					};
  					d.isMultiple ? (r.$validators["md-multiple"] = a, r.$render = o, t.$watchCollection(n.ngModel, function (e) {
  						a(e) && o(e)
  					})) : r.$render = i
  				}, d.selectedLabels = function () {
  					var e = a(r[0].querySelectorAll("md-option[selected]"));
  					return e.length ? e.map(function (e) {
  						return e.textContent
  					}).join(", ") : ""
  				}, d.select = function (e, t) {
  					var n = d.options[e];
  					n && n.setSelected(!0), d.selected[e] = t
  				}, d.deselect = function (e) {
  					var t = d.options[e];
  					t && t.setSelected(!1), delete d.selected[e]
  				}, d.addOption = function (e, t) {
  					if (angular.isDefined(d.options[e]))throw new Error('Duplicate md-option values are not allowed in a select. Duplicate value "' + t.value + '" found.');
  					d.options[e] = t, angular.isDefined(d.selected[e]) && (d.select(e, t.value), d.refreshViewValue())
  				}, d.removeOption = function (e) {
  					delete d.options[e]
  				}, d.refreshViewValue = function () {
  					var e, t = [];
  					for (var n in d.selected)(e = d.options[n]) ? t.push(e.value) : t.push(d.selected[n]);
  					d.ngModel.$setViewValue(d.isMultiple ? t : t[0])
  				}
  			}
  
  			return o.$inject = ["$scope", "$attrs", "$element"], {
  				restrict: "E",
  				require: ["mdSelectMenu", "?ngModel"],
  				controller: o,
  				link: {pre: r}
  			}
  		}
  
  		function n(e, t) {
  			function n(e, t) {
  				return e.append(angular.element('<div class="md-text">').append(e.contents())), void 0 === t.tabindex && e.attr("tabindex", 0), r
  			}
  
  			function r(n, r, o, a) {
  				function i(e, t) {
  					var r = l.hashGetter(t, n), o = l.hashGetter(e, n);
  					d.hashKey = o, d.value = e, l.removeOption(r, d), l.addOption(o, d)
  				}
  
  				function c() {
  					r.attr({role: "option", "aria-selected": "false", id: "select_option_" + t.nextUid()})
  				}
  
  				var d = a[0], l = a[1];
  				if (angular.isDefined(o.ngValue))n.$watch(o.ngValue, i); else {
  					if (!angular.isDefined(o.value))throw new Error("Expected either ngValue or value attr");
  					i(o.value)
  				}
  				o.$observe("selected", function (e) {
  					angular.isDefined(e) && (e ? (l.isMultiple || l.deselect(Object.keys(l.selected)[0]), l.select(d.hashKey, d.value)) : l.deselect(d.hashKey), l.refreshViewValue(), l.ngModel.$render())
  				}), e.attachButtonBehavior(n, r), c(), n.$on("$destroy", function () {
  					l.removeOption(d.hashKey, d)
  				})
  			}
  
  			function o(e) {
  				this.selected = !1, this.setSelected = function (t) {
  					t && !this.selected ? e.attr({
  						selected: "selected",
  						"aria-selected": "true"
  					}) : !t && this.selected && (e.removeAttr("selected"), e.attr("aria-selected", "false")), this.selected = t
  				}
  			}
  
  			return o.$inject = ["$element"], {
  				restrict: "E",
  				require: ["mdOption", "^^mdSelectMenu"],
  				controller: o,
  				compile: n
  			}
  		}
  
  		function r() {
  			function e(e, t) {
  				var n = e.find("label");
  				n.length || (n = angular.element("<label>"), e.prepend(n)), t.label && n.text(t.label)
  			}
  
  			return {restrict: "E", compile: e}
  		}
  
  		function o(e) {
  			function t(e, t, o, c, d, l) {
  				function s(n, r, i) {
  					function s() {
  						i.selectEl.attr("aria-labelledby", i.target.attr("id")), i.target.attr("aria-owns", i.selectEl.attr("id")), i.target.attr("aria-expanded", "true")
  					}
  
  					function m() {
  						function o(e) {
  							var t = a(f), n = t.indexOf(i.focusedNode);
  							-1 === n ? n = 0 : "next" === e && n < t.length - 1 ? n++ : "prev" === e && n > 0 && n--;
  							var r = i.focusedNode = t[n];
  							r && r.focus()
  						}
  
  						function d() {
  							o("next")
  						}
  
  						function l() {
  							o("prev")
  						}
  
  						function s() {
  							i.restoreFocus = !0, n.$evalAsync(function () {
  								e.hide(m.ngModel.$viewValue)
  							})
  						}
  
  						if (!i.isRemoved) {
  							var m = i.selectEl.controller("mdSelectMenu") || {};
  							r.addClass("md-clickable"), i.backdrop && i.backdrop.on("click", function (t) {
  								t.preventDefault(), t.stopPropagation(), i.restoreFocus = !1, n.$apply(e.cancel)
  							}), i.selectEl.on("keydown", function (r) {
  								switch (r.keyCode) {
  									case t.KEY_CODE.SPACE:
  									case t.KEY_CODE.ENTER:
  										var o = c.getClosest(r.target, "md-option");
  										o && (i.selectEl.triggerHandler({
  											type: "click",
  											target: o
  										}), r.preventDefault());
  										break;
  									case t.KEY_CODE.TAB:
  									case t.KEY_CODE.ESCAPE:
  										r.preventDefault(), i.restoreFocus = !0, n.$apply(e.cancel)
  								}
  							}), i.selectEl.on("keydown", function (e) {
  								switch (e.keyCode) {
  									case t.KEY_CODE.UP_ARROW:
  										return l();
  									case t.KEY_CODE.DOWN_ARROW:
  										return d()
  								}
  							}), m.isMultiple || (i.selectEl.on("click", s), i.selectEl.on("keydown", function (e) {
  								(32 == e.keyCode || 13 == e.keyCode) && s()
  							}))
  						}
  					}
  
  					if (!i.target)throw new Error('$mdSelect.show() expected a target element in options.target but got "' + i.target + '"!');
  					angular.extend(i, {
  						isRemoved: !1,
  						target: angular.element(i.target),
  						parent: angular.element(i.parent),
  						selectEl: r.find("md-select-menu"),
  						contentEl: r.find("md-content"),
  						backdrop: i.hasBackdrop && angular.element('<md-backdrop class="md-select-backdrop">')
  					}), s(), r.removeClass("md-leave");
  					var f = i.selectEl[0].getElementsByTagName("md-option");
  					return i.loadingAsync && i.loadingAsync.then && i.loadingAsync.then(function () {
  						n.$$loadingAsyncDone = !0, o(function () {
  							o(function () {
  								i.isRemoved || u(n, r, i)
  							})
  						})
  					}), i.disableParentScroll && (i.disableTarget = i.parent.find("md-content"), i.disableTarget.length || (i.disableTarget = i.parent), i.lastOverflow = i.disableTarget.css("overflow"), i.disableTarget.css("overflow", "hidden")), l(m, 75, !1), i.backdrop && (d.inherit(i.backdrop, i.parent), i.parent.append(i.backdrop)), i.parent.append(r), o(function () {
  						o(function () {
  							i.isRemoved || u(n, r, i)
  						})
  					}), c.transitionEndPromise(i.selectEl, {timeout: 350})
  				}
  
  				function m(e, t, n) {
  					n.isRemoved = !0, t.addClass("md-leave").removeClass("md-clickable"), n.target.attr("aria-expanded", "false"), n.disableParentScroll && c.floatingScrollbars() && (n.disableTarget.css("overflow", n.lastOverflow), delete n.lastOverflow, delete n.disableTarget);
  					var r = n.selectEl.controller("mdSelect");
  					return r && r.setLabelText(n.selectEl.controller("mdSelectMenu").selectedLabels()), c.transitionEndPromise(t, {timeout: 350}).then(function () {
  						t.removeClass("md-active"), n.parent[0].removeChild(t[0]), n.backdrop && n.backdrop.remove(), n.restoreFocus && n.target.focus()
  					})
  				}
  
  				function u(e, a, d) {
  					var l, s = a[0], m = d.target[0], u = d.parent[0], f = d.selectEl[0], p = d.contentEl[0], h = u.getBoundingClientRect(), g = c.clientRect(m, u), b = !1, v = {
  						left: u.scrollLeft + i,
  						top: u.scrollTop + i,
  						bottom: h.height + u.scrollTop - i,
  						right: h.width - i
  					}, E = {
  						top: g.top - v.top,
  						left: g.left - v.left,
  						right: v.right - (g.left + g.width),
  						bottom: v.bottom - (g.top + g.height)
  					}, $ = h.width - 2 * i, M = p.scrollHeight > p.offsetHeight, A = f.querySelector("md-option[selected]"), T = f.getElementsByTagName("md-option"), w = f.getElementsByTagName("md-optgroup");
  					l = A ? A : w.length ? w[0] : T.length ? T[0] : p.firstElementChild || p, p.offsetWidth > $ && (p.style["max-width"] = $ + "px"), b && (p.style["min-width"] = g.width + "px"), M && f.classList.add("md-overflow");
  					var k = f.getBoundingClientRect(), y = r(l);
  					if (l) {
  						var x = window.getComputedStyle(l);
  						y.paddingLeft = parseInt(x.paddingLeft, 10) || 0, y.paddingRight = parseInt(x.paddingRight, 10) || 0
  					}
  					var C = l;
  					if ("MD-OPTGROUP" === (C.tagName || "").toUpperCase() && (C = T[0] || p.firstElementChild || p), C && (d.focusedNode = C, C.focus()), M) {
  						var N = p.offsetHeight / 2;
  						p.scrollTop = y.top + y.height / 2 - N, E.top < N ? p.scrollTop = Math.min(y.top, p.scrollTop + N - E.top) : E.bottom < N && (p.scrollTop = Math.max(y.top + y.height - k.height, p.scrollTop - N + E.bottom))
  					}
  					var _, S, H;
  					b ? (_ = g.left, S = g.top + g.height, H = "50% 0", S + k.height > v.bottom && (S = g.top - k.height, H = "50% 100%")) : (_ = g.left + y.left - y.paddingLeft, S = g.top + g.height / 2 - y.height / 2 - y.top + p.scrollTop, H = y.left + g.width / 2 + "px " + (y.top + y.height / 2 - p.scrollTop) + "px 0px", s.style.minWidth = g.width + y.paddingLeft + y.paddingRight + "px");
  					var D = s.getBoundingClientRect();
  					s.style.left = n(v.left, _, v.right - D.width) + "px", s.style.top = n(v.top, S, v.bottom - D.height) + "px", f.style[t.CSS.TRANSFORM_ORIGIN] = H, f.style[t.CSS.TRANSFORM] = "scale(" + Math.min(g.width / k.width, 1) + "," + Math.min(g.height / k.height, 1) + ")", o(function () {
  						a.addClass("md-active"), f.style[t.CSS.TRANSFORM] = ""
  					})
  				}
  
  				return {
  					parent: "body",
  					onShow: s,
  					onRemove: m,
  					hasBackdrop: !0,
  					disableParentScroll: c.floatingScrollbars(),
  					themable: !0
  				}
  			}
  
  			function n(e, t, n) {
  				return Math.min(n, Math.max(t, e))
  			}
  
  			function r(e) {
  				return e ? {
  					left: e.offsetLeft,
  					top: e.offsetTop,
  					width: e.offsetWidth,
  					height: e.offsetHeight
  				} : {left: 0, top: 0, width: 0, height: 0}
  			}
  
  			return t.$inject = ["$mdSelect", "$mdConstant", "$$rAF", "$mdUtil", "$mdTheming", "$timeout"], e("$mdSelect").setDefaults({
  				methods: ["target"],
  				options: t
  			})
  		}
  
  		function a(e) {
  			for (var t = [], n = 0; n < e.length; ++n)t.push(e.item(n));
  			return t
  		}
  
  		var i = 8, c = 0;
  		angular.module("material.components.select", ["material.core", "material.components.backdrop"]).directive("mdSelect", e).directive("mdSelectMenu", t).directive("mdOption", n).directive("mdOptgroup", r).provider("$mdSelect", o), e.$inject = ["$mdSelect", "$mdUtil", "$mdTheming", "$interpolate", "$compile", "$parse"], t.$inject = ["$parse", "$mdUtil", "$mdTheming"], n.$inject = ["$mdInkRipple", "$mdUtil"], o.$inject = ["$$interimElementProvider"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t) {
  			return function (n) {
  				var r = "SideNav '" + n + "' is not available!", o = e.get(n);
  				return o || e.notFoundError(n), {
  					isOpen: function () {
  						return o && o.isOpen()
  					}, isLockedOpen: function () {
  						return o && o.isLockedOpen()
  					}, toggle: function () {
  						return o ? o.toggle() : t.reject(r)
  					}, open: function () {
  						return o ? o.open() : t.reject(r)
  					}, close: function () {
  						return o ? o.close() : t.reject(r)
  					}
  				}
  			}
  		}
  
  		function t(e, t, n, r, o, a, i, c, d, l) {
  			function s(s, m, u, f) {
  				function p(e, n) {
  					s.isLockedOpen = e, e === n ? m.toggleClass("md-locked-open", !!e) : t[e ? "addClass" : "removeClass"](m, "md-locked-open"), T.toggleClass("md-locked-open", !!e)
  				}
  
  				function h(e) {
  					var n = m.parent();
  					return n[e ? "on" : "off"]("keydown", b), T[e ? "on" : "off"]("click", v), e && (E = l[0].activeElement), $ = d.all([t[e ? "enter" : "leave"](T, n), t[e ? "removeClass" : "addClass"](m, "md-closed").then(function () {
  						s.isOpen && m.focus()
  					})])
  				}
  
  				function g(t) {
  					if (s.isOpen == t)return d.when(!0);
  					var n = d.defer();
  					return s.isOpen = t, e(function () {
  						$.then(function (e) {
  							s.isOpen || (E && E.focus(), E = null), n.resolve(e)
  						})
  					}, 0, !1), n.promise
  				}
  
  				function b(e) {
  					var t = e.keyCode === a.KEY_CODE.ESCAPE;
  					return t ? v(e) : d.when(!0)
  				}
  
  				function v(e) {
  					return e.preventDefault(), e.stopPropagation(), f.close()
  				}
  
  				var E = null, $ = d.when(!0), M = n(u.mdIsLockedOpen), A = function () {
  					return M(s.$parent, {
  						$media: function (e) {
  							return r.warn("$media is deprecated for is-locked-open. Use $mdMedia instead."), o(e)
  						}, $mdMedia: o
  					})
  				}, T = i('<md-backdrop class="md-sidenav-backdrop md-opaque ng-enter">')(s);
  				m.on("$destroy", f.destroy), c.inherit(T, m), s.$watch(A, p), s.$watch("isOpen", h), f.$toggleOpen = g
  			}
  
  			return {
  				restrict: "E",
  				scope: {isOpen: "=?mdIsOpen"},
  				controller: "$mdSidenavController",
  				compile: function (e) {
  					return e.addClass("md-closed"), e.attr("tabIndex", "-1"), s
  				}
  			}
  		}
  
  		function n(e, t, n, r, o) {
  			var a = this;
  			a.$toggleOpen = function () {
  				return o.when(e.isOpen)
  			}, a.isOpen = function () {
  				return !!e.isOpen
  			}, a.isLockedOpen = function () {
  				return !!e.isLockedOpen
  			}, a.open = function () {
  				return a.$toggleOpen(!0)
  			}, a.close = function () {
  				return a.$toggleOpen(!1)
  			}, a.toggle = function () {
  				return a.$toggleOpen(!e.isOpen)
  			}, a.destroy = r.register(a, n.mdComponentId)
  		}
  
  		angular.module("material.components.sidenav", ["material.core", "material.components.backdrop"]).factory("$mdSidenav", e).directive("mdSidenav", t).controller("$mdSidenavController", n), e.$inject = ["$mdComponentRegistry", "$q"], t.$inject = ["$timeout", "$animate", "$parse", "$log", "$mdMedia", "$mdConstant", "$compile", "$mdTheming", "$q", "$document"], n.$inject = ["$scope", "$element", "$attrs", "$mdComponentRegistry", "$q"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n, r, o, a, i, c) {
  			function d(e) {
  				return e.attr({tabIndex: 0, role: "slider"}), n.expect(e, "aria-label"), l
  			}
  
  			function l(n, d, l, s) {
  				function m() {
  					b(), M(), g()
  				}
  
  				function u(e) {
  					G = parseFloat(e), d.attr("aria-valuemin", e), m()
  				}
  
  				function f(e) {
  					z = parseFloat(e), d.attr("aria-valuemax", e), m()
  				}
  
  				function p(e) {
  					W = parseFloat(e), g()
  				}
  
  				function h(e) {
  					d.attr("aria-disabled", !!e)
  				}
  
  				function g() {
  					if (angular.isDefined(l.mdDiscrete)) {
  						var e = Math.floor((z - G) / W);
  						if (!X) {
  							var n = t.getComputedStyle(V[0]);
  							X = angular.element('<canvas style="position:absolute;">'), Q = X[0].getContext("2d"), Q.fillStyle = n.backgroundColor || "black", V.append(X)
  						}
  						var r = v();
  						X[0].width = r.width, X[0].height = r.height;
  						for (var o, a = 0; e >= a; a++)o = Math.floor(r.width * (a / e)), Q.fillRect(o - 1, 0, 2, r.height)
  					}
  				}
  
  				function b() {
  					Z = B[0].getBoundingClientRect()
  				}
  
  				function v() {
  					return U(), Z
  				}
  
  				function E(e) {
  					if (!d[0].hasAttribute("disabled")) {
  						var t;
  						e.keyCode === o.KEY_CODE.LEFT_ARROW ? t = -W : e.keyCode === o.KEY_CODE.RIGHT_ARROW && (t = W), t && ((e.metaKey || e.ctrlKey || e.altKey) && (t *= 4), e.preventDefault(), e.stopPropagation(), n.$evalAsync(function () {
  							$(s.$viewValue + t)
  						}))
  					}
  				}
  
  				function $(e) {
  					s.$setViewValue(A(T(e)))
  				}
  
  				function M() {
  					isNaN(s.$viewValue) && (s.$viewValue = s.$modelValue);
  					var e = (s.$viewValue - G) / (z - G);
  					n.modelValue = s.$viewValue, d.attr("aria-valuenow", s.$viewValue), w(e), L.text(s.$viewValue)
  				}
  
  				function A(e) {
  					return angular.isNumber(e) ? Math.max(G, Math.min(z, e)) : void 0
  				}
  
  				function T(e) {
  					return angular.isNumber(e) ? Math.round(e / W) * W : void 0
  				}
  
  				function w(e) {
  					q.css("width", 100 * e + "%"), F.css("left", 100 * e + "%"), d.toggleClass("md-min", 0 === e)
  				}
  
  				function k(e) {
  					if (!j()) {
  						d.addClass("active"), d[0].focus(), b();
  						var t = O(D(e.pointer.x)), r = A(T(t));
  						n.$apply(function () {
  							$(r), w(R(r))
  						})
  					}
  				}
  
  				function y(e) {
  					if (!j()) {
  						d.removeClass("dragging active");
  						var t = O(D(e.pointer.x)), r = A(T(t));
  						n.$apply(function () {
  							$(r), M()
  						})
  					}
  				}
  
  				function x(e) {
  					j() || (J = !0, e.stopPropagation(), d.addClass("dragging"), _(e))
  				}
  
  				function C(e) {
  					J && (e.stopPropagation(), _(e))
  				}
  
  				function N(e) {
  					J && (e.stopPropagation(), J = !1)
  				}
  
  				function _(e) {
  					et ? H(e.pointer.x) : S(e.pointer.x)
  				}
  
  				function S(e) {
  					n.$evalAsync(function () {
  						$(O(D(e)))
  					})
  				}
  
  				function H(e) {
  					var t = O(D(e)), n = A(T(t));
  					w(D(e)), L.text(n)
  				}
  
  				function D(e) {
  					return Math.max(0, Math.min(1, (e - Z.left) / Z.width))
  				}
  
  				function O(e) {
  					return G + e * (z - G)
  				}
  
  				function R(e) {
  					return (e - G) / (z - G)
  				}
  
  				a(d), s = s || {
  					$setViewValue: function (e) {
  						this.$viewValue = e, this.$viewChangeListeners.forEach(function (e) {
  							e()
  						})
  					}, $parsers: [], $formatters: [], $viewChangeListeners: []
  				};
  				var I = l.ngDisabled && c(l.ngDisabled), j = I ? function () {
  					return I(n.$parent)
  				} : angular.noop, P = angular.element(d[0].querySelector(".md-thumb")), L = angular.element(d[0].querySelector(".md-thumb-text")), F = P.parent(), B = angular.element(d[0].querySelector(".md-track-container")), q = angular.element(d[0].querySelector(".md-track-fill")), V = angular.element(d[0].querySelector(".md-track-ticks")), U = r.throttle(b, 5e3);
  				l.min ? l.$observe("min", u) : u(0), l.max ? l.$observe("max", f) : f(100), l.step ? l.$observe("step", p) : p(1);
  				var Y = angular.noop;
  				l.ngDisabled && (Y = n.$parent.$watch(l.ngDisabled, h)), i.register(d, "drag"), d.on("keydown", E).on("$md.pressdown", k).on("$md.pressup", y).on("$md.dragstart", x).on("$md.drag", C).on("$md.dragend", N), setTimeout(m);
  				var K = e.throttle(m);
  				angular.element(t).on("resize", K), n.$on("$destroy", function () {
  					angular.element(t).off("resize", K), Y()
  				}), s.$render = M, s.$viewChangeListeners.push(M), s.$formatters.push(A), s.$formatters.push(T);
  				var G, z, W, X, Q, Z = {};
  				b();
  				var J = !1, et = angular.isDefined(l.mdDiscrete)
  			}
  
  			return {
  				scope: {},
  				require: "?ngModel",
  				template: '<div class="md-slider-wrapper">        <div class="md-track-container">          <div class="md-track"></div>          <div class="md-track md-track-fill"></div>          <div class="md-track-ticks"></div>        </div>        <div class="md-thumb-container">          <div class="md-thumb"></div>          <div class="md-focus-thumb"></div>          <div class="md-focus-ring"></div>          <div class="md-sign">            <span class="md-thumb-text"></span>          </div>          <div class="md-disabled-thumb"></div>        </div>      </div>',
  				compile: d
  			}
  		}
  
  		angular.module("material.components.slider", ["material.core"]).directive("mdSlider", e), e.$inject = ["$$rAF", "$window", "$mdAria", "$mdUtil", "$mdConstant", "$mdTheming", "$mdGesture", "$parse"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n, r, o) {
  			function a(e) {
  				function n(e, t) {
  					t.addClass("md-sticky-clone"), t.css("top", p + "px");
  					var n = {element: e, clone: t};
  					return f.items.push(n), m.parent().prepend(n.clone), u(), function () {
  						f.items.forEach(function (t, n) {
  							t.element[0] === e[0] && (f.items.splice(n, 1), t.clone.remove())
  						}), u()
  					}
  				}
  
  				function o() {
  					f.items.forEach(a), f.items = f.items.sort(function (e, t) {
  						return e.top < t.top ? -1 : 1
  					});
  					for (var e, t = m.prop("scrollTop"), n = f.items.length - 1; n >= 0; n--)if (t > f.items[n].top) {
  						e = f.items[n];
  						break
  					}
  					d(e)
  				}
  
  				function a(e) {
  					var t = e.element[0];
  					for (e.top = 0, e.left = 0; t && t !== m[0];)e.top += t.offsetTop, e.left += t.offsetLeft, t = t.offsetParent;
  					e.height = e.element.prop("offsetHeight"), e.clone.css("margin-left", e.left + "px")
  				}
  
  				function i() {
  					var e = m.prop("scrollTop"), t = e > (i.prevScrollTop || 0);
  					i.prevScrollTop = e, 0 === e ? d(null) : t && f.next ? f.next.top - e <= 0 ? d(f.next) : f.current && (f.next.top - e <= f.next.height ? s(f.current, f.next.top - f.next.height - e) : s(f.current, null)) : !t && f.current && (e < f.current.top && d(f.prev), f.current && f.next && (e >= f.next.top - f.current.height ? s(f.current, f.next.top - e - f.current.height) : s(f.current, null)))
  				}
  
  				function d(e) {
  					if (f.current !== e) {
  						f.current && (s(f.current, null), l(f.current, null)), e && l(e, "active"), f.current = e;
  						var t = f.items.indexOf(e);
  						f.next = f.items[t + 1], f.prev = f.items[t - 1], l(f.next, "next"), l(f.prev, "prev")
  					}
  				}
  
  				function l(e, t) {
  					e && e.state !== t && (e.state && (e.clone.attr("sticky-prev-state", e.state), e.element.attr("sticky-prev-state", e.state)), e.clone.attr("sticky-state", t), e.element.attr("sticky-state", t), e.state = t)
  				}
  
  				function s(e, n) {
  					e && (null === n || void 0 === n ? e.translateY && (e.translateY = null, e.clone.css(t.CSS.TRANSFORM, "")) : (e.translateY = n, e.clone.css(t.CSS.TRANSFORM, "translate3d(" + e.left + "px," + n + "px,0)")))
  				}
  
  				var m = e.$element, u = r.throttle(o);
  				c(m), m.on("$scrollstart", u), m.on("$scroll", i);
  				var f, p = m.prop("offsetTop");
  				return f = {prev: null, current: null, next: null, items: [], add: n, refreshElements: o}
  			}
  
  			function i() {
  				var t, n = angular.element("<div>");
  				e[0].body.appendChild(n[0]);
  				for (var r = ["sticky", "-webkit-sticky"], o = 0; o < r.length; ++o)if (n.css({
  						position: r[o],
  						top: 0,
  						"z-index": 2
  					}), n.css("position") == r[o]) {
  					t = r[o];
  					break
  				}
  				return n.remove(), t
  			}
  
  			function c(e) {
  				function t() {
  					+o.now() - a > i ? (n = !1, e.triggerHandler("$scrollend")) : (e.triggerHandler("$scroll"), r(t))
  				}
  
  				var n, a, i = 200;
  				e.on("scroll touchmove", function () {
  					n || (n = !0, r(t), e.triggerHandler("$scrollstart")), e.triggerHandler("$scroll"), a = +o.now()
  				})
  			}
  
  			var d = i();
  			return function (e, t, n) {
  				var r = t.controller("mdContent");
  				if (r)if (d)t.css({position: d, top: 0, "z-index": 2}); else {
  					var o = r.$element.data("$$sticky");
  					o || (o = a(r), r.$element.data("$$sticky", o));
  					var i = o.add(t, n || t.clone());
  					e.$on("$destroy", i)
  				}
  			}
  		}
  
  		angular.module("material.components.sticky", ["material.core", "material.components.content"]).factory("$mdSticky", e), e.$inject = ["$document", "$mdConstant", "$compile", "$$rAF", "$mdUtil"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n) {
  			return {
  				restrict: "E",
  				replace: !0,
  				transclude: !0,
  				template: '<h2 class="md-subheader"><span class="md-subheader-content"></span></h2>',
  				compile: function (r, o, a) {
  					var i = r[0].outerHTML;
  					return function (r, o) {
  						function c(e) {
  							return angular.element(e[0].querySelector(".md-subheader-content"))
  						}
  
  						n(o), a(r, function (e) {
  							c(o).append(e)
  						}), a(r, function (a) {
  							var d = t(angular.element(i))(r);
  							n(d), c(d).append(a), e(r, o, d)
  						})
  					}
  				}
  			}
  		}
  
  		angular.module("material.components.subheader", ["material.core", "material.components.sticky"]).directive("mdSubheader", e), e.$inject = ["$mdSticky", "$compile", "$mdTheming"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		var e = angular.module("material.components.swipe", []);
  		["SwipeLeft", "SwipeRight"].forEach(function (t) {
  			var n = "md" + t, r = "$md." + t.toLowerCase();
  			e.directive(n, ["$parse", function (e) {
  				function t(t, o, a) {
  					var i = e(a[n]);
  					o.on(r, function (e) {
  						t.$apply(function () {
  							i(t, {$event: e})
  						})
  					})
  				}
  
  				return {restrict: "A", link: t}
  			}])
  		})
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n, r, o, a, i, c) {
  			function d(e, t) {
  				var r = l.compile(e, t);
  				return e.addClass("md-dragging"), function (e, t, d, l) {
  					function s(n) {
  						p(e) || (n.stopPropagation(), t.addClass("md-dragging"), b = {width: h.prop("offsetWidth")}, t.removeClass("transition"))
  					}
  
  					function m(e) {
  						if (b) {
  							e.stopPropagation(), e.srcEvent && e.srcEvent.preventDefault();
  							var t = e.pointer.distanceX / b.width, n = l.$viewValue ? 1 + t : t;
  							n = Math.max(0, Math.min(1, n)), h.css(o.CSS.TRANSFORM, "translate3d(" + 100 * n + "%,0,0)"), b.translate = n
  						}
  					}
  
  					function u(e) {
  						if (b) {
  							e.stopPropagation(), t.removeClass("md-dragging"), h.css(o.CSS.TRANSFORM, "");
  							var n = l.$viewValue ? b.translate < .5 : b.translate > .5;
  							n && f(!l.$viewValue), b = null
  						}
  					}
  
  					function f(t) {
  						e.$apply(function () {
  							l.$setViewValue(t), l.$render()
  						})
  					}
  
  					l = l || n.fakeNgModel();
  					var p = a(d.ngDisabled), h = angular.element(t[0].querySelector(".md-thumb-container")), g = angular.element(t[0].querySelector(".md-container"));
  					i(function () {
  						t.removeClass("md-dragging")
  					}), r(e, t, d, l), angular.isDefined(d.ngDisabled) && e.$watch(p, function (e) {
  						t.attr("tabindex", e ? -1 : 0)
  					}), c.register(g, "drag"), g.on("$md.dragstart", s).on("$md.drag", m).on("$md.dragend", u);
  					var b
  				}
  			}
  
  			var l = e[0];
  			return {
  				restrict: "E",
  				transclude: !0,
  				template: '<div class="md-container"><div class="md-bar"></div><div class="md-thumb-container"><div class="md-thumb" md-ink-ripple md-ink-ripple-checkbox></div></div></div><div ng-transclude class="md-label"></div>',
  				require: "?ngModel",
  				compile: d
  			}
  		}
  
  		angular.module("material.components.switch", ["material.core", "material.components.checkbox"]).directive("mdSwitch", e), e.$inject = ["mdCheckboxDirective", "$mdTheming", "$mdUtil", "$document", "$mdConstant", "$parse", "$$rAF", "$mdGesture"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		angular.module("material.components.tabs", ["material.core", "material.components.icon"])
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n, r) {
  			return {
  				restrict: "E",
  				replace: !0,
  				scope: {fid: "@?mdFid", label: "@?", value: "=ngModel"},
  				compile: function (o, a) {
  					return r.warn("<md-text-float> is deprecated. Please use `<md-input-container>` and `<input>`.More information at http://material.angularjs.org/#/api/material.components.input/directive/mdInputContainer"), angular.isUndefined(a.mdFid) && (a.mdFid = t.nextUid()), {
  						pre: function (e, t, r) {
  							var o = n(r.ngDisabled);
  							e.isDisabled = function () {
  								return o(e.$parent)
  							}, e.inputType = r.type || "text"
  						}, post: e
  					}
  				},
  				template: '<md-input-group tabindex="-1"> <label for="{{fid}}" >{{label}}</label> <md-input id="{{fid}}" ng-disabled="isDisabled()" ng-model="value" type="{{inputType}}"></md-input></md-input-group>'
  			}
  		}
  
  		function t(e) {
  			return {
  				restrict: "CE", controller: ["$element", function (t) {
  					e.warn("<md-input-group> is deprecated. Please use `<md-input-container>` and `<input>`.More information at http://material.angularjs.org/#/api/material.components.input/directive/mdInputContainer"), this.setFocused = function (e) {
  						t.toggleClass("md-input-focused", !!e)
  					}, this.setHasValue = function (e) {
  						t.toggleClass("md-input-has-value", e)
  					}
  				}]
  			}
  		}
  
  		function n(e, t) {
  			return {
  				restrict: "E",
  				replace: !0,
  				template: "<input >",
  				require: ["^?mdInputGroup", "?ngModel"],
  				link: function (e, n, r, o) {
  					function a(e) {
  						return e = angular.isUndefined(e) ? n.val() : e, angular.isDefined(e) && null !== e && "" !== e.toString().trim()
  					}
  
  					if (o[0]) {
  						t.warn("<md-input> is deprecated. Please use `<md-input-container>` and `<input>`.More information at http://material.angularjs.org/#/api/material.components.input/directive/mdInputContainer");
  						var i = o[0], c = o[1];
  						e.$watch(e.isDisabled, function (e) {
  							n.attr("aria-disabled", !!e), n.attr("tabindex", !!e)
  						}), n.attr("type", r.type || n.parent().attr("type") || "text"), c && c.$formatters.push(function (e) {
  							return i.setHasValue(a(e)), e
  						}), n.on("input", function () {
  							i.setHasValue(a())
  						}).on("focus", function () {
  							i.setFocused(!0)
  						}).on("blur", function () {
  							i.setFocused(!1), i.setHasValue(a())
  						}), e.$on("$destroy", function () {
  							i.setFocused(!1), i.setHasValue(!1)
  						})
  					}
  				}
  			}
  		}
  
  		angular.module("material.components.textField", ["material.core"]).directive("mdInputGroup", t).directive("mdInput", n).directive("mdTextFloat", e), e.$inject = ["$mdTheming", "$mdUtil", "$parse", "$log"], t.$inject = ["$log"], n.$inject = ["$mdUtil", "$log"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e() {
  			return {restrict: "E"}
  		}
  
  		function t(e) {
  			function t(e, t, r) {
  				function o(o, a, c) {
  					return n = c.content, a.addClass(c.position.split(" ").map(function (e) {
  						return "md-" + e
  					}).join(" ")), c.parent.addClass(i(c.position)), c.onSwipe = function (t) {
  						a.addClass("md-" + t.type.replace("$md.", "")), e(r.cancel)
  					}, a.on("$md.swipeleft $md.swiperight", c.onSwipe), t.enter(a, c.parent)
  				}
  
  				function a(e, n, r) {
  					return n.off("$md.swipeleft $md.swiperight", r.onSwipe), r.parent.removeClass(i(r.position)), t.leave(n)
  				}
  
  				function i(e) {
  					return "md-toast-open-" + (e.indexOf("top") > -1 ? "top" : "bottom")
  				}
  
  				return {onShow: o, onRemove: a, position: "bottom left", themable: !0, hideDelay: 3e3}
  			}
  
  			var n, r = e("$mdToast").setDefaults({
  				methods: ["position", "hideDelay", "capsule"],
  				options: t
  			}).addPreset("simple", {
  				argOption: "content",
  				methods: ["content", "action", "highlightAction", "theme"],
  				options: ["$mdToast", "$mdTheming", function (e, t) {
  					var r = {
  						template: ['<md-toast md-theme="{{ toast.theme }}" ng-class="{\'md-capsule\': toast.capsule}">', "<span flex>{{ toast.content }}</span>", '<md-button class="md-action" ng-if="toast.action" ng-click="toast.resolve()" ng-class="{\'md-highlight\': toast.highlightAction}">', "{{ toast.action }}", "</md-button>", "</md-toast>"].join(""),
  						controller: ["$scope", function (t) {
  							var r = this;
  							t.$watch(function () {
  								return n
  							}, function () {
  								r.content = n
  							}), this.resolve = function () {
  								e.hide()
  							}
  						}],
  						theme: t.defaultTheme(),
  						controllerAs: "toast",
  						bindToController: !0
  					};
  					return r
  				}]
  			}).addMethod("updateContent", function (e) {
  				n = e
  			});
  			return t.$inject = ["$timeout", "$animate", "$mdToast"], r
  		}
  
  		angular.module("material.components.toast", ["material.core", "material.components.button"]).directive("mdToast", e).provider("$mdToast", t), t.$inject = ["$$interimElementProvider"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n, r) {
  			return {
  				restrict: "E", controller: angular.noop, link: function (o, a, i) {
  					function c() {
  						function r(t, n) {
  							a.parent()[0] === n.parent()[0] && (s && s.off("scroll", p), n.on("scroll", p), n.attr("scroll-shrink", "true"), s = n, e(c))
  						}
  
  						function c() {
  							l = a.prop("offsetHeight"), s.css("margin-top", -l * f + "px"), d()
  						}
  
  						function d(e) {
  							var n = e ? e.target.scrollTop : u;
  							h(), m = Math.min(l / f, Math.max(0, m + n - u)), a.css(t.CSS.TRANSFORM, "translate3d(0," + -m * f + "px,0)"), s.css(t.CSS.TRANSFORM, "translate3d(0," + (l - m) * f + "px,0)"), u = n
  						}
  
  						var l, s, m = 0, u = 0, f = i.mdShrinkSpeedFactor || .5, p = e.throttle(d), h = n.debounce(c, 5e3);
  						o.$on("$mdContentLoaded", r)
  					}
  
  					r(a), angular.isDefined(i.mdScrollShrink) && c()
  				}
  			}
  		}
  
  		angular.module("material.components.toolbar", ["material.core", "material.components.content"]).directive("mdToolbar", e), e.$inject = ["$$rAF", "$mdConstant", "$mdUtil", "$mdTheming"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n, r, o, a, i, c, d) {
  			function l(l, u, f) {
  				function p(t) {
  					p.value = !!t, p.queued || (t ? (p.queued = !0, e(function () {
  						l.visible = p.value, p.queued = !1
  					}, l.delay)) : e(function () {
  						l.visible = !1
  					}))
  				}
  
  				function h() {
  					v.attr("aria-describedby", u.attr("id")), T.append(u), b(), c.addClass(u, "md-show"), c.addClass(E, "md-show"), c.addClass($, "md-show")
  				}
  
  				function g() {
  					v.removeAttr("aria-describedby"), d.all([c.removeClass($, "md-show"), c.removeClass(E, "md-show"), c.removeClass(u, "md-show")]).then(function () {
  						l.visible || u.detach()
  					})
  				}
  
  				function b() {
  					function e() {
  						var e = "left" === M || "right" === M ? 2 * Math.sqrt(Math.pow(r.width, 2) + Math.pow(r.height / 2, 2)) : 2 * Math.sqrt(Math.pow(r.width / 2, 2) + Math.pow(r.height, 2)), t = "left" === M ? {
  							left: 100,
  							top: 50
  						} : "right" === M ? {left: 0, top: 50} : "top" === M ? {left: 50, top: 100} : {
  							left: 50,
  							top: 0
  						};
  						E.css({width: e + "px", height: e + "px", left: t.left + "%", top: t.top + "%"})
  					}
  
  					function t(e) {
  						var t = {left: e.left, top: e.top};
  						return t.left = Math.min(t.left, T.prop("scrollWidth") - r.width - m), t.left = Math.max(t.left, m), t.top = Math.min(t.top, T.prop("scrollHeight") - r.height - m), t.top = Math.max(t.top, m), t
  					}
  
  					function n(e) {
  						return "left" === e ? {
  							left: a.left - r.width - m,
  							top: a.top + a.height / 2 - r.height / 2
  						} : "right" === e ? {
  							left: a.left + a.width + m,
  							top: a.top + a.height / 2 - r.height / 2
  						} : "top" === e ? {
  							left: a.left + a.width / 2 - r.width / 2,
  							top: a.top - r.height - m
  						} : {left: a.left + a.width / 2 - r.width / 2, top: a.top + a.height + m}
  					}
  
  					var r = o.offsetRect(u, T), a = o.offsetRect(v, T), i = n(M);
  					M ? i = t(i) : i.top > T.prop("scrollHeight") - r.height - m && (i = t(n("top"))), u.css({
  						top: i.top + "px",
  						left: i.left + "px"
  					}), e()
  				}
  
  				a(u);
  				for (var v = u.parent(), E = angular.element(u[0].getElementsByClassName("md-background")[0]), $ = angular.element(u[0].getElementsByClassName("md-content")[0]), M = f.mdDirection; "none" == t.getComputedStyle(v[0])["pointer-events"];)v = v.parent();
  				for (var A = u.parent()[0]; A && A !== i[0] && A !== document.body && (!A.tagName || "md-content" != A.tagName.toLowerCase());)A = A.parentNode;
  				var T = angular.element(A || document.body);
  				angular.isDefined(f.mdDelay) || (l.delay = s), u.detach(), u.attr("role", "tooltip"), u.attr("id", f.id || "tooltip_" + o.nextUid()), v.on("focus mouseenter touchstart", function () {
  					p(!0)
  				}), v.on("blur mouseleave touchend touchcancel", function () {
  					r[0].activeElement !== v[0] && p(!1)
  				}), l.$watch("visible", function (e) {
  					e ? h() : g()
  				});
  				var w = n.throttle(function () {
  					l.visible && b()
  				});
  				angular.element(t).on("resize", w), l.$on("$destroy", function () {
  					l.visible = !1, u.remove(), angular.element(t).off("resize", w)
  				})
  			}
  
  			var s = 0, m = 8;
  			return {
  				restrict: "E",
  				transclude: !0,
  				template: '<div class="md-background"></div><div class="md-content" ng-transclude></div>',
  				scope: {visible: "=?mdVisible", delay: "=?mdDelay"},
  				link: l
  			}
  		}
  
  		angular.module("material.components.tooltip", ["material.core"]).directive("mdTooltip", e), e.$inject = ["$timeout", "$window", "$$rAF", "$document", "$mdUtil", "$mdTheming", "$rootElement", "$animate", "$q"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		angular.module("material.components.whiteframe", [])
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n, r, o) {
  			function a() {
  				d(), i()
  			}
  
  			function i() {
  				var e = angular.element(w.ul), t = angular.element(w.input), n = e.attr("id") || "ul_" + r.nextUid();
  				e.attr("id", n), t.attr("aria-owns", n)
  			}
  
  			function c(e) {
  				if (e) {
  					var t = {};
  					return M.itemName && (t[M.itemName] = e), t
  				}
  			}
  
  			function d() {
  				var t = parseInt(e.delay, 10) || 0;
  				e.$watch("searchText", t ? r.debounce(l, t) : l), e.$watch("selectedItem", function (t, n) {
  					e.itemChange && t !== n && e.itemChange(c(t))
  				})
  			}
  
  			function l(t, n) {
  				if (M.index = -1, !t || t.length < Math.max(parseInt(e.minLength, 10), 1))return M.loading = !1, M.matches = [], M.hidden = g(), m(), void 0;
  				var r = t.toLowerCase();
  				k && k.cancel && (k.cancel(), k = null), !e.noCache && y[r] ? (M.matches = y[r], m()) : M.fetch(t), M.hidden = g(), e.textChange && t !== n && e.textChange(c(e.selectedItem))
  			}
  
  			function s(t) {
  				function r(n) {
  					y[a] = n, t === e.searchText && (k = null, M.loading = !1, M.matches = n, M.hidden = g(), m())
  				}
  
  				var o = e.$parent.$eval(T), a = t.toLowerCase();
  				angular.isArray(o) ? r(o) : (M.loading = !0, k = n.when(o).then(r))
  			}
  
  			function m() {
  				if (!M.hidden)switch (M.matches.length) {
  					case 0:
  						return M.messages.splice(0);
  					case 1:
  						return M.messages.push({display: "There is 1 match available."});
  					default:
  						return M.messages.push({display: "There are " + M.matches.length + " matches available."})
  				}
  			}
  
  			function u() {
  				M.messages.push({display: b()})
  			}
  
  			function f() {
  				x || (M.hidden = !0)
  			}
  
  			function p(e) {
  				switch (e.keyCode) {
  					case o.KEY_CODE.DOWN_ARROW:
  						if (M.loading)return;
  						e.preventDefault(), M.index = Math.min(M.index + 1, M.matches.length - 1), $(), u();
  						break;
  					case o.KEY_CODE.UP_ARROW:
  						if (M.loading)return;
  						e.preventDefault(), M.index = Math.max(0, M.index - 1), $(), u();
  						break;
  					case o.KEY_CODE.ENTER:
  						if (M.loading || M.index < 0)return;
  						e.preventDefault(), E(M.index);
  						break;
  					case o.KEY_CODE.ESCAPE:
  						M.matches = [], M.hidden = !0, M.index = -1;
  						break;
  					case o.KEY_CODE.TAB:
  				}
  			}
  
  			function h() {
  				e.searchText = "", E(-1), w.input.focus()
  			}
  
  			function g() {
  				return 1 === M.matches.length && e.searchText === v(M.matches[0])
  			}
  
  			function b() {
  				return v(M.matches[M.index])
  			}
  
  			function v(t) {
  				return t && e.itemText ? e.itemText(c(t)) : t
  			}
  
  			function E(t) {
  				e.selectedItem = M.matches[t], e.searchText = v(e.selectedItem) || e.searchText, M.hidden = !0, M.index = -1, M.matches = []
  			}
  
  			function $() {
  				var e = 41 * M.index, t = e + 41, n = 225.5;
  				e < w.ul.scrollTop ? w.ul.scrollTop = e : t > w.ul.scrollTop + n && (w.ul.scrollTop = t - n)
  			}
  
  			var M = this, A = e.itemsExpr.split(/ in /i), T = A[1], w = {
  				main: t[0],
  				ul: t[0].getElementsByTagName("ul")[0],
  				input: t[0].getElementsByTagName("input")[0]
  			}, k = null, y = {}, x = !1;
  			return M.scope = e, M.parent = e.$parent, M.itemName = A[0], M.matches = [], M.loading = !1, M.hidden = !0, M.index = 0, M.keydown = p, M.blur = f, M.clear = h, M.select = E, M.getCurrentDisplayValue = b, M.fetch = r.debounce(s), M.messages = [], M.listEnter = function () {
  				x = !0
  			}, M.listLeave = function () {
  				x = !1
  			}, M.mouseUp = function () {
  				w.input.focus()
  			}, a()
  		}
  
  		angular.module("material.components.autocomplete").controller("MdAutocompleteCtrl", e), e.$inject = ["$scope", "$element", "$q", "$mdUtil", "$mdConstant"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e() {
  			return {
  				template: '        <md-autocomplete-wrap role="listbox">          <input type="text"              ng-disabled="isDisabled"              ng-model="searchText"              ng-keydown="$mdAutocompleteCtrl.keydown($event)"              ng-blur="$mdAutocompleteCtrl.blur()"              placeholder="{{placeholder}}"              aria-label="{{placeholder}}"              aria-autocomplete="list"              aria-haspopup="true"              aria-activedescendant=""              aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/>          <button              type="button"              ng-if="searchText"              ng-click="$mdAutocompleteCtrl.clear()">            <md-icon md-svg-icon="cancel"></md-icon>            <span class="visually-hidden">Clear</span>          </button>          <md-progress-linear              ng-if="$mdAutocompleteCtrl.loading"              md-mode="indeterminate"></md-progress-linear>        </md-autocomplete-wrap>        <ul role="presentation"            ng-mouseenter="$mdAutocompleteCtrl.listEnter()"            ng-mouseleave="$mdAutocompleteCtrl.listLeave()"            ng-mouseup="$mdAutocompleteCtrl.mouseUp()">          <li ng-repeat="(index, item) in $mdAutocompleteCtrl.matches"              ng-class="{ selected: index === $mdAutocompleteCtrl.index }"              ng-show="searchText && !$mdAutocompleteCtrl.hidden"              ng-click="$mdAutocompleteCtrl.select(index)"              ng-transclude              md-autocomplete-list-item="$mdAutocompleteCtrl.itemName">          </li>        </ul>        <aria-status            class="visually-hidden"            role="status"            aria-live="assertive">          <p ng-repeat="message in $mdAutocompleteCtrl.messages">{{message.display}}</p>        </aria-status>',
  				transclude: !0,
  				controller: "MdAutocompleteCtrl",
  				controllerAs: "$mdAutocompleteCtrl",
  				scope: {
  					searchText: "=mdSearchText",
  					selectedItem: "=mdSelectedItem",
  					itemsExpr: "@mdItems",
  					itemText: "&mdItemText",
  					placeholder: "@placeholder",
  					noCache: "=mdNoCache",
  					itemChange: "&mdSelectedItemChange",
  					textChange: "&mdSearchTextChange",
  					isDisabled: "=ngDisabled",
  					minLength: "=mdMinLength",
  					delay: "=mdDelay"
  				}
  			}
  		}
  
  		angular.module("material.components.autocomplete").directive("mdAutocomplete", e)
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n) {
  			function r(e) {
  				return e ? e.replace(/[\*\[\]\(\)\{\}\\\^\$]/g, "\\$&") : e
  			}
  
  			var o = t.attr("md-highlight-text"), a = n(t.text())(e), i = e.$watch(o, function (e) {
  				var n = new RegExp("^" + r(e), "i"), o = a.replace(n, '<span class="highlight">$&</span>');
  				t.html(o)
  			});
  			t.on("$destroy", function () {
  				i()
  			})
  		}
  
  		angular.module("material.components.autocomplete").controller("MdHighlightCtrl", e), e.$inject = ["$scope", "$element", "$interpolate"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e() {
  			return {terminal: !0, scope: !1, controller: "MdHighlightCtrl"}
  		}
  
  		angular.module("material.components.autocomplete").directive("mdHighlightText", e)
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t) {
  			function n(n, r, o, a) {
  				var i = a.parent.$new(!1, a.parent), c = a.scope.$eval(o.mdAutocompleteListItem);
  				i[c] = n.item, e(r.contents())(i), r.attr({role: "option", id: "item_" + t.nextUid()})
  			}
  
  			return {require: "^?mdAutocomplete", terminal: !0, link: n, scope: !1}
  		}
  
  		angular.module("material.components.autocomplete").directive("mdAutocompleteListItem", e), e.$inject = ["$compile", "$mdUtil"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e) {
  			function t(t, r, o, a) {
  				function i() {
  					var e = d.getSelectedItem(), o = !e || d.count() < 2 || c;
  					if (r.css("display", o ? "none" : "block"), !o && t.pagination && t.pagination.tabData) {
  						var a = d.getSelectedIndex(), i = t.pagination.tabData.tabs[a] || {
  								left: 0,
  								right: 0,
  								width: 0
  							}, l = r.parent().prop("offsetWidth") - i.right, s = ["md-transition-left", "md-transition-right", "md-no-transition"], m = n > a ? 0 : a > n ? 1 : 2;
  						r.removeClass(s.join(" ")).addClass(s[m]).css({left: i.left + "px", right: l + "px"}), n = a
  					}
  				}
  
  				var c = !!a[0], d = a[1], l = e.throttle(i);
  				d.inkBarElement = r, t.$on("$mdTabsPaginationChanged", l)
  			}
  
  			var n = 0;
  			return {restrict: "E", require: ["^?mdNoBar", "^mdTabs"], link: t}
  		}
  
  		angular.module("material.components.tabs").directive("mdTabsInkBar", e), e.$inject = ["$$rAF"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n, r, o, a) {
  			function i(i, d, l, s) {
  				function m(e, t) {
  					if (e) {
  						var n = b(e);
  						T.active && n !== T.page ? (t && t.element.blur(), v(n).then(function () {
  							A = !1, e.element.focus()
  						})) : e.element.focus()
  					}
  				}
  
  				function u(e) {
  					var t = T.tabData, n = Math.max(0, Math.min(t.pages.length - 1, T.page + e)), r = t.pages[n][e > 0 ? "firstTabIndex" : "lastTabIndex"], o = s.itemAt(r);
  					A = !0, m(o)
  				}
  
  				function f() {
  					function e() {
  						M.css("width", "9999px"), angular.forEach(a.tabs, function (e) {
  							angular.element(e.element).css("margin-left", e.filler + "px")
  						}), v(b(s.getSelectedItem()))
  					}
  
  					function t() {
  						p(0), M.css("width", ""), r.css("width", ""), r.css("margin-left", ""), T.page = null, T.active = !1
  					}
  
  					function n() {
  						return l || i.$watch(function () {
  								o(function () {
  									d[0].offsetParent && (angular.isFunction(l) && l(), $(), l = null)
  								}, 0, !1)
  							})
  					}
  
  					if (d.prop("offsetParent")) {
  						var r = d.find("md-tab");
  						t();
  						var a = T.tabData = g(), c = T.active = a.pages.length > 1;
  						c && e(), i.$evalAsync(function () {
  							i.$broadcast("$mdTabsPaginationChanged")
  						})
  					} else var l = n()
  				}
  
  				function p(t) {
  					function n(t) {
  						t.target === M[0] && (M.off(e.CSS.TRANSITIONEND, n), o.resolve())
  					}
  
  					if (s.pagingOffset === t)return r.when();
  					var o = r.defer();
  					return s.$$pagingOffset = t, M.css(e.CSS.TRANSFORM, "translate3d(" + t + "px,0,0)"), M.on(e.CSS.TRANSITIONEND, n), o.promise
  				}
  
  				function h() {
  					switch (i.stretchTabs) {
  						case"never":
  							return !1;
  						case"always":
  							return !0;
  						default:
  							return a("sm")
  					}
  				}
  
  				function g(e) {
  					function t() {
  						var e = 1 === m.length ? r : o, t = Math.min(Math.floor(e / l), E.length), n = Math.floor(e / t);
  						return a.css("width", n + "px"), g(!0)
  					}
  
  					var n, r = d.parent().prop("offsetWidth"), o = r - c - 1, a = angular.element(E), i = 0, l = 0, s = [], m = [];
  					return a.css("max-width", ""), angular.forEach(E, function (e, t) {
  						var a = Math.min(o, e.offsetWidth), c = {
  							element: e,
  							left: i,
  							width: a,
  							right: i + a,
  							filler: 0
  						};
  						c.page = Math.ceil(c.right / (1 === m.length && t === E.length - 1 ? r : o)) - 1, c.page >= m.length ? (c.filler = o * c.page - c.left, c.right += c.filler, c.left += c.filler, n = {
  							left: c.left,
  							firstTabIndex: t,
  							lastTabIndex: t,
  							tabs: [c]
  						}, m.push(n)) : (n.lastTabIndex = t, n.tabs.push(c)), i = c.right, l = Math.max(l, a), s.push(c)
  					}), a.css("max-width", o + "px"), !e && h() ? t() : {
  						width: i,
  						max: l,
  						tabs: s,
  						pages: m,
  						tabElements: E
  					}
  				}
  
  				function b(e) {
  					var t = s.indexOf(e);
  					if (-1 === t)return 0;
  					var n = T.tabData;
  					return n ? n.tabs[t].page : 0
  				}
  
  				function v(e) {
  					if (e !== T.page) {
  						var t = T.tabData.pages.length - 1;
  						return 0 > e && (e = 0), e > t && (e = t), T.hasPrev = e > 0, T.hasNext = t > e, T.page = e, i.$broadcast("$mdTabsPaginationChanged"), p(-T.tabData.pages[e].left)
  					}
  				}
  
  				var E = d[0].getElementsByTagName("md-tab"), $ = n.throttle(f), M = d.children(), A = !1, T = i.pagination = {
  					page: -1,
  					active: !1,
  					clickNext: function () {
  						A || u(1)
  					},
  					clickPrevious: function () {
  						A || u(-1)
  					}
  				};
  				i.$on("$mdTabsChanged", $), angular.element(t).on("resize", $), i.$on("$destroy", function () {
  					angular.element(t).off("resize", $)
  				}), i.$watch(function () {
  					return s.tabToFocus
  				}, m)
  			}
  
  			var c = 64;
  			return {restrict: "A", require: "^mdTabs", link: i}
  		}
  
  		angular.module("material.components.tabs").directive("mdTabsPagination", e), e.$inject = ["$mdConstant", "$window", "$$rAF", "$$q", "$timeout", "$mdMedia"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n, r, o, a, i, c) {
  			function d() {
  				return b(e.$parent)
  			}
  
  			function l(t, n) {
  				h.content.length && (h.contentContainer.append(h.content), h.contentScope = e.$parent.$new(), t.append(h.contentContainer), r(h.contentContainer)(h.contentScope), n === !0 && c(function () {
  					a.disconnectScope(h.contentScope)
  				}, 0, !1))
  			}
  
  			function s() {
  				o.leave(h.contentContainer).then(function () {
  					h.contentScope && h.contentScope.$destroy(), h.contentScope = null
  				})
  			}
  
  			function m(e) {
  				h.contentContainer[e ? "addClass" : "removeClass"]("md-transition-rtl")
  			}
  
  			function u(n) {
  				a.reconnectScope(h.contentScope), t.addClass("active").attr({
  					"aria-selected": !0,
  					tabIndex: 0
  				}).on("$md.swipeleft $md.swiperight", p), m(n), o.removeClass(h.contentContainer, "ng-hide"), e.onSelect()
  			}
  
  			function f(n) {
  				a.disconnectScope(h.contentScope), t.removeClass("active").attr({
  					"aria-selected": !1,
  					tabIndex: -1
  				}).off("$md.swipeleft $md.swiperight", p), m(n), o.addClass(h.contentContainer, "ng-hide"), e.onDeselect()
  			}
  
  			function p(t) {
  				e.$apply(function () {
  					/left/.test(t.type) ? g.select(g.next()) : g.select(g.previous())
  				})
  			}
  
  			var h = this, g = t.controller("mdTabs");
  			h.contentContainer = angular.element('<div class="md-tab-content ng-hide">'), h.element = t, h.isDisabled = d, h.onAdd = l, h.onRemove = s, h.onSelect = u, h.onDeselect = f;
  			var b = i(n.ngDisabled)
  		}
  
  		angular.module("material.components.tabs").controller("$mdTab", e), e.$inject = ["$scope", "$element", "$attrs", "$compile", "$animate", "$mdUtil", "$parse", "$timeout"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n, r, o) {
  			function a(a, i) {
  				var c = a.find("md-tab-label");
  				c.length ? c.remove() : c = angular.isDefined(i.label) ? angular.element("<md-tab-label>").html(i.label) : angular.element("<md-tab-label>").append(a.contents().remove());
  				var d = a.contents().remove();
  				return function (a, i, l, s) {
  					function m() {
  						var e = c.clone();
  						i.append(e), t(e)(a.$parent), v.content = d.clone()
  					}
  
  					function u() {
  						a.$apply(function () {
  							E.select(v), E.focus(v)
  						})
  					}
  
  					function f(e) {
  						e.keyCode == r.KEY_CODE.SPACE || e.keyCode == r.KEY_CODE.ENTER ? (i.triggerHandler("click"), e.preventDefault()) : e.keyCode === r.KEY_CODE.LEFT_ARROW ? a.$evalAsync(function () {
  							E.focus(E.previous(v))
  						}) : e.keyCode === r.KEY_CODE.RIGHT_ARROW && a.$evalAsync(function () {
  							E.focus(E.next(v))
  						})
  					}
  
  					function p() {
  						a.$watch("$parent.$index", function (e) {
  							E.move(v, e)
  						})
  					}
  
  					function h() {
  						function e(e) {
  							var t = E.getSelectedItem() === v;
  							e && !t ? E.select(v) : !e && t && E.deselect(v)
  						}
  
  						var t = a.$parent.$watch("!!(" + l.mdActive + ")", e);
  						a.$on("$destroy", t)
  					}
  
  					function g() {
  						function e(e) {
  							i.attr("aria-disabled", e);
  							var t = E.getSelectedItem() === v;
  							t && e && E.select(E.next() || E.previous())
  						}
  
  						a.$watch(v.isDisabled, e)
  					}
  
  					function b() {
  						var e = l.id || "tab_" + n.nextUid();
  						if (i.attr({id: e, role: "tab", tabIndex: -1}), d.length) {
  							var t = "content_" + e;
  							i.attr("aria-controls") || i.attr("aria-controls", t), v.contentContainer.attr({
  								id: t,
  								role: "tabpanel",
  								"aria-labelledby": e
  							})
  						}
  					}
  
  					var v = s[0], E = s[1];
  					o(i.addClass.bind(i, "md-tab-themed"), 0, !1), a.$watch(function () {
  						return l.label
  					}, function () {
  						o(function () {
  							E.scope.$broadcast("$mdTabsChanged")
  						}, 0, !1)
  					}), m(), b(), e.attachTabBehavior(a, i, {colorElement: E.inkBarElement}), E.add(v), a.$on("$destroy", function () {
  						E.remove(v)
  					}), i.on("$destroy", function () {
  						o(function () {
  							E.scope.$broadcast("$mdTabsChanged")
  						}, 0, !1)
  					}), angular.isDefined(l.ngClick) || i.on("click", u), i.on("keydown", f), angular.isNumber(a.$parent.$index) && p(), angular.isDefined(l.mdActive) && h(), g()
  				}
  			}
  
  			return {
  				restrict: "E",
  				require: ["mdTab", "^mdTabs"],
  				controller: "$mdTab",
  				scope: {onSelect: "&mdOnSelect", onDeselect: "&mdOnDeselect", label: "@"},
  				compile: a
  			}
  		}
  
  		angular.module("material.components.tabs").directive("mdTab", e), e.$inject = ["$mdInkRipple", "$compile", "$mdUtil", "$mdConstant", "$timeout"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e, t, n) {
  			function r() {
  				return b(e.selectedIndex)
  			}
  
  			function o() {
  				return e.selectedIndex
  			}
  
  			function a(t, n) {
  				p.add(t, n), angular.isDefined(t.element.attr("md-active")) || -1 !== e.selectedIndex && angular.isNumber(e.selectedIndex) && e.selectedIndex !== h.indexOf(t) ? t.onAdd(h.contentArea, !0) : (t.onAdd(h.contentArea, !1), h.select(t)), e.$broadcast("$mdTabsChanged")
  			}
  
  			function i(t, n) {
  				if (p.contains(t) && !n) {
  					var o = r() === t, a = u() || m();
  					s(t), p.remove(t), t.onRemove(), e.$broadcast("$mdTabsChanged"), o && d(a)
  				}
  			}
  
  			function c(t, n) {
  				var o = r() === t;
  				p.remove(t), p.add(t, n), o && d(t), e.$broadcast("$mdTabsChanged")
  			}
  
  			function d(t, n) {
  				!t || t.isSelected || t.isDisabled() || p.contains(t) && (angular.isDefined(n) || (n = g(t) < e.selectedIndex), s(r(), n), e.selectedIndex = g(t), t.isSelected = !0, t.onSelect(n), e.$broadcast("$mdTabsChanged"))
  			}
  
  			function l(e) {
  				h.tabToFocus = e
  			}
  
  			function s(t, n) {
  				t && t.isSelected && p.contains(t) && (e.selectedIndex = -1, t.isSelected = !1, t.onDeselect(n))
  			}
  
  			function m(e, t) {
  				return p.next(e || r(), t || f)
  			}
  
  			function u(e, t) {
  				return p.previous(e || r(), t || f)
  			}
  
  			function f(e) {
  				return e && !e.isDisabled()
  			}
  
  			var p = n.iterator([], !1), h = this;
  			h.$element = t, h.scope = e;
  			var g = (h.contentArea = angular.element(t[0].querySelector(".md-tabs-content")), h.inRange = p.inRange, h.indexOf = p.indexOf), b = h.itemAt = p.itemAt;
  			h.count = p.count, h.getSelectedItem = r, h.getSelectedIndex = o, h.add = a, h.remove = i, h.move = c, h.select = d, h.focus = l, h.deselect = s, h.next = m, h.previous = u, e.$on("$destroy", function () {
  				s(r());
  				for (var e = p.count() - 1; e >= 0; e--)i(p[e], !0)
  			})
  		}
  
  		angular.module("material.components.tabs").controller("$mdTabs", e), e.$inject = ["$scope", "$element", "$mdUtil", "$timeout"]
  	}(), /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.3
   */
  	function () {
  		"use strict";
  		function e(e) {
  			function t(t, n, r, o, a) {
  				function i() {
  					n.attr("role", "tablist")
  				}
  
  				function c() {
  					t.$watch("selectedIndex", function (e, t) {
  						if (t != e) {
  							var n = t > e;
  							if (o.deselect(o.itemAt(t), n), o.inRange(e)) {
  								for (var r = o.itemAt(e); r && r.isDisabled();)r = e > t ? o.next(r) : o.previous(r);
  								o.select(r, n)
  							}
  						}
  					})
  				}
  
  				t.stretchTabs = r.hasOwnProperty("mdStretchTabs") ? r.mdStretchTabs || "always" : "auto", e(n), i(), c(), a(t.$parent, function (e) {
  					angular.element(n[0].querySelector(".md-header-items")).append(e)
  				})
  			}
  
  			return {
  				restrict: "E",
  				controller: "$mdTabs",
  				require: "mdTabs",
  				transclude: !0,
  				scope: {selectedIndex: "=?mdSelected"},
  				template: '<section class="md-header" ng-class="{\'md-paginating\': pagination.active}"><button class="md-paginator md-prev" ng-if="pagination.active && pagination.hasPrev" ng-click="pagination.clickPrevious()" aria-hidden="true"><md-icon md-svg-icon="tabs-arrow"></md-icon></button><div class="md-header-items-container" md-tabs-pagination><div class="md-header-items"><md-tabs-ink-bar></md-tabs-ink-bar></div></div><button class="md-paginator md-next" ng-if="pagination.active && pagination.hasNext" ng-click="pagination.clickNext()" aria-hidden="true"><md-icon md-svg-icon="tabs-arrow"></md-icon></button></section><section class="md-tabs-content"></section>',
  				link: t
  			}
  		}
  
  		angular.module("material.components.tabs").directive("mdTabs", e), e.$inject = ["$mdTheming"]
  	}(), function () {
  	angular.module("material.core").constant("$MD_THEME_CSS", "md-autocomplete {  background: '{{background-50}}'; }  md-autocomplete button md-icon path {    fill: '{{background-600}}'; }  md-autocomplete button:after {    background: '{{background-600-0.3}}'; }  md-autocomplete ul {    background: '{{background-50}}'; }    md-autocomplete ul li {      border-top: 1px solid '{{background-400}}';      color: '{{background-900}}'; }      md-autocomplete ul li .highlight {        color: '{{background-600}}'; }      md-autocomplete ul li:hover, md-autocomplete ul li.selected {        background: '{{background-200}}'; }md-backdrop.md-opaque.md-THEME_NAME-theme {  background-color: '{{foreground-4-0.5}}'; }md-bottom-sheet.md-THEME_NAME-theme {  background-color: '{{background-50}}';  border-top-color: '{{background-300}}'; }  md-bottom-sheet.md-THEME_NAME-theme.md-list md-item {    color: '{{foreground-1}}'; }  md-bottom-sheet.md-THEME_NAME-theme .md-subheader {    background-color: '{{background-50}}'; }  md-bottom-sheet.md-THEME_NAME-theme .md-subheader {    color: '{{foreground-1}}'; }md-toolbar .md-button.md-THEME_NAME-theme.md-fab {  background-color: white; }.md-button.md-THEME_NAME-theme {  border-radius: 3px; }  .md-button.md-THEME_NAME-theme:not([disabled]):hover, .md-button.md-THEME_NAME-theme:not([disabled]):focus {    background-color: '{{background-500-0.2}}'; }  .md-button.md-THEME_NAME-theme.md-primary {    color: '{{primary-color}}'; }    .md-button.md-THEME_NAME-theme.md-primary.md-raised, .md-button.md-THEME_NAME-theme.md-primary.md-fab {      color: '{{primary-contrast}}';      background-color: '{{primary-color}}'; }      .md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):focus, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):focus {        background-color: '{{primary-600}}'; }  .md-button.md-THEME_NAME-theme.md-fab {    border-radius: 50%;    background-color: '{{accent-color}}';    color: '{{accent-contrast}}'; }    .md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]):focus {      background-color: '{{accent-A700}}'; }  .md-button.md-THEME_NAME-theme.md-raised {    color: '{{background-contrast}}';    background-color: '{{background-50}}'; }    .md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-raised:not([disabled]):focus {      background-color: '{{background-200}}'; }  .md-button.md-THEME_NAME-theme.md-warn {    color: '{{warn-color}}'; }    .md-button.md-THEME_NAME-theme.md-warn.md-raised, .md-button.md-THEME_NAME-theme.md-warn.md-fab {      color: '{{warn-contrast}}';      background-color: '{{warn-color}}'; }      .md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):focus, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):focus {        background-color: '{{warn-700}}'; }  .md-button.md-THEME_NAME-theme.md-accent {    color: '{{accent-color}}'; }    .md-button.md-THEME_NAME-theme.md-accent.md-raised, .md-button.md-THEME_NAME-theme.md-accent.md-fab {      color: '{{accent-contrast}}';      background-color: '{{accent-color}}'; }      .md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):focus, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):focus {        background-color: '{{accent-700}}'; }  .md-button.md-THEME_NAME-theme[disabled], .md-button.md-THEME_NAME-theme.md-raised[disabled], .md-button.md-THEME_NAME-theme.md-fab[disabled] {    color: '{{foreground-3}}';    background-color: transparent;    cursor: not-allowed; }md-card.md-THEME_NAME-theme {  border-radius: 2px; }  md-card.md-THEME_NAME-theme .md-card-image {    border-radius: 2px 2px 0 0; }md-checkbox.md-THEME_NAME-theme .md-ripple {  color: '{{accent-600}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-ripple {  color: '{{background-600}}'; }md-checkbox.md-THEME_NAME-theme .md-icon {  border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-icon {  background-color: '{{accent-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-icon:after {  border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ripple {  color: '{{primary-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ripple {  color: '{{background-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-icon {  border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon {  background-color: '{{primary-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon:after {  border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ripple {  color: '{{warn-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-icon {  border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon {  background-color: '{{warn-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon:after {  border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme[disabled] .md-icon {  border-color: '{{foreground-3}}'; }md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon {  background-color: '{{foreground-3}}'; }md-content.md-THEME_NAME-theme {  background-color: '{{background-hue-3}}'; }md-dialog.md-THEME_NAME-theme {  border-radius: 4px;  background-color: '{{background-hue-3}}'; }  md-dialog.md-THEME_NAME-theme.md-content-overflow .md-actions {    border-top-color: '{{foreground-4}}'; }md-divider.md-THEME_NAME-theme {  border-top-color: '{{foreground-4}}'; }md-icon.md-THEME_NAME-theme.md-primary {  color: '{{primary-color}}'; }md-icon.md-THEME_NAME-theme.md-accent {  color: '{{accent-color}}'; }md-icon.md-THEME_NAME-theme.md-warn {  color: '{{warn-color}}'; }md-icon.md-THEME_NAME-theme.md-danger {  color: '{{danger-color}}'; }md-input-container.md-THEME_NAME-theme .md-input {  color: '{{foreground-1}}';  border-color: '{{foreground-4}}';  text-shadow: '{{foreground-shadow}}'; }  md-input-container.md-THEME_NAME-theme .md-input::-webkit-input-placeholder, md-input-container.md-THEME_NAME-theme .md-input::-moz-placeholder, md-input-container.md-THEME_NAME-theme .md-input:-moz-placeholder, md-input-container.md-THEME_NAME-theme .md-input:-ms-input-placeholder {    color: '{{foreground-3}}'; }md-input-container.md-THEME_NAME-theme > md-icon {  fill: '{{foreground-1}}'; }md-input-container.md-THEME_NAME-theme label, md-input-container.md-THEME_NAME-theme .md-placeholder {  text-shadow: '{{foreground-shadow}}';  color: '{{foreground-3}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-has-value label {  color: '{{foreground-2}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused .md-input {  border-color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused label {  color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused md-icon {  fill: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent .md-input {  border-color: '{{accent-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent label {  color: '{{accent-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn .md-input {  border-color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn label {  color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid .md-input {  border-color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid label {  color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid data-ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid x-ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid [ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid [data-ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid [x-ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid .md-char-counter {  color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme .md-input[disabled], [disabled] md-input-container.md-THEME_NAME-theme .md-input {  border-bottom-color: transparent;  color: '{{foreground-3}}';  background-image: linear-gradient(to right, '{{foreground-4}}' 0%, '{{foreground-4}}' 33%, transparent 0%);  background-image: -ms-linear-gradient(left, transparent 0%, '{{foreground-4}}' 100%); }md-progress-circular.md-THEME_NAME-theme {  background-color: transparent; }  md-progress-circular.md-THEME_NAME-theme .md-inner .md-gap {    border-top-color: '{{primary-color}}';    border-bottom-color: '{{primary-color}}'; }  md-progress-circular.md-THEME_NAME-theme .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme .md-inner .md-right .md-half-circle {    border-top-color: '{{primary-color}}'; }  md-progress-circular.md-THEME_NAME-theme .md-inner .md-right .md-half-circle {    border-right-color: '{{primary-color}}'; }  md-progress-circular.md-THEME_NAME-theme .md-inner .md-left .md-half-circle {    border-left-color: '{{primary-color}}'; }  md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-gap {    border-top-color: '{{warn-color}}';    border-bottom-color: '{{warn-color}}'; }  md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-right .md-half-circle {    border-top-color: '{{warn-color}}'; }  md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-right .md-half-circle {    border-right-color: '{{warn-color}}'; }  md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-left .md-half-circle {    border-left-color: '{{warn-color}}'; }  md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-gap {    border-top-color: '{{accent-color}}';    border-bottom-color: '{{accent-color}}'; }  md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-right .md-half-circle {    border-top-color: '{{accent-color}}'; }  md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-right .md-half-circle {    border-right-color: '{{accent-color}}'; }  md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-left .md-half-circle {    border-left-color: '{{accent-color}}'; }md-progress-linear.md-THEME_NAME-theme .md-container {  background-color: '{{primary-100}}'; }md-progress-linear.md-THEME_NAME-theme .md-bar {  background-color: '{{primary-color}}'; }md-progress-linear.md-THEME_NAME-theme.md-warn .md-container {  background-color: '{{warn-100}}'; }md-progress-linear.md-THEME_NAME-theme.md-warn .md-bar {  background-color: '{{warn-color}}'; }md-progress-linear.md-THEME_NAME-theme.md-accent .md-container {  background-color: '{{accent-100}}'; }md-progress-linear.md-THEME_NAME-theme.md-accent .md-bar {  background-color: '{{accent-color}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-bar1 {  background-color: '{{warn-100}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-dashed:before {  background: radial-gradient('{{warn-100}}' 0%, '{{warn-100}}' 16%, transparent 42%); }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-bar1 {  background-color: '{{accent-100}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-dashed:before {  background: radial-gradient('{{accent-100}}' 0%, '{{accent-100}}' 16%, transparent 42%); }md-radio-button.md-THEME_NAME-theme .md-off {  border-color: '{{foreground-2}}'; }md-radio-button.md-THEME_NAME-theme .md-on {  background-color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme.md-checked .md-off {  border-color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme.md-checked .md-ink-ripple {  color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme .md-container .md-ripple {  color: '{{accent-600}}'; }md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-on {  background-color: '{{primary-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off {  border-color: '{{primary-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple {  color: '{{primary-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple {  color: '{{primary-600}}'; }md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-on {  background-color: '{{warn-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off {  border-color: '{{warn-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple {  color: '{{warn-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple {  color: '{{warn-600}}'; }md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-off {  border-color: '{{foreground-3}}'; }md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-on {  border-color: '{{foreground-3}}'; }md-radio-group.md-THEME_NAME-theme:focus:not(:empty) {  border-color: '{{foreground-1}}'; }md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-label {  border-bottom-color: '{{primary-color}}';  color: '{{ foreground-1 }}'; }  md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-label.md-placeholder {    color: '{{ foreground-1 }}'; }md-select.md-THEME_NAME-theme:not([disabled]):focus.md-accent .md-select-label {  border-bottom-color: '{{accent-color}}'; }md-select.md-THEME_NAME-theme:not([disabled]):focus.md-warn .md-select-label {  border-bottom-color: '{{warn-color}}'; }md-select.md-THEME_NAME-theme[disabled] .md-select-label {  color: '{{foreground-3}}'; }  md-select.md-THEME_NAME-theme[disabled] .md-select-label.md-placeholder {    color: '{{foreground-3}}'; }md-select.md-THEME_NAME-theme .md-select-label {  border-bottom-color: '{{foreground-4}}'; }  md-select.md-THEME_NAME-theme .md-select-label.md-placeholder {    color: '{{foreground-2}}'; }md-select-menu.md-THEME_NAME-theme md-optgroup {  color: '{{foreground-2}}'; }  md-select-menu.md-THEME_NAME-theme md-optgroup md-option {    color: '{{foreground-1}}'; }md-select-menu.md-THEME_NAME-theme md-option[selected] {  background-color: '{{primary-50}}'; }  md-select-menu.md-THEME_NAME-theme md-option[selected]:focus {    background-color: '{{primary-100}}'; }  md-select-menu.md-THEME_NAME-theme md-option[selected].md-accent {    background-color: '{{accent-50}}'; }    md-select-menu.md-THEME_NAME-theme md-option[selected].md-accent:focus {      background-color: '{{accent-100}}'; }md-select-menu.md-THEME_NAME-theme md-option:focus:not([selected]) {  background: '{{background-200}}'; }md-sidenav.md-THEME_NAME-theme {  background-color: '{{background-hue-3}}'; }md-slider.md-THEME_NAME-theme .md-track {  background-color: '{{foreground-3}}'; }md-slider.md-THEME_NAME-theme .md-track-ticks {  background-color: '{{foreground-4}}'; }md-slider.md-THEME_NAME-theme .md-focus-thumb {  background-color: '{{foreground-2}}'; }md-slider.md-THEME_NAME-theme .md-focus-ring {  border-color: '{{foreground-4}}'; }md-slider.md-THEME_NAME-theme .md-disabled-thumb {  border-color: '{{background-hue-3}}'; }md-slider.md-THEME_NAME-theme.md-min .md-thumb:after {  background-color: '{{background-hue-3}}'; }md-slider.md-THEME_NAME-theme .md-track.md-track-fill {  background-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-thumb:after {  border-color: '{{accent-color}}';  background-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-sign {  background-color: '{{accent-color}}'; }  md-slider.md-THEME_NAME-theme .md-sign:after {    border-top-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-thumb-text {  color: '{{accent-contrast}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-track.md-track-fill {  background-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-thumb:after {  border-color: '{{warn-color}}';  background-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-sign {  background-color: '{{warn-color}}'; }  md-slider.md-THEME_NAME-theme.md-warn .md-sign:after {    border-top-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-thumb-text {  color: '{{warn-contrast}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-track.md-track-fill {  background-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-thumb:after {  border-color: '{{primary-color}}';  background-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-sign {  background-color: '{{primary-color}}'; }  md-slider.md-THEME_NAME-theme.md-primary .md-sign:after {    border-top-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-thumb-text {  color: '{{primary-contrast}}'; }md-slider.md-THEME_NAME-theme[disabled] .md-thumb:after {  border-color: '{{foreground-3}}'; }md-slider.md-THEME_NAME-theme[disabled]:not(.md-min) .md-thumb:after {  background-color: '{{foreground-3}}'; }.md-subheader.md-THEME_NAME-theme {  color: '{{ foreground-2-0.23 }}';  background-color: '{{background-hue-3}}'; }  .md-subheader.md-THEME_NAME-theme.md-primary {    color: '{{primary-color}}'; }  .md-subheader.md-THEME_NAME-theme.md-accent {    color: '{{accent-color}}'; }  .md-subheader.md-THEME_NAME-theme.md-warn {    color: '{{warn-color}}'; }md-switch.md-THEME_NAME-theme .md-thumb {  background-color: '{{background-50}}'; }md-switch.md-THEME_NAME-theme .md-bar {  background-color: '{{background-500}}'; }md-switch.md-THEME_NAME-theme.md-checked .md-thumb {  background-color: '{{accent-color}}'; }md-switch.md-THEME_NAME-theme.md-checked .md-bar {  background-color: '{{accent-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-thumb {  background-color: '{{primary-color}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-bar {  background-color: '{{primary-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-thumb {  background-color: '{{warn-color}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-bar {  background-color: '{{warn-color-0.5}}'; }md-switch.md-THEME_NAME-theme[disabled] .md-thumb {  background-color: '{{background-400}}'; }md-switch.md-THEME_NAME-theme[disabled] .md-bar {  background-color: '{{foreground-4}}'; }md-switch.md-THEME_NAME-theme:focus .md-label:not(:empty) {  border-color: '{{foreground-1}}';  border-style: dotted; }md-tabs.md-THEME_NAME-theme .md-header {  background-color: transparent; }md-tabs.md-THEME_NAME-theme .md-paginator md-icon {  color: '{{primary-color}}'; }md-tabs.md-THEME_NAME-theme.md-accent .md-header {  background-color: '{{accent-color}}'; }md-tabs.md-THEME_NAME-theme.md-accent md-tab:not([disabled]) {  color: '{{accent-100}}'; }  md-tabs.md-THEME_NAME-theme.md-accent md-tab:not([disabled]).active {    color: '{{accent-contrast}}'; }md-tabs.md-THEME_NAME-theme.md-primary .md-header {  background-color: '{{primary-color}}'; }md-tabs.md-THEME_NAME-theme.md-primary md-tab:not([disabled]) {  color: '{{primary-100}}'; }  md-tabs.md-THEME_NAME-theme.md-primary md-tab:not([disabled]).active {    color: '{{primary-contrast}}'; }md-tabs.md-THEME_NAME-theme.md-primary md-tab {  color: '{{primary-100}}'; }  md-tabs.md-THEME_NAME-theme.md-primary md-tab[disabled] {    color: '{{foreground-3}}'; }  md-tabs.md-THEME_NAME-theme.md-primary md-tab:focus {    color: '{{primary-contrast}}';    background-color: '{{primary-contrast-0.1}}'; }  md-tabs.md-THEME_NAME-theme.md-primary md-tab.active {    color: '{{primary-contrast}}'; }  md-tabs.md-THEME_NAME-theme.md-primary md-tab .md-ripple-container {    color: '{{primary-contrast}}'; }md-tabs.md-THEME_NAME-theme.md-warn .md-header {  background-color: '{{warn-color}}'; }md-tabs.md-THEME_NAME-theme.md-warn md-tab:not([disabled]) {  color: '{{warn-100}}'; }  md-tabs.md-THEME_NAME-theme.md-warn md-tab:not([disabled]).active {    color: '{{warn-contrast}}'; }md-tabs.md-THEME_NAME-theme md-tabs-ink-bar {  color: '{{accent-color}}';  background: '{{accent-color}}'; }md-tabs.md-THEME_NAME-theme md-tab {  color: '{{foreground-2}}'; }  md-tabs.md-THEME_NAME-theme md-tab[disabled] {    color: '{{foreground-3}}'; }  md-tabs.md-THEME_NAME-theme md-tab:focus {    color: '{{foreground-1}}'; }  md-tabs.md-THEME_NAME-theme md-tab.active {    color: '{{primary-color}}'; }  md-tabs.md-THEME_NAME-theme md-tab .md-ripple-container {    color: '{{accent-100}}'; }md-input-group.md-THEME_NAME-theme input, md-input-group.md-THEME_NAME-theme textarea {  text-shadow: '{{foreground-shadow}}'; }  md-input-group.md-THEME_NAME-theme input::-webkit-input-placeholder, md-input-group.md-THEME_NAME-theme input::-moz-placeholder, md-input-group.md-THEME_NAME-theme input:-moz-placeholder, md-input-group.md-THEME_NAME-theme input:-ms-input-placeholder, md-input-group.md-THEME_NAME-theme textarea::-webkit-input-placeholder, md-input-group.md-THEME_NAME-theme textarea::-moz-placeholder, md-input-group.md-THEME_NAME-theme textarea:-moz-placeholder, md-input-group.md-THEME_NAME-theme textarea:-ms-input-placeholder {    color: '{{foreground-3}}'; }md-input-group.md-THEME_NAME-theme label {  text-shadow: '{{foreground-shadow}}';  color: '{{foreground-3}}'; }md-input-group.md-THEME_NAME-theme input, md-input-group.md-THEME_NAME-theme textarea {  color: '{{foreground-1}}';  border-color: '{{foreground-4}}'; }md-input-group.md-THEME_NAME-theme.md-input-focused input, md-input-group.md-THEME_NAME-theme.md-input-focused textarea {  border-color: '{{primary-500}}'; }md-input-group.md-THEME_NAME-theme.md-input-focused label {  color: '{{primary-500}}'; }md-input-group.md-THEME_NAME-theme.md-input-focused.md-accent input, md-input-group.md-THEME_NAME-theme.md-input-focused.md-accent textarea {  border-color: '{{accent-500}}'; }md-input-group.md-THEME_NAME-theme.md-input-focused.md-accent label {  color: '{{accent-500}}'; }md-input-group.md-THEME_NAME-theme.md-input-has-value:not(.md-input-focused) label {  color: '{{foreground-2}}'; }md-input-group.md-THEME_NAME-theme .md-input[disabled] {  border-bottom-color: '{{foreground-4}}';  color: '{{foreground-3}}'; }md-toast.md-THEME_NAME-theme {  background-color: '{{foreground-1}}';  color: '{{background-50}}'; }  md-toast.md-THEME_NAME-theme .md-button {    color: '{{background-50}}'; }    md-toast.md-THEME_NAME-theme .md-button.md-highlight {      color: '{{primary-A200}}'; }      md-toast.md-THEME_NAME-theme .md-button.md-highlight.md-accent {        color: '{{accent-A200}}'; }      md-toast.md-THEME_NAME-theme .md-button.md-highlight.md-warn {        color: '{{warn-A200}}'; }md-toolbar.md-THEME_NAME-theme {  background-color: '{{primary-color}}';  color: '{{primary-contrast}}'; }  md-toolbar.md-THEME_NAME-theme .md-button {    color: '{{primary-contrast}}'; }  md-toolbar.md-THEME_NAME-theme.md-accent {    background-color: '{{accent-color}}';    color: '{{accent-contrast}}'; }  md-toolbar.md-THEME_NAME-theme.md-warn {    background-color: '{{warn-color}}';    color: '{{warn-contrast}}'; }md-tooltip.md-THEME_NAME-theme {  color: '{{background-A100}}'; }  md-tooltip.md-THEME_NAME-theme .md-background {    background-color: '{{foreground-2}}'; }")
  }();