/*!
 * Angular Material Design
 * https://github.com/angular/material
 * @license MIT
 * v1.0.5-master-f171fd2
 */
!function(e,t,n){"use strict";function o(e,o,i,l,a,r,c,d,p,h){function f(){i.initOptionalProperties(e,p,{searchText:null,selectedItem:null}),a(o),C(),i.nextTick(function(){b(),$(),x(),o.on("focus",x)})}function g(){function t(){var e=0,t=o.find("md-input-container");if(t.length){var n=t.find("input");e=t.prop("offsetHeight"),e-=n.prop("offsetTop"),e-=n.prop("offsetHeight"),e+=t.prop("offsetTop")}return e}function n(){var e=se.scrollContainer.getBoundingClientRect(),t={};e.right>c.right-m&&(t.left=a.right-e.width+"px"),se.$.scrollContainer.css(t)}if(!se)return i.nextTick(g,!1,e);var l,a=se.wrap.getBoundingClientRect(),r=se.snap.getBoundingClientRect(),c=se.root.getBoundingClientRect(),d=r.bottom-c.top,h=c.bottom-r.top,f=a.left-c.left,$=a.width,x=t();p.mdFloatingLabel&&(f+=s,$-=2*s),l={left:f+"px",minWidth:$+"px",maxWidth:Math.max(a.right-c.left,c.right-a.left)-m+"px"},d>h&&c.height-a.bottom-m<u?(l.top="auto",l.bottom=h+"px",l.maxHeight=Math.min(u,a.top-c.top-m)+"px"):(l.top=d-x+"px",l.bottom="auto",l.maxHeight=Math.min(u,c.bottom+i.scrollTop()-a.bottom-m)+"px"),se.$.scrollContainer.css(l),i.nextTick(n,!1)}function $(){se.$.root.length&&(a(se.$.scrollContainer),se.$.scrollContainer.detach(),se.$.root.append(se.$.scrollContainer),c.pin&&c.pin(se.$.scrollContainer,d))}function x(){e.autofocus&&se.input.focus()}function C(){var n=parseInt(e.delay,10)||0;p.$observe("disabled",function(e){ce.isDisabled=i.parseAttributeBoolean(e,!1)}),p.$observe("required",function(e){ce.isRequired=i.parseAttributeBoolean(e,!1)}),e.$watch("searchText",n?i.debounce(R,n):R),e.$watch("selectedItem",k),t.element(r).on("resize",g),e.$on("$destroy",v)}function v(){if(ce.hidden||i.enableScrolling(),t.element(r).off("resize",g),se){var e="ul scroller scrollContainer input".split(" ");t.forEach(e,function(e){se.$[e].remove()})}}function b(){se={main:o[0],scrollContainer:o[0].getElementsByClassName("md-virtual-repeat-container")[0],scroller:o[0].getElementsByClassName("md-virtual-repeat-scroller")[0],ul:o.find("ul")[0],input:o.find("input")[0],wrap:o.find("md-autocomplete-wrap")[0],root:document.body},se.li=se.ul.getElementsByTagName("li"),se.snap=A(),se.$=T(se)}function A(){for(var e=o;e.length;e=e.parent())if(t.isDefined(e.attr("md-autocomplete-snap")))return e[0];return se.wrap}function T(e){var n={};for(var o in e)e.hasOwnProperty(o)&&(n[o]=t.element(e[o]));return n}function w(t,n){!t&&n?(g(),se&&i.nextTick(function(){i.disableScrollAround(se.ul)},!1,e)):t&&!n&&i.nextTick(function(){i.enableScrolling()},!1,e)}function E(){pe=!0}function y(){fe||se.input.focus(),pe=!1,ce.hidden=U()}function I(){se.input.focus()}function k(t,n){t&&V(t).then(function(o){e.searchText=o,O(t,n)}),t!==n&&M()}function M(){t.isFunction(e.itemChange)&&e.itemChange(_(e.selectedItem))}function L(){t.isFunction(e.textChange)&&e.textChange()}function O(e,t){he.forEach(function(n){n(e,t)})}function D(e){-1==he.indexOf(e)&&he.push(e)}function N(e){var t=he.indexOf(e);-1!=t&&he.splice(t,1)}function R(t,n){ce.index=q(),t!==n&&V(e.selectedItem).then(function(o){t!==o&&(e.selectedItem=null,t!==n&&L(),J()?ae():(ce.matches=[],W(!1),te()))})}function F(){fe=!1,pe||(ce.hidden=U())}function S(e){e&&(pe=!1,fe=!1),se.input.blur()}function H(){fe=!0,t.isString(e.searchText)||(e.searchText=""),ce.hidden=U(),ce.hidden||ae()}function B(e){switch(e.keyCode){case l.KEY_CODE.DOWN_ARROW:if(ce.loading)return;e.stopPropagation(),e.preventDefault(),ce.index=Math.min(ce.index+1,ce.matches.length-1),oe(),te();break;case l.KEY_CODE.UP_ARROW:if(ce.loading)return;e.stopPropagation(),e.preventDefault(),ce.index=ce.index<0?ce.matches.length-1:Math.max(0,ce.index-1),oe(),te();break;case l.KEY_CODE.TAB:if(y(),ce.hidden||ce.loading||ce.index<0||ce.matches.length<1)return;X(ce.index);break;case l.KEY_CODE.ENTER:if(ce.hidden||ce.loading||ce.index<0||ce.matches.length<1)return;if(Y())return;e.stopPropagation(),e.preventDefault(),X(ce.index);break;case l.KEY_CODE.ESCAPE:e.stopPropagation(),e.preventDefault(),Z(),S(!0)}}function P(){return t.isNumber(e.minLength)?e.minLength:1}function V(t){function n(t){return t&&e.itemText?e.itemText(_(t)):null}return h.when(n(t)||t)}function _(e){if(!e)return n;var t={};return ce.itemName&&(t[ce.itemName]=e),t}function q(){return e.autoselect?0:-1}function W(e){ce.loading!=e&&(ce.loading=e),ce.hidden=U()}function U(){return ce.loading&&!K()?!0:Y()?!0:fe?!j():!0}function j(){return J()&&K()||le()}function K(){return!!ce.matches.length}function Y(){return!!ce.scope.selectedItem}function z(){return ce.loading&&!Y()}function G(){return V(ce.matches[ce.index])}function J(){return(e.searchText||"").length>=P()}function Q(e,t,n){Object.defineProperty(ce,e,{get:function(){return n},set:function(e){var o=n;n=e,t(e,o)}})}function X(t){i.nextTick(function(){V(ce.matches[t]).then(function(e){var t=se.$.input.controller("ngModel");t.$setViewValue(e),t.$render()})["finally"](function(){e.selectedItem=ce.matches[t],W(!1)})},!1)}function Z(){W(!0),ce.index=0,ce.matches=[],e.searchText="",X(-1);var t=document.createEvent("CustomEvent");t.initCustomEvent("input",!0,!0,{value:e.searchText}),se.input.dispatchEvent(t),se.input.focus()}function ee(n){function o(t){t&&(t=h.when(t),W(!0),$e=!0,i.nextTick(function(){t.then(l)["finally"](function(){W(!1),$e=!1})},!0,e))}function l(t){de[r]=t,(n||"")===(e.searchText||"")&&(ce.matches=t,ce.hidden=U(),e.selectOnMatch&&re(),te(),g())}var a=e.$parent.$eval(me),r=n.toLowerCase(),c=t.isArray(a);c?l(a):o(a)}function te(){G().then(function(e){ce.messages=[ne(),e]})}function ne(){if(ge===ce.matches.length)return"";switch(ge=ce.matches.length,ce.matches.length){case 0:return"There are no matches available.";case 1:return"There is 1 match available.";default:return"There are "+ce.matches.length+" matches available."}}function oe(){if(se.li[0]){var e=se.li[0].offsetHeight,t=e*ce.index,n=t+e,o=se.scroller.clientHeight,i=se.scroller.scrollTop;i>t?ie(t):n>i+o&&ie(n-o)}}function ie(e){se.$.scrollContainer.controller("mdVirtualRepeatContainer").scrollTo(e)}function le(){var e=(ce.scope.searchText||"").length;return ce.hasNotFound&&!K()&&(!ce.loading||$e)&&e>=P()&&(fe||pe)&&!Y()}function ae(){var t=e.searchText||"",n=t.toLowerCase();!e.noCache&&de[n]?(ce.matches=de[n],te()):ee(t),ce.hidden=U()}function re(){var t=e.searchText,n=ce.matches,o=n[0];1===n.length&&V(o).then(function(n){var o=t==n;e.matchInsensitive&&!o&&(o=t.toLowerCase()==n.toLowerCase()),o&&X(0)})}var ce=this,ue=e.itemsExpr.split(/ in /i),me=ue[1],se=null,de={},pe=!1,he=[],fe=!1,ge=0,$e=!1;return Q("hidden",w,!0),ce.scope=e,ce.parent=e.$parent,ce.itemName=ue[0],ce.matches=[],ce.loading=!1,ce.hidden=!0,ce.index=null,ce.messages=[],ce.id=i.nextUid(),ce.isDisabled=null,ce.isRequired=null,ce.hasNotFound=!1,ce.keydown=B,ce.blur=F,ce.focus=H,ce.clear=Z,ce.select=X,ce.listEnter=E,ce.listLeave=y,ce.mouseUp=I,ce.getCurrentDisplayValue=G,ce.registerSelectedItemWatcher=D,ce.unregisterSelectedItemWatcher=N,ce.notFoundVisible=le,ce.loadingIsVisible=z,f()}function i(){return{controller:"MdAutocompleteCtrl",controllerAs:"$mdAutocompleteCtrl",scope:{inputName:"@mdInputName",inputMinlength:"@mdInputMinlength",inputMaxlength:"@mdInputMaxlength",searchText:"=?mdSearchText",selectedItem:"=?mdSelectedItem",itemsExpr:"@mdItems",itemText:"&mdItemText",placeholder:"@placeholder",noCache:"=?mdNoCache",selectOnMatch:"=?mdSelectOnMatch",matchInsensitive:"=?mdMatchCaseInsensitive",itemChange:"&?mdSelectedItemChange",textChange:"&?mdSearchTextChange",minLength:"=?mdMinLength",delay:"=?mdDelay",autofocus:"=?mdAutofocus",floatingLabel:"@?mdFloatingLabel",autoselect:"=?mdAutoselect",menuClass:"@?mdMenuClass",inputId:"@?mdInputId"},link:function(e,t,n,o){o.hasNotFound=!!t.attr("md-has-not-found")},template:function(e,t){function n(){var t=e.find("md-item-template").detach(),n=t.length?t.html():e.html();return t.length||e.empty(),"<md-autocomplete-parent-scope md-autocomplete-replace>"+n+"</md-autocomplete-parent-scope>"}function o(){var t=e.find("md-not-found").detach(),n=t.length?t.html():"";return n?'<li ng-if="$mdAutocompleteCtrl.notFoundVisible()"                         md-autocomplete-parent-scope>'+n+"</li>":""}function i(){return t.mdFloatingLabel?'            <md-input-container flex ng-if="floatingLabel">              <label>{{floatingLabel}}</label>              <input type="search"                  '+(null!=c?'tabindex="'+c+'"':"")+'                  id="{{ inputId || \'fl-input-\' + $mdAutocompleteCtrl.id }}"                  name="{{inputName}}"                  autocomplete="off"                  ng-required="$mdAutocompleteCtrl.isRequired"                  ng-minlength="inputMinlength"                  ng-maxlength="inputMaxlength"                  ng-disabled="$mdAutocompleteCtrl.isDisabled"                  ng-model="$mdAutocompleteCtrl.scope.searchText"                  ng-keydown="$mdAutocompleteCtrl.keydown($event)"                  ng-blur="$mdAutocompleteCtrl.blur()"                  ng-focus="$mdAutocompleteCtrl.focus()"                  aria-owns="ul-{{$mdAutocompleteCtrl.id}}"                  '+(null!=t.mdSelectOnFocus?'md-select-on-focus=""':"")+'                  aria-label="{{floatingLabel}}"                  aria-autocomplete="list"                  aria-haspopup="true"                  aria-activedescendant=""                  aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/>              <div md-autocomplete-parent-scope md-autocomplete-replace>'+r+"</div>            </md-input-container>":'            <input flex type="search"                '+(null!=c?'tabindex="'+c+'"':"")+'                id="{{ inputId || \'input-\' + $mdAutocompleteCtrl.id }}"                name="{{inputName}}"                ng-if="!floatingLabel"                autocomplete="off"                ng-required="$mdAutocompleteCtrl.isRequired"                ng-disabled="$mdAutocompleteCtrl.isDisabled"                ng-model="$mdAutocompleteCtrl.scope.searchText"                ng-keydown="$mdAutocompleteCtrl.keydown($event)"                ng-blur="$mdAutocompleteCtrl.blur()"                ng-focus="$mdAutocompleteCtrl.focus()"                placeholder="{{placeholder}}"                aria-owns="ul-{{$mdAutocompleteCtrl.id}}"                '+(null!=t.mdSelectOnFocus?'md-select-on-focus=""':"")+'                aria-label="{{placeholder}}"                aria-autocomplete="list"                aria-haspopup="true"                aria-activedescendant=""                aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/>            <button                type="button"                tabindex="-1"                ng-if="$mdAutocompleteCtrl.scope.searchText && !$mdAutocompleteCtrl.isDisabled"                ng-click="$mdAutocompleteCtrl.clear()">              <md-icon md-svg-icon="md-close"></md-icon>              <span class="_md-visually-hidden">Clear</span>            </button>                '}var l=o(),a=n(),r=e.html(),c=t.tabindex;return l&&e.attr("md-has-not-found",!0),e.attr("tabindex","-1"),'        <md-autocomplete-wrap            layout="row"            ng-class="{ \'md-whiteframe-z1\': !floatingLabel, \'md-menu-showing\': !$mdAutocompleteCtrl.hidden }"            role="listbox">          '+i()+'          <md-progress-linear              class="'+(t.mdFloatingLabel?"md-inline":"")+'"              ng-if="$mdAutocompleteCtrl.loadingIsVisible()"              md-mode="indeterminate"></md-progress-linear>          <md-virtual-repeat-container              md-auto-shrink              md-auto-shrink-min="1"              ng-mouseenter="$mdAutocompleteCtrl.listEnter()"              ng-mouseleave="$mdAutocompleteCtrl.listLeave()"              ng-mouseup="$mdAutocompleteCtrl.mouseUp()"              ng-hide="$mdAutocompleteCtrl.hidden"              class="md-autocomplete-suggestions-container md-whiteframe-z1"              ng-class="{ \'md-not-found\': $mdAutocompleteCtrl.notFoundVisible() }"              role="presentation">            <ul class="md-autocomplete-suggestions"                ng-class="::menuClass"                id="ul-{{$mdAutocompleteCtrl.id}}">              <li md-virtual-repeat="item in $mdAutocompleteCtrl.matches"                  ng-class="{ selected: $index === $mdAutocompleteCtrl.index }"                  ng-click="$mdAutocompleteCtrl.select($index)"                  md-extra-name="$mdAutocompleteCtrl.itemName">                  '+a+"                  </li>"+l+'            </ul>          </md-virtual-repeat-container>        </md-autocomplete-wrap>        <aria-status            class="_md-visually-hidden"            role="status"            aria-live="assertive">          <p ng-repeat="message in $mdAutocompleteCtrl.messages track by $index" ng-if="message">{{message}}</p>        </aria-status>'}}}function l(e,t){function n(e,n,o){return function(e,n,i){function l(n,o){c[o]=e[n],e.$watch(n,function(e){t.nextTick(function(){c[o]=e})})}function a(){var t=!1,n=!1;e.$watch(function(){n||t||(t=!0,e.$$postDigest(function(){n||c.$digest(),t=n=!1}))}),c.$watch(function(){n=!0})}var r=e.$mdAutocompleteCtrl,c=r.parent.$new(),u=r.itemName;l("$index","$index"),l("item",u),a(),o(c,function(e){n.after(e)})}}return{restrict:"AE",compile:n,terminal:!0,transclude:"element"}}function a(e,n,o){function i(i,l){var r=null,c=null,u=o.mdHighlightFlags||"",m=e.$watch(function(e){return{term:i(e),unsafeText:l(e)}},function(e,o){null!==r&&e.unsafeText===o.unsafeText||(r=t.element("<div>").text(e.unsafeText).html()),null!==c&&e.term===o.term||(c=a(e.term,u)),n.html(r.replace(c,'<span class="highlight">$&</span>'))},!0);n.on("$destroy",m)}function l(e){return e&&e.replace(/[\\\^\$\*\+\?\.\(\)\|\{}\[\]]/g,"\\$&")}function a(e,t){var n="";return t.indexOf("^")>=1&&(n+="^"),n+=e,t.indexOf("$")>=1&&(n+="$"),new RegExp(l(n),t.replace(/[\$\^]/g,""))}this.init=i}function r(e,t){return{terminal:!0,controller:"MdHighlightCtrl",compile:function(n,o){var i=t(o.mdHighlightText),l=e(n.html());return function(e,t,n,o){o.init(i,l)}}}}t.module("material.components.autocomplete",["material.core","material.components.icon","material.components.virtualRepeat"]),t.module("material.components.autocomplete").controller("MdAutocompleteCtrl",o);var c=41,u=5.5*c,m=8,s=2;o.$inject=["$scope","$element","$mdUtil","$mdConstant","$mdTheming","$window","$animate","$rootElement","$attrs","$q"],t.module("material.components.autocomplete").directive("mdAutocomplete",i),t.module("material.components.autocomplete").directive("mdAutocompleteParentScope",l),l.$inject=["$compile","$mdUtil"],t.module("material.components.autocomplete").controller("MdHighlightCtrl",a),a.$inject=["$scope","$element","$attrs"],t.module("material.components.autocomplete").directive("mdHighlightText",r),r.$inject=["$interpolate","$parse"]}(window,window.angular);