[CORD-1685] Adding copyright informations

Change-Id: I7c5e9ac0538c25133dc3cdefa24343f45f9b7a6d
diff --git a/dev/index.html b/dev/index.html
index c47ac2d..8c910ad 100644
--- a/dev/index.html
+++ b/dev/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+
 <!DOCTYPE html>
 <html lang="en">
 <head>
diff --git a/dev/js/alert.dev.js b/dev/js/alert.dev.js
index 6d5cefc..05a6614 100644
--- a/dev/js/alert.dev.js
+++ b/dev/js/alert.dev.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 'use strict';

 

 angular.module('ngXosLib')

diff --git a/dev/js/field.dev.js b/dev/js/field.dev.js
index 1f59629..badb886 100644
--- a/dev/js/field.dev.js
+++ b/dev/js/field.dev.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 'use strict';

 

 angular.module('ngXosLib')

diff --git a/dev/js/form.dev.js b/dev/js/form.dev.js
index b955253..96fbb92 100644
--- a/dev/js/form.dev.js
+++ b/dev/js/form.dev.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 'use strict';

 

 angular.module('ngXosLib')

diff --git a/dev/js/main.js b/dev/js/main.js
index 445374d..3c30d62 100644
--- a/dev/js/main.js
+++ b/dev/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /* eslint-disable angular/ng_module_name */
 (function(){
   'use strict';
diff --git a/dev/js/smart-table.dev.js b/dev/js/smart-table.dev.js
index 0388e19..9b22d1e 100644
--- a/dev/js/smart-table.dev.js
+++ b/dev/js/smart-table.dev.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/dev/js/table.dev.js b/dev/js/table.dev.js
index 4ac974d..32424a5 100644
--- a/dev/js/table.dev.js
+++ b/dev/js/table.dev.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 'use strict';

 

 angular.module('ngXosLib')

diff --git a/dev/templates/alert.dev.html b/dev/templates/alert.dev.html
index a528e7e..81c6e7f 100644
--- a/dev/templates/alert.dev.html
+++ b/dev/templates/alert.dev.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+
 

 <xos-alert config="vm.config1">

   A sample alert message

diff --git a/dev/templates/field.dev.html b/dev/templates/field.dev.html
index 7e50a5e..1b93889 100644
--- a/dev/templates/field.dev.html
+++ b/dev/templates/field.dev.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+
 <xos-field ng-model="vm.field1.model" name="vm.field1.name" field="vm.field1.field"></xos-field>

 <xos-field ng-model="vm.field2.model" name="vm.field2.name" field="vm.field2.field"></xos-field>

 <xos-field ng-model="vm.field3.model" name="vm.field3.name" field="vm.field3.field"></xos-field>

diff --git a/dev/templates/form.dev.html b/dev/templates/form.dev.html
index d2f12ff..4cabf4b 100644
--- a/dev/templates/form.dev.html
+++ b/dev/templates/form.dev.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+
 <xos-form ng-model="vm.model" config="vm.config"></xos-form>

diff --git a/dev/templates/nav.dev.html b/dev/templates/nav.dev.html
index 6dfbcae..6b7ba3e 100644
--- a/dev/templates/nav.dev.html
+++ b/dev/templates/nav.dev.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+
 <nav class="navbar navbar-default">

   <div class="">

     <ul class="nav navbar-nav">

diff --git a/dev/templates/smart-table.dev.html b/dev/templates/smart-table.dev.html
index 2c74e70..24c45c4 100644
--- a/dev/templates/smart-table.dev.html
+++ b/dev/templates/smart-table.dev.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+
 <xos-smart-table config="vm.config"></xos-smart-table>
\ No newline at end of file
diff --git a/dev/templates/table.dev.html b/dev/templates/table.dev.html
index 41c10bf..ba67351 100644
--- a/dev/templates/table.dev.html
+++ b/dev/templates/table.dev.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+
 <xos-table config="vm.config" data="vm.data"></xos-table>
\ No newline at end of file
diff --git a/dist/ngXosHelpers.min.js b/dist/ngXosHelpers.min.js
index 271d3a8..38cbd2a 100644
--- a/dist/ngXosHelpers.min.js
+++ b/dist/ngXosHelpers.min.js
@@ -1,2 +1,20 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 "use strict";function _toConsumableArray(e){if(Array.isArray(e)){for(var n=0,i=Array(e.length);n<e.length;n++)i[n]=e[n];return i}return Array.from(e)}!function(){angular.module("xos.uiComponents",["chart.js","RecursionHelper","dndLists"])}(),function(){angular.module("xos.uiComponents").component("xosSmartTable",{restrict:"E",bindings:{config:"="},template:'\n        <div class="row" ng-show="vm.data.length > 0">\n          <div class="col-xs-12 text-right">\n            <a href="" class="btn btn-success" ng-click="vm.createItem()">\n              Add\n            </a>\n          </div>\n        </div>\n        <div class="row">\n          <div class="col-xs-12 table-responsive">\n            <xos-table config="vm.tableConfig" data="vm.data"></xos-table>\n          </div>\n        </div>\n        <div class="panel panel-default" ng-show="vm.detailedItem">\n          <div class="panel-heading">\n            <div class="row">\n              <div class="col-xs-11">\n                <h3 class="panel-title" ng-show="vm.detailedItem.id">Update {{vm.config.resource}} {{vm.detailedItem.id}}</h3>\n                <h3 class="panel-title" ng-show="!vm.detailedItem.id">Create {{vm.config.resource}} item</h3>\n              </div>\n              <div class="col-xs-1">\n                <a href="" ng-click="vm.cleanForm()">\n                  <i class="glyphicon glyphicon-remove pull-right"></i>\n                </a>\n              </div>\n            </div>\n          </div>\n          <div class="panel-body">\n            <xos-form config="vm.formConfig" ng-model="vm.detailedItem"></xos-form>\n          </div>\n        </div>\n        <xos-alert config="{type: \'success\', closeBtn: true}" show="vm.responseMsg">{{vm.responseMsg}}</xos-alert>\n        <xos-alert config="{type: \'danger\', closeBtn: true}" show="vm.responseErr">{{vm.responseErr}}</xos-alert>\n      ',bindToController:!0,controllerAs:"vm",controller:["$injector","LabelFormatter","_","XosFormHelpers",function(e,n,i,o){var t=this;this.responseMsg=!1,this.responseErr=!1,this.tableConfig={columns:[],actions:[{label:"delete",icon:"remove",cb:function(e){t.Resource["delete"]({id:e.id}).$promise.then(function(){i.remove(t.data,function(n){return n.id===e.id}),t.responseMsg=t.config.resource+" with id "+e.id+" successfully deleted"})["catch"](function(n){t.responseErr=n.data.detail||"Error while deleting "+t.config.resource+" with id "+e.id})},color:"red"},{label:"details",icon:"search",cb:function(e){t.detailedItem=e}}],classes:"table table-striped table-bordered table-responsive",filter:"field",order:!0,pagination:{pageSize:10}},this.formConfig={exclude:this.config.hiddenFields,fields:{},formName:this.config.resource+"Form",actions:[{label:"Save",icon:"ok",cb:function(e){var n=void 0,i=!0;e.id?(n=e.$update(),i=!1):n=e.$save(),n.then(function(n){i&&t.data.push(angular.copy(n)),delete t.detailedItem,t.responseMsg=t.config.resource+" with id "+e.id+" successfully saved"})["catch"](function(n){t.responseErr=n.data.detail||"Error while saving "+t.config.resource+" with id "+e.id})},"class":"success"}]},this.cleanForm=function(){delete t.detailedItem},this.createItem=function(){t.detailedItem=new t.Resource},this.Resource=e.get(this.config.resource);var r=function(){t.Resource.query().$promise.then(function(e){if(!e[0])return void(t.data=e);var r=e[0],a=Object.keys(r);i.remove(a,function(e){return"id"===e||"validators"===e}),angular.isArray(t.config.hiddenFields)&&(a=i.difference(a,t.config.hiddenFields)),a.forEach(function(e){var i={label:n.format(e),prop:e};i.type=o._getFieldFormat(r[e]),t.tableConfig.columns.push(i)}),a.forEach(function(e){t.formConfig.fields[e]={label:n.format(e).replace(":",""),type:o._getFieldFormat(r[e])}}),t.data=e})};r()}]})}(),function(){angular.module("xos.uiComponents").component("xosSmartPie",{restrict:"E",bindings:{config:"="},template:'\n      <canvas\n        class="chart chart-pie {{vm.config.classes}}"\n        chart-data="vm.data" chart-labels="vm.labels"\n        chart-legend="{{vm.config.legend}}">\n      </canvas>\n    ',bindToController:!0,controllerAs:"vm",controller:["$injector","$interval","$scope","$timeout","_",function(e,n,i,o,t){var r=this;if(!this.config.resource&&!this.config.data)throw new Error("[xosSmartPie] Please provide a resource or an array of data in the configuration");var a=function(e){return t.groupBy(e,r.config.groupBy)},s=function(e){return t.reduce(Object.keys(e),function(n,i){return n.concat(e[i].length)},[])},l=function(e){return angular.isFunction(r.config.labelFormatter)?r.config.labelFormatter(Object.keys(e)):Object.keys(e)},c=function(e){var n=a(e);r.data=s(n),r.labels=l(n)};this.config.resource?!function(){r.Resource=e.get(r.config.resource);var i=function(){r.Resource.query().$promise.then(function(e){e[0]&&c(e)})};i(),r.config.poll&&n(function(){i()},1e3*r.config.poll)}():i.$watch(function(){return r.config.data},function(e){e&&c(r.config.data)},!0),i.$on("create",function(e,n){console.log("create: "+n.id)}),i.$on("destroy",function(e,n){console.log("destroy: "+n.id)})}]})}(),function(){angular.module("xos.uiComponents").component("xosValidation",{restrict:"E",bindings:{field:"=",form:"="},template:'\n      <div ng-cloak>\n        <xos-alert config="vm.config" show="vm.field.$error.required !== undefined && vm.field.$error.required !== false  && (vm.field.$touched || vm.form.$submitted)">\n          Field required\n        </xos-alert>\n        <xos-alert config="vm.config" show="vm.field.$error.email !== undefined && vm.field.$error.email !== false && (vm.field.$touched || vm.form.$submitted)">\n          This is not a valid email\n        </xos-alert>\n        <xos-alert config="vm.config" show="vm.field.$error.minlength !== undefined && vm.field.$error.minlength !== false && (vm.field.$touched || vm.form.$submitted)">\n          Too short\n        </xos-alert>\n        <xos-alert config="vm.config" show="vm.field.$error.maxlength !== undefined && vm.field.$error.maxlength !== false && (vm.field.$touched || vm.form.$submitted)">\n          Too long\n        </xos-alert>\n        <xos-alert config="vm.config" show="vm.field.$error.custom !== undefined && vm.field.$error.custom !== false && (vm.field.$touched || vm.form.$submitted)">\n          Field invalid\n        </xos-alert>\n      </div>\n    ',transclude:!0,bindToController:!0,controllerAs:"vm",controller:function(){this.config={type:"danger"}}})}(),function(){angular.module("xos.uiComponents").component("xosTable",{restrict:"E",bindings:{data:"=",config:"="},template:'\n        <div ng-show="vm.data.length > 0 && vm.loader == false">\n          <div class="row" ng-if="vm.config.filter == \'fulltext\'">\n            <div class="col-xs-12">\n              <input\n                class="form-control"\n                placeholder="Type to search.."\n                type="text"\n                ng-model="vm.query"/>\n            </div>\n          </div>\n          <table ng-class="vm.classes" ng-hide="vm.data.length == 0">\n            <thead>\n              <tr>\n                <th ng-repeat="col in vm.columns">\n                  {{col.label}}\n                  <span ng-if="vm.config.order">\n                    <a href="" ng-click="vm.orderBy = col.prop; vm.reverse = false">\n                      <i class="glyphicon glyphicon-chevron-up"></i>\n                    </a>\n                    <a href="" ng-click="vm.orderBy = col.prop; vm.reverse = true">\n                      <i class="glyphicon glyphicon-chevron-down"></i>\n                    </a>\n                  </span>\n                </th>\n                <th ng-if="vm.config.actions">Actions:</th>\n              </tr>\n            </thead>\n            <tbody ng-if="vm.config.filter == \'field\'">\n              <tr>\n                <td ng-repeat="col in vm.columns">\n                  <input\n                    ng-if="col.type !== \'boolean\' && col.type !== \'array\' && col.type !== \'object\' && col.type !== \'custom\'"\n                    class="form-control"\n                    placeholder="Type to search by {{col.label}}"\n                    type="text"\n                    ng-model="vm.query[col.prop]"/>\n                  <select\n                    ng-if="col.type === \'boolean\'"\n                    class="form-control"\n                    ng-model="vm.query[col.prop]">\n                    <option value="">-</option>\n                    <option value="true">True</option>\n                    <option value="false">False</option>\n                  </select>\n                </td>\n                <td ng-if="vm.config.actions"></td>\n              </tr>\n            </tbody>\n            <tbody>\n              <tr ng-repeat="item in vm.data | filter:vm.query:vm.comparator | orderBy:vm.orderBy:vm.reverse | pagination:vm.currentPage * vm.config.pagination.pageSize | limitTo: (vm.config.pagination.pageSize || vm.data.length) track by $index">\n                <td ng-repeat="col in vm.columns" xos-link-wrapper>\n                  <span ng-if="!col.type || col.type === \'text\'">{{item[col.prop]}}</span>\n                  <span ng-if="col.type === \'boolean\'">\n                    <i class="glyphicon"\n                      ng-class="{\'glyphicon-ok\': item[col.prop], \'glyphicon-remove\': !item[col.prop]}">\n                    </i>\n                  </span>\n                  <span ng-if="col.type === \'date\'">\n                    {{item[col.prop] | date:\'H:mm MMM d, yyyy\'}}\n                  </span>\n                  <span ng-if="col.type === \'array\'">\n                    {{item[col.prop] | arrayToList}}\n                  </span>\n                  <span ng-if="col.type === \'object\'">\n                    <dl class="dl-horizontal">\n                      <span ng-repeat="(k,v) in item[col.prop]">\n                        <dt>{{k}}</dt>\n                        <dd>{{v}}</dd>\n                      </span>\n                    </dl>\n                  </span>\n                  <span ng-if="col.type === \'custom\'">\n                    {{col.formatter(item)}}\n                  </span>\n                  <span ng-if="col.type === \'icon\'">\n                    <i class="glyphicon glyphicon-{{col.formatter(item)}}">\n                    </i>\n                  </span>\n                </td>\n                <td ng-if="vm.config.actions">\n                  <a href=""\n                    ng-repeat="action in vm.config.actions"\n                    ng-click="action.cb(item)"\n                    title="{{action.label}}">\n                    <i\n                      class="glyphicon glyphicon-{{action.icon}}"\n                      style="color: {{action.color}};"></i>\n                  </a>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n          <xos-pagination\n            ng-if="vm.config.pagination"\n            page-size="vm.config.pagination.pageSize"\n            total-elements="vm.data.length"\n            change="vm.goToPage">\n            </xos-pagination>\n        </div>\n        <div ng-show="(vm.data.length == 0 || !vm.data) && vm.loader == false">\n           <xos-alert config="{type: \'info\'}">\n            No data to show.\n          </xos-alert>\n        </div>\n        <div ng-show="vm.loader == true">\n          <div class="loader"></div>\n        </div>\n      ',bindToController:!0,controllerAs:"vm",controller:["_","$scope","Comparator",function(e,n,i){var o=this;if(this.comparator=i,this.loader=!0,n.$watch(function(){return o.data},function(e){angular.isDefined(e)&&(o.loader=!1)}),!this.config)throw new Error('[xosTable] Please provide a configuration via the "config" attribute');if(!this.config.columns)throw new Error("[xosTable] Please provide a columns list in the configuration");this.config.order&&angular.isObject(this.config.order)&&(this.reverse=this.config.order.reverse||!1,this.orderBy=this.config.order.field||"id");var t=e.filter(this.config.columns,{type:"custom"});angular.isArray(t)&&t.length>0&&e.forEach(t,function(e){if(!e.formatter||!angular.isFunction(e.formatter))throw new Error("[xosTable] You have provided a custom field type, a formatter function should provided too.")});var r=e.filter(this.config.columns,{type:"icon"});angular.isArray(r)&&r.length>0&&e.forEach(r,function(e){if(!e.formatter||!angular.isFunction(e.formatter))throw new Error("[xosTable] You have provided an icon field type, a formatter function should provided too.")});var a=e.filter(this.config.columns,function(e){return angular.isDefined(e.link)});angular.isArray(a)&&a.length>0&&e.forEach(a,function(e){if(!angular.isFunction(e.link))throw new Error("[xosTable] The link property should be a function.")}),this.columns=this.config.columns,this.classes=this.config.classes||"table table-striped table-bordered",this.config.actions,this.config.pagination&&(this.currentPage=0,this.goToPage=function(e){o.currentPage=e})}]}).filter("arrayToList",function(){return function(e){return angular.isArray(e)?e.join(", "):e}}).directive("xosLinkWrapper",function(){return{restrict:"A",transclude:!0,template:'\n          <a ng-if="col.link" href="{{col.link(item)}}">\n            <div ng-transclude></div>\n          </a>\n          <div ng-transclude ng-if="!col.link"></div>\n        '}})}(),function(){angular.module("xos.uiComponents").component("xosPagination",{restrict:"E",bindings:{pageSize:"=",totalElements:"=",change:"="},template:'\n      <div class="row" ng-if="vm.pageList.length > 1">\n        <div class="col-xs-12 text-center">\n          <ul class="pagination">\n            <li\n              ng-click="vm.goToPage(vm.currentPage - 1)"\n              ng-class="{disabled: vm.currentPage == 0}">\n              <a href="" aria-label="Previous">\n                  <span aria-hidden="true">&laquo;</span>\n              </a>\n            </li>\n            <li ng-repeat="i in vm.pageList" ng-class="{active: i === vm.currentPage}">\n              <a href="" ng-click="vm.goToPage(i)">{{i + 1}}</a>\n            </li>\n            <li\n              ng-click="vm.goToPage(vm.currentPage + 1)"\n              ng-class="{disabled: vm.currentPage == vm.pages - 1}">\n              <a href="" aria-label="Next">\n                  <span aria-hidden="true">&raquo;</span>\n              </a>\n            </li>\n          </ul>\n        </div>\n      </div>\n    ',bindToController:!0,controllerAs:"vm",controller:["$scope",function(e){var n=this;this.currentPage=0,this.goToPage=function(e){e<0||e===n.pages||(n.currentPage=e,n.change(e))},this.createPages=function(e){for(var n=[],i=0;i<e;i++)n.push(i);return n},e.$watch(function(){return n.totalElements},function(){n.totalElements&&(n.pages=Math.ceil(n.totalElements/n.pageSize),n.pageList=n.createPages(n.pages))})}]}).filter("pagination",function(){return function(e,n){return e&&angular.isArray(e)?(n=parseInt(n,10),e.slice(n)):e}})}(),function(){angular.module("xos.uiComponents").component("xosField",{restrict:"E",bindings:{name:"=",field:"=",ngModel:"="},template:'\n      <label ng-if="vm.field.type !== \'object\' && vm.field.type !== \'array\'">{{vm.field.label}}</label>\n      <input\n        xos-custom-validator custom-validator="vm.field.validators.custom || null"\n        ng-if="vm.field.type !== \'boolean\' && vm.field.type !== \'object\' && vm.field.type !== \'select\' && vm.field.type !== \'array\'"\n        type="{{vm.field.type}}"\n        name="{{vm.name}}"\n        class="form-control"\n        ng-model="vm.ngModel"\n        ng-minlength="vm.field.validators.minlength || 0"\n        ng-maxlength="vm.field.validators.maxlength || 2000"\n        ng-required="vm.field.validators.required || false" />\n        <select class="form-control" ng-if ="vm.field.type === \'select\'"\n          name = "{{vm.name}}"\n          ng-options="item.id as item.label for item in vm.field.options"\n          ng-model="vm.ngModel"\n          ng-required="vm.field.validators.required || false">\n          </select>\n      <span class="boolean-field" ng-if="vm.field.type === \'boolean\'">\n        <a href="#"\n          class="btn btn-success"\n          ng-show="vm.ngModel"\n          ng-click="vm.ngModel = false">\n          <i class="glyphicon glyphicon-ok"></i>\n        </a>\n        <a href="#"\n          class="btn btn-danger"\n          ng-show="!vm.ngModel"\n          ng-click="vm.ngModel = true">\n          <i class="glyphicon glyphicon-remove"></i>\n        </a>\n      </span>\n      <div\n        class="panel panel-default object-field"\n        ng-if="vm.field.type == \'object\' && (!vm.isEmptyObject(vm.ngModel) || !vm.isEmptyObject(vm.field.properties))"\n        >\n        <div class="panel-heading">{{vm.field.label}}</div>\n        <div class="panel-body">\n          <div ng-if="!vm.field.properties" ng-repeat="(k, v) in vm.ngModel">\n            <xos-field\n              name="k"\n              field="{label: vm.formatLabel(k), type: vm.getType(v)}"\n              ng-model="v">\n            </xos-field>\n          </div>\n          <div ng-if="vm.field.properties" ng-repeat="(k, v) in vm.field.properties">\n            <xos-field\n              name="k"\n              field="{\n                label: v.label || vm.formatLabel(k),\n                type: v.type,\n                validators: v.validators\n              }"\n              ng-model="vm.ngModel[k]">\n            </xos-field>\n          </div>\n        </div>\n      </div>\n      <div\n        class="panel panel-default array-field"\n        ng-if="vm.field.type == \'array\'">\n        <div class="panel-heading">{{vm.field.label}}</div>\n        <div class="panel-body selected">\n          <ul class="draggable" dnd-list="vm.ngModel">\n            <li\n              class="array-element"\n              ng-repeat="item in vm.ngModel"\n              dnd-draggable="item"\n              dnd-moved="vm.ngModel.splice($index, 1)"\n              dnd-effect-allowed="move"\n              dnd-selected="models.selected = item"\n              >\n              <div class="well well-sm text-center">\n                {{item}}\n              </div>\n            </li>\n            <div class="clearfix"></div>\n          </ul>\n        </div>\n        <div class="panel-body unselected">\n          <ul class="draggable" dnd-list="vm.field.availableOptions">\n            <li\n              class="array-element"\n              ng-repeat="item in vm.field.availableOptions"\n              dnd-draggable="item"\n              dnd-moved="vm.field.availableOptions.splice($index, 1)"\n              dnd-effect-allowed="move"\n              dnd-selected="models.selected = item"\n              >\n              <div class="well well-sm text-center">\n                {{item}}\n              </div>\n            </li>\n            <div class="clearfix"></div>\n          </ul>\n        </div>\n      </div>\n    ',bindToController:!0,controllerAs:"vm",controller:["$attrs","$scope","XosFormHelpers","LabelFormatter","_",function(e,n,i,o,t){var r=this;if(!this.name)throw new Error("[xosField] Please provide a field name");if(!this.field)throw new Error("[xosField] Please provide a field definition");if(!this.field.type)throw new Error("[xosField] Please provide a type in the field definition");if(!e.ngModel)throw new Error("[xosField] Please provide an ng-model");this.getType=i._getFieldFormat,this.formatLabel=o.format,this.isEmptyObject=function(e){return!e||0===Object.keys(e).length},"array"===this.field.type&&n.$watch(function(){return r.ngModel.length},function(){r.field.availableOptions=t.difference(r.field.options,r.ngModel)})}]}).directive("xosCustomValidator",function(){return{restrict:"A",scope:{fn:"=customValidator"},require:"ngModel",link:function(e,n,i,o){function t(n){var i=e.fn(n);return angular.isArray(i)?o.$setValidity.apply(o,_toConsumableArray(i)):o.$setValidity("custom",i),n}angular.isFunction(e.fn)&&o.$parsers.push(t)}}})}(),function(){angular.module("xos.uiComponents").component("xosForm",{restrict:"E",bindings:{config:"=",ngModel:"="},template:'\n      <form name="vm.{{vm.config.formName || \'form\'}}" novalidate>\n        <div class="form-group" ng-repeat="(name, field) in vm.formField">\n          <xos-field name="name" field="field" ng-model="vm.ngModel[name]"></xos-field>\n          <xos-validation field="vm[vm.config.formName || \'form\'][name]" form = "vm[vm.config.formName || \'form\']"></xos-validation>\n          <div class="alert alert-info" ng-show="(field.hint).length >0" role="alert">{{field.hint}}</div>\n        </div>\n        <div class="form-group" ng-if="vm.config.actions">\n        <xos-alert config="vm.config.feedback" show="vm.config.feedback.show">{{vm.config.feedback.message}}</xos-alert>\n\n          <button role="button" href=""\n            ng-repeat="action in vm.config.actions"\n            ng-click="action.cb(vm.ngModel, vm[vm.config.formName || \'form\'])"\n            class="btn btn-{{action.class}}"\n            title="{{action.label}}">\n            <i class="glyphicon glyphicon-{{action.icon}}"></i>\n            {{action.label}}\n          </button>\n        </div>\n      </form>\n    ',bindToController:!0,controllerAs:"vm",controller:["$scope","$log","_","XosFormHelpers",function(e,n,i,o){var t=this;if(!this.config)throw new Error('[xosForm] Please provide a configuration via the "config" attribute');if(!this.config.actions)throw new Error("[xosForm] Please provide an action list in the configuration");this.config.feedback||(this.config.feedback={show:!1,message:"Form submitted successfully !!!",type:"success"}),this.excludedField=["id","validators","created","updated","deleted","backend_status"],this.config&&this.config.exclude&&(this.excludedField=this.excludedField.concat(this.config.exclude)),this.formField=[],e.$watch(function(){return t.config},function(){if(t.ngModel){var e=i.difference(Object.keys(t.ngModel),t.excludedField),n=o.parseModelField(e);t.formField=o.buildFormStructure(n,t.config.fields,t.ngModel,t.config.order)}},!0),e.$watch(function(){return t.ngModel},function(e){if(t.formField={},e){var n=i.difference(Object.keys(e),t.excludedField),r=o.parseModelField(n);t.formField=o.buildFormStructure(r,t.config.fields,e,t.config.order)}})}]})}(),function(){angular.module("xos.uiComponents").component("xosAlert",{restrict:"E",bindings:{config:"=",show:"=?"},template:'\n      <div ng-cloak class="alert alert-{{vm.config.type}}" ng-hide="!vm.show">\n        <button type="button" class="close" ng-if="vm.config.closeBtn" ng-click="vm.dismiss()">\n          <span aria-hidden="true">&times;</span>\n        </button>\n        <p ng-transclude></p>\n      </div>\n    ',transclude:!0,bindToController:!0,controllerAs:"vm",controller:["$timeout",function(e){var n=this;if(!this.config)throw new Error('[xosAlert] Please provide a configuration via the "config" attribute');this.show=this.show!==!1,this.dismiss=function(){n.show=!1},this.config.autoHide&&!function(){var i=e(function(){n.dismiss(),e.cancel(i)},n.config.autoHide)}()}]})}(),function(){function e(){var e=function(e){return e.split("_").join(" ").trim()},n=function(e){return e.split(/(?=[A-Z])/).map(function(e){return e.toLowerCase()}).join(" ")},i=function(e){return e.slice(0,1).toUpperCase()+e.slice(1)},o=function(o){return o=e(o),o=n(o),o=i(o).replace(/\s\s+/g," ")+":",o.replace("::",":")};return{_formatByUnderscore:e,_formatByUppercase:n,_capitalize:i,format:o}}angular.module("xos.uiComponents").factory("LabelFormatter",e)}();var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(){angular.module("xos.uiComponents").service("XosFormHelpers",["_","LabelFormatter",function(e,n){var i=this;this._isEmail=function(e){var n=/(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/;return n.test(e)},this._getFieldFormat=function(e){return angular.isArray(e)?"array":angular.isDate(e)||!Number.isNaN(Date.parse(e))&&/^\d+-\d+-\d+\D\d+:\d+:\d+\.\d+\D/.test(e)?"date":"boolean"==typeof e?"boolean":i._isEmail(e)?"email":angular.isString(e)||null===e?"text":"undefined"==typeof e?"undefined":_typeof(e)},this.buildFormStructure=function(o,t,r,a){var s={};return o=angular.extend(o,t),t=t||{},a&&e.each(a,function(e){s[e]={}}),e.each(Object.keys(o),function(e){s[e]={label:t[e]&&t[e].label?t[e].label+":":n.format(e),type:t[e]&&t[e].type?t[e].type:i._getFieldFormat(r[e]),validators:t[e]&&t[e].validators?t[e].validators:{},hint:t[e]&&t[e].hint?t[e].hint:""},t[e]&&t[e].options&&(s[e].options=t[e].options),t[e]&&t[e].properties&&(s[e].properties=t[e].properties),"date"===s[e].type&&(r[e]=new Date(r[e])),"number"===s[e].type&&(r[e]=parseInt(r[e],10))}),s},this.parseModelField=function(n){return e.reduce(n,function(e,n){return e[n]={},e},{})}}])}(),function(){function e(e){return function(n,i){if(angular.isUndefined(n))return!1;if(null===n||null===i)return n===i;if(angular.isObject(i)||angular.isObject(n))return angular.equals(i,n);if(e.isBoolean(n)||e.isBoolean(i))return 0!==n&&1!==n||(n=!!n),angular.equals(i,n);if(!angular.isString(n)||!angular.isString(i)){if(!angular.isDefined(n.toString)||!angular.isDefined(i.toString))return n===i;n=n.toString(),i=i.toString()}return n=n.toLowerCase()+"",i=i.toLowerCase()+"",n.indexOf(i)!==-1}}e.$inject=["_"],angular.module("xos.uiComponents").factory("Comparator",e)}(),function(){function e(e,n,i){e.interceptors.push("SetCSRFToken"),i.defaults.stripTrailingSlashes=!1}e.$inject=["$httpProvider","$interpolateProvider","$resourceProvider"],angular.module("xos.helpers",["ngCookies","ngResource","ngAnimate","xos.uiComponents"]).config(e).factory("_",["$window",function(e){return e._}])}(),function(){angular.module("xos.helpers").service("vSG-Collection",["$resource",function(e){return e("/api/service/vsg/")}])}(),function(){angular.module("xos.helpers").service("vOLT-Collection",["$resource",function(e){return e("/api/tenant/cord/volt/:volt_id/",{volt_id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("Login",["$resource",function(e){return e("/api/utility/login/")}]).service("Logout",["$resource",function(e){return e("/api/utility/logout/")}])}(),function(){angular.module("xos.helpers").service("Users",["$resource",function(e){return e("/api/core/users/:id/",{id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("Truckroll",["$resource",function(e){return e("/api/tenant/truckroll/:id/",{id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("Tenants",["$resource",function(e){return e("/api/core/tenants/:id/",{id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("Subscribers",["$resource",function(e){return e("/api/tenant/cord/subscriber/:id/",{id:"@id"},{update:{method:"PUT"},"View-a-Subscriber-Features-Detail":{method:"GET",isArray:!1,url:"/api/tenant/cord/subscriber/:id/features/"},"Read-Subscriber-uplink_speed":{method:"GET",isArray:!1,url:"/api/tenant/cord/subscriber/:id/features/uplink_speed/"},"Update-Subscriber-uplink_speed":{method:"PUT",isArray:!1,url:"/api/tenant/cord/subscriber/:id/features/uplink_speed/"},"Read-Subscriber-downlink_speed":{method:"GET",isArray:!1,url:"/api/tenant/cord/subscriber/:id/features/downlink_speed/"},"Update-Subscriber-downlink_speed":{method:"PUT",isArray:!1,url:"/api/tenant/cord/subscriber/:id/features/downlink_speed/"},"Read-Subscriber-cdn":{method:"GET",isArray:!1,url:"/api/tenant/cord/subscriber/:id/features/cdn/"},"Update-Subscriber-cdn":{method:"PUT",isArray:!1,url:"/api/tenant/cord/subscriber/:id/features/cdn/"},"Read-Subscriber-uverse":{method:"GET",isArray:!1,url:"/api/tenant/cord/subscriber/:id/features/uverse/"},"Update-Subscriber-uverse":{method:"PUT",isArray:!1,url:"/api/tenant/cord/subscriber/:id/features/uverse/"},"Read-Subscriber-status":{method:"GET",isArray:!1,url:"/api/tenant/cord/subscriber/:id/features/status/"},"Update-Subscriber-status":{method:"PUT",isArray:!1,url:"/api/tenant/cord/subscriber/:id/features/status/"}})}])}(),function(){angular.module("xos.helpers").service("SlicesPlus",["$http","$q",function(e,n){this.query=function(i){var o=n.defer();return e.get("/api/utility/slicesplus/",{params:i}).then(function(e){o.resolve(e.data)})["catch"](function(e){o.reject(e.data)}),{$promise:o.promise}},this.get=function(i,o){var t=n.defer();return e.get("/api/utility/slicesplus/"+i,{params:o}).then(function(e){t.resolve(e.data)})["catch"](function(e){t.reject(e.data)}),{$promise:t.promise}}}])}(),function(){angular.module("xos.helpers").service("Slices",["$resource",function(e){return e("/api/core/slices/:id/",{id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("Sites",["$resource",function(e){return e("/api/core/sites/:id/",{id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("Services",["$resource",function(e){return e("/api/core/services/:id/",{id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("ONOS-Services-Collection",["$resource",function(e){return e("/api/service/onos/")}])}(),function(){angular.module("xos.helpers").service("ONOS-App-Collection",["$resource",function(e){return e("/api/tenant/onos/app/")}])}(),function(){angular.module("xos.helpers").service("Nodes",["$resource",function(e){return e("/api/core/nodes/:id/",{id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("Networkstemplates",["$resource",function(e){return e("/api/core/networktemplates/:id/",{id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("Networks",["$resource",function(e){return e("/api/core/networks/:id/",{id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("Me",["$q","$http",function(e,n){this.get=function(){var i=e.defer();return n.get("/api/utility/me/").then(function(e){i.resolve(e.data)})["catch"](function(e){i.reject(e)}),i.promise}}])}(),function(){angular.module("xos.helpers").service("Instances",["$resource",function(e){return e("/api/core/instances/:id/",{id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("Images",["$resource",function(e){return e("/api/core/images/:id/",{id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("Flavors",["$resource",function(e){return e("/api/core/flavors/:id/",{id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("Example-Services-Collection",["$resource",function(e){return e("/api/service/exampleservice/")}])}(),function(){angular.module("xos.helpers").service("Deployments",["$resource",function(e){return e("/api/core/deployments/:id/",{id:"@id"},{update:{method:"PUT"}})}])}(),function(){angular.module("xos.helpers").service("Dashboards",["$resource","$q","$http",function(e,n,i){var o=e("/api/core/dashboardviews/:id/",{id:"@id"},{update:{method:"PUT"}});return o.prototype.$save=function(){var e=n.defer();return i.put("/api/core/dashboardviews/"+this.id+"/",this).then(function(n){e.resolve(n.data)})["catch"](function(n){e.reject(n.data)}),e.promise},o}])}(),function(){angular.module("xos.helpers").service("XosUserPrefs",["$cookies","Me","$q",function(e,n,i){var o=this,t=e.get("xosUserPrefs")?angular.fromJson(e.get("xosUserPrefs")):{};this.getAll=function(){return t=e.get("xosUserPrefs")?angular.fromJson(e.get("xosUserPrefs")):{}},this.setAll=function(n){e.put("xosUserPrefs",angular.toJson(n))},this.getSynchronizerNotificationStatus=function(){var e=!(arguments.length<=0||void 0===arguments[0])&&arguments[0];return e?o.getAll().synchronizers.notification[e]:o.getAll().synchronizers.notification},this.getUserDetailsCookie=function(){
 var e=i.defer(),n=o.getAll();return n.userData?e.resolve(n.userData):o.setUserDetailsCookie().$promise.then(function(n){e.resolve(n)}),{$promise:e.promise}},this.setUserDetailsCookie=function(){var e=arguments.length<=0||void 0===arguments[0]?null:arguments[0],t=i.defer(),r=o.getAll();return e?(r.userData=e,o.setAll(r),t.resolve(e)):n.get().then(function(e){r.userData=e,o.setAll(r),t.resolve(e)})["catch"](function(e){t.reject(e)}),{$promise:t.promise}},this.setSynchronizerNotificationStatus=function(){var e=!(arguments.length<=0||void 0===arguments[0])&&arguments[0],n=arguments[1];if(!e)throw new Error("[XosUserPrefs] When updating a synchronizer is mandatory to provide a name.");var i=o.getAll();i.synchronizers||(i.synchronizers={notification:{}}),i.synchronizers.notification[e]=n,o.setAll(i)}}])}(),function(){angular.module("xos.helpers").service("GraphService",["$q","Tenants","Services",function(e,n,i){var o=this;this.loadCoarseData=function(){var o=void 0,t=e.defer();return i.query().$promise.then(function(e){return o=e,n.query({kind:"coarse"}).$promise}).then(function(e){t.resolve({tenants:e,services:o})}),t.promise},this.getCoarseGraph=function(){return o.loadCoarseData().then(function(e){console.log(e)}),"ciao"}}])}(),function(){angular.module("xos.helpers").factory("Notification",function(){return window.Notification}).service("xosNotification",["$q","$log","Notification",function(e,n,i){var o=this;this.checkPermission=function(){var n=e.defer();return i.requestPermission().then(function(e){"granted"===e?n.resolve(e):n.reject(e)}),n.promise},this.sendNotification=function(e,o){var t=new i(e,o);t.onerror=function(e){n.error(e)}},this.notify=function(e,t){"Notification"in window?"granted"!==i.permission?o.checkPermission().then(function(){return o.sendNotification(e,t)}):"granted"===i.permission&&o.sendNotification(e,t):n.info("This browser does not support desktop notification")}}])}(),function(){function e(){return{request:function(e){return e.url.indexOf(".html")===-1&&(e.url+="?no_hyperlinks=1"),e}}}angular.module("xos.helpers").factory("NoHyperlinks",e)}(),angular.module("xos.helpers").config(["$provide",function(e){e.decorator("$log",["$delegate",function(e){var n=function(){return window.location.href.indexOf("debug=true")>=0},i=e.log,o=e.info,t=e.warn,r=e.debug,a=function(i){return function(){if(n()){var o=[].slice.call(arguments),t=new Date;return o[0]="["+t.getHours()+":"+t.getMinutes()+":"+t.getSeconds()+"] "+o[0],!angular.isFunction(e.reset)||e.debug.logs instanceof Array||e.reset(),i.apply(null,o)}}};return e.info=a(o),e.log=a(i),e.warn=a(t),e.debug=a(r),e}])}]),function(){function e(e){return{request:function(n){return"GET"!==n.method&&(n.headers["X-CSRFToken"]=e.get("xoscsrftoken")),n}}}e.$inject=["$cookies"],angular.module("xos.helpers").factory("SetCSRFToken",e)}();
\ No newline at end of file
diff --git a/dist/ngXosVendor.min.js b/dist/ngXosVendor.min.js
index c79b894..8d5b7bd 100644
--- a/dist/ngXosVendor.min.js
+++ b/dist/ngXosVendor.min.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 !function(t){"use strict";function n(t,n){return n=n||Error,function(){var e,r,i=2,o=arguments,a=o[0],u="["+(t?t+":":"")+a+"] ",s=o[1];for(u+=s.replace(/\{\d+\}/g,function(t){var n=+t.slice(1,-1),e=n+i;return e<o.length?yt(o[e]):t}),u+="\nhttp://errors.angularjs.org/1.5.8/"+(t?t+"/":"")+a,r=i,e="?";r<o.length;r++,e="&")u+=e+"p"+(r-i)+"="+encodeURIComponent(yt(o[r]));return new n(u)}}function e(t){if(null==t||M(t))return!1;if(Zr(t)||x(t)||Fr&&t instanceof Fr)return!0;var n="length"in Object(t)&&t.length;return w(n)&&(n>=0&&(n-1 in t||t instanceof Array)||"function"==typeof t.item)}function r(t,n,i){var o,a;if(t)if(S(t))for(o in t)"prototype"==o||"length"==o||"name"==o||t.hasOwnProperty&&!t.hasOwnProperty(o)||n.call(i,t[o],o,t);else if(Zr(t)||e(t)){var u="object"!=typeof t;for(o=0,a=t.length;o<a;o++)(u||o in t)&&n.call(i,t[o],o,t)}else if(t.forEach&&t.forEach!==r)t.forEach(n,i,t);else if(b(t))for(o in t)n.call(i,t[o],o,t);else if("function"==typeof t.hasOwnProperty)for(o in t)t.hasOwnProperty(o)&&n.call(i,t[o],o,t);else for(o in t)Or.call(t,o)&&n.call(i,t[o],o,t);return t}function i(t,n,e){for(var r=Object.keys(t).sort(),i=0;i<r.length;i++)n.call(e,t[r[i]],r[i]);return r}function o(t){return function(n,e){t(e,n)}}function a(){return++Gr}function u(t,n){n?t.$$hashKey=n:delete t.$$hashKey}function s(t,n,e){for(var r=t.$$hashKey,i=0,o=n.length;i<o;++i){var a=n[i];if($(a)||S(a))for(var l=Object.keys(a),c=0,f=l.length;c<f;c++){var h=l[c],p=a[h];e&&$(p)?C(p)?t[h]=new Date(p.valueOf()):_(p)?t[h]=new RegExp(p):p.nodeName?t[h]=p.cloneNode(!0):N(p)?t[h]=p.clone():($(t[h])||(t[h]=Zr(p)?[]:{}),s(t[h],[p],!0)):t[h]=p}}return u(t,r),t}function l(t){return s(t,zr.call(arguments,1),!1)}function c(t){return s(t,zr.call(arguments,1),!0)}function f(t){return parseInt(t,10)}function h(t,n){return l(Object.create(t),n)}function p(){}function d(t){return t}function v(t){return function(){return t}}function g(t){return S(t.toString)&&t.toString!==Wr}function m(t){return"undefined"==typeof t}function y(t){return"undefined"!=typeof t}function $(t){return null!==t&&"object"==typeof t}function b(t){return null!==t&&"object"==typeof t&&!Ur(t)}function x(t){return"string"==typeof t}function w(t){return"number"==typeof t}function C(t){return"[object Date]"===Wr.call(t)}function S(t){return"function"==typeof t}function _(t){return"[object RegExp]"===Wr.call(t)}function M(t){return t&&t.window===t}function k(t){return t&&t.$evalAsync&&t.$watch}function A(t){return"[object File]"===Wr.call(t)}function E(t){return"[object FormData]"===Wr.call(t)}function P(t){return"[object Blob]"===Wr.call(t)}function T(t){return"boolean"==typeof t}function O(t){return t&&S(t.then)}function L(t){return t&&w(t.length)&&Xr.test(Wr.call(t))}function D(t){return"[object ArrayBuffer]"===Wr.call(t)}function N(t){return!(!t||!(t.nodeName||t.prop&&t.attr&&t.find))}function j(t){var n,e={},r=t.split(",");for(n=0;n<r.length;n++)e[r[n]]=!0;return e}function R(t){return Lr(t.nodeName||t[0]&&t[0].nodeName)}function F(t,n){var e=t.indexOf(n);return e>=0&&t.splice(e,1),e}function I(t,n){function e(t,n){var e,r=n.$$hashKey;if(Zr(t))for(var o=0,a=t.length;o<a;o++)n.push(i(t[o]));else if(b(t))for(e in t)n[e]=i(t[e]);else if(t&&"function"==typeof t.hasOwnProperty)for(e in t)t.hasOwnProperty(e)&&(n[e]=i(t[e]));else for(e in t)Or.call(t,e)&&(n[e]=i(t[e]));return u(n,r),n}function i(t){if(!$(t))return t;var n=a.indexOf(t);if(n!==-1)return s[n];if(M(t)||k(t))throw Hr("cpws","Can't copy! Making copies of Window or Scope instances is not supported.");var r=!1,i=o(t);return void 0===i&&(i=Zr(t)?[]:Object.create(Ur(t)),r=!0),a.push(t),s.push(i),r?e(t,i):i}function o(t){switch(Wr.call(t)){case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Float32Array]":case"[object Float64Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return new t.constructor(i(t.buffer),t.byteOffset,t.length);case"[object ArrayBuffer]":if(!t.slice){var n=new ArrayBuffer(t.byteLength);return new Uint8Array(n).set(new Uint8Array(t)),n}return t.slice(0);case"[object Boolean]":case"[object Number]":case"[object String]":case"[object Date]":return new t.constructor(t.valueOf());case"[object RegExp]":var e=new RegExp(t.source,t.toString().match(/[^\/]*$/)[0]);return e.lastIndex=t.lastIndex,e;case"[object Blob]":return new t.constructor([t],{type:t.type})}if(S(t.cloneNode))return t.cloneNode(!0)}var a=[],s=[];if(n){if(L(n)||D(n))throw Hr("cpta","Can't copy! TypedArray destination cannot be mutated.");if(t===n)throw Hr("cpi","Can't copy! Source and destination are identical.");return Zr(n)?n.length=0:r(n,function(t,e){"$$hashKey"!==e&&delete n[e]}),a.push(t),s.push(n),e(t,n)}return i(t)}function q(t,n){if(t===n)return!0;if(null===t||null===n)return!1;if(t!==t&&n!==n)return!0;var e,r,i,o=typeof t,a=typeof n;if(o==a&&"object"==o){if(!Zr(t)){if(C(t))return!!C(n)&&q(t.getTime(),n.getTime());if(_(t))return!!_(n)&&t.toString()==n.toString();if(k(t)||k(n)||M(t)||M(n)||Zr(n)||C(n)||_(n))return!1;i=dt();for(r in t)if("$"!==r.charAt(0)&&!S(t[r])){if(!q(t[r],n[r]))return!1;i[r]=!0}for(r in n)if(!(r in i)&&"$"!==r.charAt(0)&&y(n[r])&&!S(n[r]))return!1;return!0}if(!Zr(n))return!1;if((e=t.length)==n.length){for(r=0;r<e;r++)if(!q(t[r],n[r]))return!1;return!0}}return!1}function z(t,n,e){return t.concat(zr.call(n,e))}function V(t,n){return zr.call(t,n||0)}function B(t,n){var e=arguments.length>2?V(arguments,2):[];return!S(n)||n instanceof RegExp?n:e.length?function(){return arguments.length?n.apply(t,z(e,arguments,0)):n.apply(t,e)}:function(){return arguments.length?n.apply(t,arguments):n.call(t)}}function W(n,e){var r=e;return"string"==typeof n&&"$"===n.charAt(0)&&"$"===n.charAt(1)?r=void 0:M(e)?r="$WINDOW":e&&t.document===e?r="$DOCUMENT":k(e)&&(r="$SCOPE"),r}function U(t,n){if(!m(t))return w(n)||(n=n?2:null),JSON.stringify(t,W,n)}function H(t){return x(t)?JSON.parse(t):t}function Y(t,n){t=t.replace(ni,"");var e=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(e)?n:e}function G(t,n){return t=new Date(t.getTime()),t.setMinutes(t.getMinutes()+n),t}function Z(t,n,e){e=e?-1:1;var r=t.getTimezoneOffset(),i=Y(n,r);return G(t,e*(i-r))}function X(t){t=Fr(t).clone();try{t.empty()}catch(n){}var e=Fr("<div>").append(t).html();try{return t[0].nodeType===ui?Lr(e):e.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(t,n){return"<"+Lr(n)})}catch(n){return Lr(e)}}function J(t){try{return decodeURIComponent(t)}catch(n){}}function K(t){var n={};return r((t||"").split("&"),function(t){var e,r,i;t&&(r=t=t.replace(/\+/g,"%20"),e=t.indexOf("="),e!==-1&&(r=t.substring(0,e),i=t.substring(e+1)),r=J(r),y(r)&&(i=!y(i)||J(i),Or.call(n,r)?Zr(n[r])?n[r].push(i):n[r]=[n[r],i]:n[r]=i))}),n}function Q(t){var n=[];return r(t,function(t,e){Zr(t)?r(t,function(t){n.push(nt(e,!0)+(t===!0?"":"="+nt(t,!0)))}):n.push(nt(e,!0)+(t===!0?"":"="+nt(t,!0)))}),n.length?n.join("&"):""}function tt(t){return nt(t,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function nt(t,n){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,n?"%20":"+")}function et(t,n){var e,r,i=ei.length;for(r=0;r<i;++r)if(e=ei[r]+n,x(e=t.getAttribute(e)))return e;return null}function rt(t,n){var e,i,o={};r(ei,function(n){var r=n+"app";!e&&t.hasAttribute&&t.hasAttribute(r)&&(e=t,i=t.getAttribute(r))}),r(ei,function(n){var r,o=n+"app";!e&&(r=t.querySelector("["+o.replace(":","\\:")+"]"))&&(e=r,i=r.getAttribute(o))}),e&&(o.strictDi=null!==et(e,"strict-di"),n(e,i?[i]:[],o))}function it(n,e,i){$(i)||(i={});var o={strictDi:!1};i=l(o,i);var a=function(){if(n=Fr(n),n.injector()){var r=n[0]===t.document?"document":X(n);throw Hr("btstrpd","App already bootstrapped with this element '{0}'",r.replace(/</,"&lt;").replace(/>/,"&gt;"))}e=e||[],e.unshift(["$provide",function(t){t.value("$rootElement",n)}]),i.debugInfoEnabled&&e.push(["$compileProvider",function(t){t.debugInfoEnabled(!0)}]),e.unshift("ng");var o=rn(e,i.strictDi);return o.invoke(["$rootScope","$rootElement","$compile","$injector",function(t,n,e,r){t.$apply(function(){n.data("$injector",r),e(n)(t)})}]),o},u=/^NG_ENABLE_DEBUG_INFO!/,s=/^NG_DEFER_BOOTSTRAP!/;return t&&u.test(t.name)&&(i.debugInfoEnabled=!0,t.name=t.name.replace(u,"")),t&&!s.test(t.name)?a():(t.name=t.name.replace(s,""),Yr.resumeBootstrap=function(t){return r(t,function(t){e.push(t)}),a()},void(S(Yr.resumeDeferredBootstrap)&&Yr.resumeDeferredBootstrap()))}function ot(){t.name="NG_ENABLE_DEBUG_INFO!"+t.name,t.location.reload()}function at(t){var n=Yr.element(t).injector();if(!n)throw Hr("test","no injector found for element argument to getTestability");return n.get("$$testability")}function ut(t,n){return n=n||"_",t.replace(ri,function(t,e){return(e?n:"")+t.toLowerCase()})}function st(){var n;if(!ii){var e=ti();Ir=m(e)?t.jQuery:e?t[e]:void 0,Ir&&Ir.fn.on?(Fr=Ir,l(Ir.fn,{scope:Mi.scope,isolateScope:Mi.isolateScope,controller:Mi.controller,injector:Mi.injector,inheritedData:Mi.inheritedData}),n=Ir.cleanData,Ir.cleanData=function(t){for(var e,r,i=0;null!=(r=t[i]);i++)e=Ir._data(r,"events"),e&&e.$destroy&&Ir(r).triggerHandler("$destroy");n(t)}):Fr=Et,Yr.element=Fr,ii=!0}}function lt(t,n,e){if(!t)throw Hr("areq","Argument '{0}' is {1}",n||"?",e||"required");return t}function ct(t,n,e){return e&&Zr(t)&&(t=t[t.length-1]),lt(S(t),n,"not a function, got "+(t&&"object"==typeof t?t.constructor.name||"Object":typeof t)),t}function ft(t,n){if("hasOwnProperty"===t)throw Hr("badname","hasOwnProperty is not a valid {0} name",n)}function ht(t,n,e){if(!n)return t;for(var r,i=n.split("."),o=t,a=i.length,u=0;u<a;u++)r=i[u],t&&(t=(o=t)[r]);return!e&&S(t)?B(o,t):t}function pt(t){for(var n,e=t[0],r=t[t.length-1],i=1;e!==r&&(e=e.nextSibling);i++)(n||t[i]!==e)&&(n||(n=Fr(zr.call(t,0,i))),n.push(e));return n||t}function dt(){return Object.create(null)}function vt(t){function e(t,n,e){return t[n]||(t[n]=e())}var r=n("$injector"),i=n("ng"),o=e(t,"angular",Object);return o.$$minErr=o.$$minErr||n,e(o,"module",function(){var t={};return function(n,o,a){var u=function(t,n){if("hasOwnProperty"===t)throw i("badname","hasOwnProperty is not a valid {0} name",n)};return u(n,"module"),o&&t.hasOwnProperty(n)&&(t[n]=null),e(t,n,function(){function t(t,n,e,r){return r||(r=i),function(){return r[e||"push"]([t,n,arguments]),c}}function e(t,e){return function(r,o){return o&&S(o)&&(o.$$moduleName=n),i.push([t,e,arguments]),c}}if(!o)throw r("nomod","Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",n);var i=[],u=[],s=[],l=t("$injector","invoke","push",u),c={_invokeQueue:i,_configBlocks:u,_runBlocks:s,requires:o,name:n,provider:e("$provide","provider"),factory:e("$provide","factory"),service:e("$provide","service"),value:t("$provide","value"),constant:t("$provide","constant","unshift"),decorator:e("$provide","decorator"),animation:e("$animateProvider","register"),filter:e("$filterProvider","register"),controller:e("$controllerProvider","register"),directive:e("$compileProvider","directive"),component:e("$compileProvider","component"),config:l,run:function(t){return s.push(t),this}};return a&&l(a),c})}})}function gt(t,n){if(Zr(t)){n=n||[];for(var e=0,r=t.length;e<r;e++)n[e]=t[e]}else if($(t)){n=n||{};for(var i in t)"$"===i.charAt(0)&&"$"===i.charAt(1)||(n[i]=t[i])}return n||t}function mt(t){var n=[];return JSON.stringify(t,function(t,e){if(e=W(t,e),$(e)){if(n.indexOf(e)>=0)return"...";n.push(e)}return e})}function yt(t){return"function"==typeof t?t.toString().replace(/ \{[\s\S]*$/,""):m(t)?"undefined":"string"!=typeof t?mt(t):t}function $t(e){l(e,{bootstrap:it,copy:I,extend:l,merge:c,equals:q,element:Fr,forEach:r,injector:rn,noop:p,bind:B,toJson:U,fromJson:H,identity:d,isUndefined:m,isDefined:y,isString:x,isFunction:S,isObject:$,isNumber:w,isElement:N,isArray:Zr,version:fi,isDate:C,lowercase:Lr,uppercase:Dr,callbacks:{$$counter:0},getTestability:at,$$minErr:n,$$csp:Qr,reloadWithDebugInfo:ot}),(qr=vt(t))("ng",["ngLocale"],["$provide",function(t){t.provider({$$sanitizeUri:_e}),t.provider("$compile",vn).directive({a:No,input:ta,textarea:ta,form:qo,script:Za,select:Ka,style:tu,option:Qa,ngBind:ra,ngBindHtml:oa,ngBindTemplate:ia,ngClass:ua,ngClassEven:la,ngClassOdd:sa,ngCloak:ca,ngController:fa,ngForm:zo,ngHide:Va,ngIf:da,ngInclude:va,ngInit:ma,ngNonBindable:La,ngPluralize:Ra,ngRepeat:Fa,ngShow:za,ngStyle:Ba,ngSwitch:Wa,ngSwitchWhen:Ua,ngSwitchDefault:Ha,ngOptions:ja,ngTransclude:Ga,ngModel:Pa,ngList:ya,ngChange:aa,pattern:eu,ngPattern:eu,required:nu,ngRequired:nu,minlength:iu,ngMinlength:iu,maxlength:ru,ngMaxlength:ru,ngValue:ea,ngModelOptions:Oa}).directive({ngInclude:ga}).directive(jo).directive(ha),t.provider({$anchorScroll:on,$animate:Vi,$animateCss:Ui,$$animateJs:qi,$$animateQueue:zi,$$AnimateRunner:Wi,$$animateAsyncRun:Bi,$browser:fn,$cacheFactory:hn,$controller:xn,$document:wn,$exceptionHandler:Cn,$filter:Ie,$$forceReflow:Ji,$interpolate:Rn,$interval:Fn,$http:Ln,$httpParamSerializer:_n,$httpParamSerializerJQLike:Mn,$httpBackend:Nn,$xhrFactory:Dn,$jsonpCallbacks:ao,$location:Qn,$log:te,$parse:$e,$rootScope:Se,$q:be,$$q:xe,$sce:Ee,$sceDelegate:Ae,$sniffer:Pe,$templateCache:pn,$templateRequest:Te,$$testability:Oe,$timeout:Le,$window:je,$$rAF:Ce,$$jqLite:Xt,$$HashMap:Pi,$$cookieReader:Fe})}])}function bt(){return++pi}function xt(t){return t.replace(gi,function(t,n,e,r){return r?e.toUpperCase():e}).replace(mi,"Moz$1")}function wt(t){return!xi.test(t)}function Ct(t){var n=t.nodeType;return n===oi||!n||n===li}function St(t){for(var n in hi[t.ng339])return!0;return!1}function _t(t){for(var n=0,e=t.length;n<e;n++)Lt(t[n])}function Mt(t,n){var e,i,o,a,u=n.createDocumentFragment(),s=[];if(wt(t))s.push(n.createTextNode(t));else{for(e=u.appendChild(n.createElement("div")),i=(wi.exec(t)||["",""])[1].toLowerCase(),o=Si[i]||Si._default,e.innerHTML=o[1]+t.replace(Ci,"<$1></$2>")+o[2],a=o[0];a--;)e=e.lastChild;s=z(s,e.childNodes),e=u.firstChild,e.textContent=""}return u.textContent="",u.innerHTML="",r(s,function(t){u.appendChild(t)}),u}function kt(n,e){e=e||t.document;var r;return(r=bi.exec(n))?[e.createElement(r[1])]:(r=Mt(n,e))?r.childNodes:[]}function At(t,n){var e=t.parentNode;e&&e.replaceChild(n,t),n.appendChild(t)}function Et(t){if(t instanceof Et)return t;var n;if(x(t)&&(t=Jr(t),n=!0),!(this instanceof Et)){if(n&&"<"!=t.charAt(0))throw $i("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new Et(t)}n?It(this,kt(t)):It(this,t)}function Pt(t){return t.cloneNode(!0)}function Tt(t,n){if(n||Lt(t),t.querySelectorAll)for(var e=t.querySelectorAll("*"),r=0,i=e.length;r<i;r++)Lt(e[r])}function Ot(t,n,e,i){if(y(i))throw $i("offargs","jqLite#off() does not support the `selector` argument");var o=Dt(t),a=o&&o.events,u=o&&o.handle;if(u)if(n){var s=function(n){var r=a[n];y(e)&&F(r||[],e),y(e)&&r&&r.length>0||(vi(t,n,u),delete a[n])};r(n.split(" "),function(t){s(t),yi[t]&&s(yi[t])})}else for(n in a)"$destroy"!==n&&vi(t,n,u),delete a[n]}function Lt(t,n){var e=t.ng339,r=e&&hi[e];if(r){if(n)return void delete r.data[n];r.handle&&(r.events.$destroy&&r.handle({},"$destroy"),Ot(t)),delete hi[e],t.ng339=void 0}}function Dt(t,n){var e=t.ng339,r=e&&hi[e];return n&&!r&&(t.ng339=e=bt(),r=hi[e]={events:{},data:{},handle:void 0}),r}function Nt(t,n,e){if(Ct(t)){var r=y(e),i=!r&&n&&!$(n),o=!n,a=Dt(t,!i),u=a&&a.data;if(r)u[n]=e;else{if(o)return u;if(i)return u&&u[n];l(u,n)}}}function jt(t,n){return!!t.getAttribute&&(" "+(t.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+n+" ")>-1}function Rt(t,n){n&&t.setAttribute&&r(n.split(" "),function(n){t.setAttribute("class",Jr((" "+(t.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+Jr(n)+" "," ")))})}function Ft(t,n){if(n&&t.setAttribute){var e=(" "+(t.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");r(n.split(" "),function(t){t=Jr(t),e.indexOf(" "+t+" ")===-1&&(e+=t+" ")}),t.setAttribute("class",Jr(e))}}function It(t,n){if(n)if(n.nodeType)t[t.length++]=n;else{var e=n.length;if("number"==typeof e&&n.window!==n){if(e)for(var r=0;r<e;r++)t[t.length++]=n[r]}else t[t.length++]=n}}function qt(t,n){return zt(t,"$"+(n||"ngController")+"Controller")}function zt(t,n,e){t.nodeType==li&&(t=t.documentElement);for(var r=Zr(n)?n:[n];t;){for(var i=0,o=r.length;i<o;i++)if(y(e=Fr.data(t,r[i])))return e;t=t.parentNode||t.nodeType===ci&&t.host}}function Vt(t){for(Tt(t,!0);t.firstChild;)t.removeChild(t.firstChild)}function Bt(t,n){n||Tt(t);var e=t.parentNode;e&&e.removeChild(t)}function Wt(n,e){e=e||t,"complete"===e.document.readyState?e.setTimeout(n):Fr(e).on("load",n)}function Ut(t,n){var e=ki[n.toLowerCase()];return e&&Ai[R(t)]&&e}function Ht(t){return Ei[t]}function Yt(t,n){var e=function(e,r){e.isDefaultPrevented=function(){return e.defaultPrevented};var i=n[r||e.type],o=i?i.length:0;if(o){if(m(e.immediatePropagationStopped)){var a=e.stopImmediatePropagation;e.stopImmediatePropagation=function(){e.immediatePropagationStopped=!0,e.stopPropagation&&e.stopPropagation(),a&&a.call(e)}}e.isImmediatePropagationStopped=function(){return e.immediatePropagationStopped===!0};var u=i.specialHandlerWrapper||Gt;o>1&&(i=gt(i));for(var s=0;s<o;s++)e.isImmediatePropagationStopped()||u(t,e,i[s])}};return e.elem=t,e}function Gt(t,n,e){e.call(t,n)}function Zt(t,n,e){var r=n.relatedTarget;r&&(r===t||_i.call(t,r))||e.call(t,n)}function Xt(){this.$get=function(){return l(Et,{hasClass:function(t,n){return t.attr&&(t=t[0]),jt(t,n)},addClass:function(t,n){return t.attr&&(t=t[0]),Ft(t,n)},removeClass:function(t,n){return t.attr&&(t=t[0]),Rt(t,n)}})}}function Jt(t,n){var e=t&&t.$$hashKey;if(e)return"function"==typeof e&&(e=t.$$hashKey()),e;var r=typeof t;return e="function"==r||"object"==r&&null!==t?t.$$hashKey=r+":"+(n||a)():r+":"+t}function Kt(t,n){if(n){var e=0;this.nextUid=function(){return++e}}r(t,this.put,this)}function Qt(t){return Function.prototype.toString.call(t)+" "}function tn(t){var n=Qt(t).replace(Ni,""),e=n.match(Ti)||n.match(Oi);return e}function nn(t){var n=tn(t);return n?"function("+(n[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function en(t,n,e){var i,o,a;if("function"==typeof t){if(!(i=t.$inject)){if(i=[],t.length){if(n)throw x(e)&&e||(e=t.name||nn(t)),ji("strictdi","{0} is not using explicit annotation and cannot be invoked in strict mode",e);o=tn(t),r(o[1].split(Li),function(t){t.replace(Di,function(t,n,e){i.push(e)})})}t.$inject=i}}else Zr(t)?(a=t.length-1,ct(t[a],"fn"),i=t.slice(0,a)):ct(t,"fn",!0);return i}function rn(t,n){function e(t){return function(n,e){return $(n)?void r(n,o(t)):t(n,e)}}function i(t,n){if(ft(t,"service"),(S(n)||Zr(n))&&(n=C.instantiate(n)),!n.$get)throw ji("pget","Provider '{0}' must define $get factory method.",t);return w[t+g]=n}function a(t,n){return function(){var e=k.invoke(n,this);if(m(e))throw ji("undef","Provider '{0}' must return a value from $get factory method.",t);return e}}function u(t,n,e){return i(t,{$get:e!==!1?a(t,n):n})}function s(t,n){return u(t,["$injector",function(t){return t.instantiate(n)}])}function l(t,n){return u(t,v(n),!1)}function c(t,n){ft(t,"constant"),w[t]=n,_[t]=n}function f(t,n){var e=C.get(t+g),r=e.$get;e.$get=function(){var t=k.invoke(r,e);return k.invoke(n,null,{$delegate:t})}}function h(t){lt(m(t)||Zr(t),"modulesToLoad","not an array");var n,e=[];return r(t,function(t){function r(t){var n,e;for(n=0,e=t.length;n<e;n++){var r=t[n],i=C.get(r[0]);i[r[1]].apply(i,r[2])}}if(!b.get(t)){b.put(t,!0);try{x(t)?(n=qr(t),e=e.concat(h(n.requires)).concat(n._runBlocks),r(n._invokeQueue),r(n._configBlocks)):S(t)?e.push(C.invoke(t)):Zr(t)?e.push(C.invoke(t)):ct(t,"module")}catch(i){throw Zr(t)&&(t=t[t.length-1]),i.message&&i.stack&&i.stack.indexOf(i.message)==-1&&(i=i.message+"\n"+i.stack),ji("modulerr","Failed to instantiate module {0} due to:\n{1}",t,i.stack||i.message||i)}}}),e}function p(t,e){function r(n,r){if(t.hasOwnProperty(n)){if(t[n]===d)throw ji("cdep","Circular dependency found: {0}",n+" <- "+y.join(" <- "));return t[n]}try{return y.unshift(n),t[n]=d,t[n]=e(n,r)}catch(i){throw t[n]===d&&delete t[n],i}finally{y.shift()}}function i(t,e,i){for(var o=[],a=rn.$$annotate(t,n,i),u=0,s=a.length;u<s;u++){var l=a[u];if("string"!=typeof l)throw ji("itkn","Incorrect injection token! Expected service name as string, got {0}",l);o.push(e&&e.hasOwnProperty(l)?e[l]:r(l,i))}return o}function o(t){return!(Rr<=11)&&("function"==typeof t&&/^(?:class\b|constructor\()/.test(Qt(t)))}function a(t,n,e,r){"string"==typeof e&&(r=e,e=null);var a=i(t,e,r);return Zr(t)&&(t=t[t.length-1]),o(t)?(a.unshift(null),new(Function.prototype.bind.apply(t,a))):t.apply(n,a)}function u(t,n,e){var r=Zr(t)?t[t.length-1]:t,o=i(t,n,e);return o.unshift(null),new(Function.prototype.bind.apply(r,o))}return{invoke:a,instantiate:u,get:r,annotate:rn.$$annotate,has:function(n){return w.hasOwnProperty(n+g)||t.hasOwnProperty(n)}}}n=n===!0;var d={},g="Provider",y=[],b=new Kt([],(!0)),w={$provide:{provider:e(i),factory:e(u),service:e(s),value:e(l),constant:e(c),decorator:f}},C=w.$injector=p(w,function(t,n){throw Yr.isString(n)&&y.push(n),ji("unpr","Unknown provider: {0}",y.join(" <- "))}),_={},M=p(_,function(t,n){var e=C.get(t+g,n);return k.invoke(e.$get,e,void 0,t)}),k=M;w["$injector"+g]={$get:v(M)};var A=h(t);return k=M.get("$injector"),k.strictDi=n,r(A,function(t){t&&k.invoke(t)}),k}function on(){var t=!0;this.disableAutoScrolling=function(){t=!1},this.$get=["$window","$location","$rootScope",function(n,e,r){function i(t){var n=null;return Array.prototype.some.call(t,function(t){if("a"===R(t))return n=t,!0}),n}function o(){var t=u.yOffset;if(S(t))t=t();else if(N(t)){var e=t[0],r=n.getComputedStyle(e);t="fixed"!==r.position?0:e.getBoundingClientRect().bottom}else w(t)||(t=0);return t}function a(t){if(t){t.scrollIntoView();var e=o();if(e){var r=t.getBoundingClientRect().top;n.scrollBy(0,r-e)}}else n.scrollTo(0,0)}function u(t){t=x(t)?t:e.hash();var n;t?(n=s.getElementById(t))?a(n):(n=i(s.getElementsByName(t)))?a(n):"top"===t&&a(null):a(null)}var s=n.document;return t&&r.$watch(function(){return e.hash()},function(t,n){t===n&&""===t||Wt(function(){r.$evalAsync(u)})}),u}]}function an(t,n){return t||n?t?n?(Zr(t)&&(t=t.join(" ")),Zr(n)&&(n=n.join(" ")),t+" "+n):t:n:""}function un(t){for(var n=0;n<t.length;n++){var e=t[n];if(e.nodeType===Fi)return e}}function sn(t){x(t)&&(t=t.split(" "));var n=dt();return r(t,function(t){t.length&&(n[t]=!0)}),n}function ln(t){return $(t)?t:{}}function cn(t,n,e,i){function o(t){try{t.apply(null,V(arguments,1))}finally{if(y--,0===y)for(;$.length;)try{$.pop()()}catch(n){e.error(n)}}}function a(t){var n=t.indexOf("#");return n===-1?"":t.substr(n)}function u(){S=null,s(),l()}function s(){b=_(),b=m(b)?null:b,q(b,A)&&(b=A),A=b}function l(){w===c.url()&&x===b||(w=c.url(),x=b,r(M,function(t){t(c.url(),b)}))}var c=this,f=t.location,h=t.history,d=t.setTimeout,v=t.clearTimeout,g={};c.isMock=!1;var y=0,$=[];c.$$completeOutstandingRequest=o,c.$$incOutstandingRequestCount=function(){y++},c.notifyWhenNoOutstandingRequests=function(t){0===y?t():$.push(t)};var b,x,w=f.href,C=n.find("base"),S=null,_=i.history?function(){try{return h.state}catch(t){}}:p;s(),x=b,c.url=function(n,e,r){if(m(r)&&(r=null),f!==t.location&&(f=t.location),h!==t.history&&(h=t.history),n){var o=x===r;if(w===n&&(!i.history||o))return c;var u=w&&Wn(w)===Wn(n);return w=n,x=r,!i.history||u&&o?(u||(S=n),e?f.replace(n):u?f.hash=a(n):f.href=n,f.href!==n&&(S=n)):(h[e?"replaceState":"pushState"](r,"",n),s(),x=b),S&&(S=n),c}return S||f.href.replace(/%27/g,"'")},c.state=function(){return b};var M=[],k=!1,A=null;c.onUrlChange=function(n){return k||(i.history&&Fr(t).on("popstate",u),Fr(t).on("hashchange",u),k=!0),M.push(n),n},c.$$applicationDestroyed=function(){Fr(t).off("hashchange popstate",u)},c.$$checkUrlChange=l,c.baseHref=function(){var t=C.attr("href");return t?t.replace(/^(https?\:)?\/\/[^\/]*/,""):""},c.defer=function(t,n){var e;return y++,e=d(function(){delete g[e],o(t)},n||0),g[e]=!0,e},c.defer.cancel=function(t){return!!g[t]&&(delete g[t],v(t),o(p),!0)}}function fn(){this.$get=["$window","$log","$sniffer","$document",function(t,n,e,r){return new cn(t,r,n,e)}]}function hn(){this.$get=function(){function t(t,r){function i(t){t!=h&&(p?p==t&&(p=t.n):p=t,o(t.n,t.p),o(t,h),h=t,h.n=null)}function o(t,n){t!=n&&(t&&(t.p=n),n&&(n.n=t))}if(t in e)throw n("$cacheFactory")("iid","CacheId '{0}' is already taken!",t);var a=0,u=l({},r,{id:t}),s=dt(),c=r&&r.capacity||Number.MAX_VALUE,f=dt(),h=null,p=null;return e[t]={put:function(t,n){if(!m(n)){if(c<Number.MAX_VALUE){var e=f[t]||(f[t]={key:t});i(e)}return t in s||a++,s[t]=n,a>c&&this.remove(p.key),n}},get:function(t){if(c<Number.MAX_VALUE){var n=f[t];if(!n)return;i(n)}return s[t]},remove:function(t){if(c<Number.MAX_VALUE){var n=f[t];if(!n)return;n==h&&(h=n.p),n==p&&(p=n.n),o(n.n,n.p),delete f[t]}t in s&&(delete s[t],a--)},removeAll:function(){s=dt(),a=0,f=dt(),h=p=null},destroy:function(){s=null,u=null,f=null,delete e[t]},info:function(){return l({},u,{size:a})}}}var e={};return t.info=function(){var t={};return r(e,function(n,e){t[e]=n.info()}),t},t.get=function(t){return e[t]},t}}function pn(){this.$get=["$cacheFactory",function(t){return t("templates")}]}function dn(){}function vn(n,e){function i(t,n,e){var i=/^\s*([@&<]|=(\*?))(\??)\s*(\w*)\s*$/,o=dt();return r(t,function(t,r){if(t in M)return void(o[r]=M[t]);var a=t.match(i);if(!a)throw Hi("iscp","Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}",n,r,t,e?"controller bindings definition":"isolate scope definition");o[r]={mode:a[1][0],collection:"*"===a[2],optional:"?"===a[3],attrName:a[4]||r},a[4]&&(M[t]=o[r])}),o}function a(t,n){var e={isolateScope:null,bindToController:null};if($(t.scope)&&(t.bindToController===!0?(e.bindToController=i(t.scope,n,!0),e.isolateScope={}):e.isolateScope=i(t.scope,n,!1)),$(t.bindToController)&&(e.bindToController=i(t.bindToController,n,!0)),$(e.bindToController)){var r=t.controller,o=t.controllerAs;if(!r)throw Hi("noctrl","Cannot bind to controller without directive '{0}'s controller.",n);if(!bn(r,o))throw Hi("noident","Cannot bind to controller without identifier for directive '{0}'.",n)}return e}function u(t){var n=t.charAt(0);if(!n||n!==Lr(n))throw Hi("baddir","Directive/Component name '{0}' is invalid. The first character must be a lowercase letter",t);if(t!==t.trim())throw Hi("baddir","Directive/Component name '{0}' is invalid. The name should not contain leading or trailing whitespaces",t)}function s(t){var n=t.require||t.controller&&t.name;return!Zr(n)&&$(n)&&r(n,function(t,e){var r=t.match(C),i=t.substring(r[0].length);i||(n[e]=r[0]+e)}),n}var c={},f="Directive",g=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,b=/(([\w\-]+)(?:\:([^;]+))?;?)/,w=j("ngSrc,ngSrcset,src,srcset"),C=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,_=/^(on[a-z]+|formaction)$/,M=dt();this.directive=function P(t,e){return ft(t,"directive"),x(t)?(u(t),lt(e,"directiveFactory"),c.hasOwnProperty(t)||(c[t]=[],n.factory(t+f,["$injector","$exceptionHandler",function(n,e){var i=[];return r(c[t],function(r,o){try{var a=n.invoke(r);S(a)?a={compile:v(a)}:!a.compile&&a.link&&(a.compile=v(a.link)),a.priority=a.priority||0,a.index=o,a.name=a.name||t,a.require=s(a),a.restrict=a.restrict||"EA",a.$$moduleName=r.$$moduleName,i.push(a)}catch(u){e(u)}}),i}])),c[t].push(e)):r(t,o(P)),this},this.component=function(t,n){function e(t){function e(n){return S(n)||Zr(n)?function(e,r){return t.invoke(n,this,{$element:e,$attrs:r})}:n}var o=n.template||n.templateUrl?n.template:"",a={controller:i,controllerAs:bn(n.controller)||n.controllerAs||"$ctrl",template:e(o),templateUrl:e(n.templateUrl),transclude:n.transclude,scope:{},bindToController:n.bindings||{},restrict:"E",require:n.require};return r(n,function(t,n){"$"===n.charAt(0)&&(a[n]=t)}),a}var i=n.controller||function(){};return r(n,function(t,n){"$"===n.charAt(0)&&(e[n]=t,S(i)&&(i[n]=t))}),e.$inject=["$injector"],this.directive(t,e)},this.aHrefSanitizationWhitelist=function(t){return y(t)?(e.aHrefSanitizationWhitelist(t),this):e.aHrefSanitizationWhitelist()},this.imgSrcSanitizationWhitelist=function(t){return y(t)?(e.imgSrcSanitizationWhitelist(t),this):e.imgSrcSanitizationWhitelist()};var A=!0;this.debugInfoEnabled=function(t){return y(t)?(A=t,this):A};var E=10;this.onChangesTtl=function(t){return arguments.length?(E=t,this):E},this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$sce","$animate","$$sanitizeUri",function(n,e,i,o,u,s,v,M,P,O){function L(){try{if(!--Ct)throw $t=void 0,Hi("infchng","{0} $onChanges() iterations reached. Aborting!\n",E);v.$apply(function(){for(var t=[],n=0,e=$t.length;n<e;++n)try{$t[n]()}catch(r){t.push(r)}if($t=void 0,t.length)throw t})}finally{Ct++}}function D(t,n){if(n){var e,r,i,o=Object.keys(n);for(e=0,r=o.length;e<r;e++)i=o[e],this[i]=n[i]}else this.$attr={};this.$$element=t}function N(t,n,e){xt.innerHTML="<span "+n+">";var r=xt.firstChild.attributes,i=r[0];r.removeNamedItem(i.name),i.value=e,t.attributes.setNamedItem(i)}function j(t,n){try{t.addClass(n)}catch(e){}}function I(n,e,r,i,o){n instanceof Fr||(n=Fr(n));for(var a=/\S+/,u=0,s=n.length;u<s;u++){var l=n[u];l.nodeType===ui&&l.nodeValue.match(a)&&At(l,n[u]=t.document.createElement("span"))}var c=W(n,e,n,r,i,o);I.$$addScopeClass(n);var f=null;return function(t,e,r){lt(t,"scope"),o&&o.needsNewScope&&(t=t.$parent.$new()),r=r||{};var i=r.parentBoundTranscludeFn,a=r.transcludeControllers,u=r.futureParentElement;i&&i.$$boundTransclude&&(i=i.$$boundTransclude),f||(f=z(u));var s;if(s="html"!==f?Fr(ft(f,Fr("<div>").append(n).html())):e?Mi.clone.call(n):n,a)for(var l in a)s.data("$"+l+"Controller",a[l].instance);return I.$$addScopeInfo(s,t),e&&e(s,t),c&&c(t,s,s,i),s}}function z(t){var n=t&&t[0];return n&&"foreignobject"!==R(n)&&Wr.call(n).match(/SVG/)?"svg":"html"}function W(t,n,e,r,i,o){function a(t,e,r,i){var o,a,u,s,l,c,f,h,v;if(p){var g=e.length;for(v=new Array(g),l=0;l<d.length;l+=3)f=d[l],v[f]=e[f]}else v=e;for(l=0,c=d.length;l<c;)u=v[d[l++]],o=d[l++],a=d[l++],o?(o.scope?(s=t.$new(),I.$$addScopeInfo(Fr(u),s)):s=t,h=o.transcludeOnThisElement?U(t,o.transclude,i):!o.templateOnThisElement&&i?i:!i&&n?U(t,n):null,o(a,s,u,r,h)):a&&a(t,u.childNodes,void 0,i)}for(var u,s,l,c,f,h,p,d=[],v=0;v<t.length;v++)u=new D,s=H(t[v],[],u,0===v?r:void 0,i),l=s.length?K(s,t[v],u,n,e,null,[],[],o):null,l&&l.scope&&I.$$addScopeClass(u.$$element),f=l&&l.terminal||!(c=t[v].childNodes)||!c.length?null:W(c,l?(l.transcludeOnThisElement||!l.templateOnThisElement)&&l.transclude:n),(l||f)&&(d.push(v,l,f),h=!0,p=p||l),o=null;return h?a:null}function U(t,n,e){function r(r,i,o,a,u){return r||(r=t.$new(!1,u),r.$$transcluded=!0),n(r,i,{parentBoundTranscludeFn:e,transcludeControllers:o,futureParentElement:a})}var i=r.$$slots=dt();for(var o in n.$$slots)n.$$slots[o]?i[o]=U(t,n.$$slots[o],e):i[o]=null;return r}function H(t,n,e,r,i){var o,a,u=t.nodeType,s=e.$attr;switch(u){case oi:et(n,mn(R(t)),"E",r,i);for(var l,c,f,h,p,d,v=t.attributes,g=0,m=v&&v.length;g<m;g++){var y=!1,w=!1;l=v[g],c=l.name,p=Jr(l.value),h=mn(c),(d=kt.test(h))&&(c=c.replace(Gi,"").substr(8).replace(/_(.)/g,function(t,n){return n.toUpperCase()}));var C=h.match(Et);C&&rt(C[1])&&(y=c,w=c.substr(0,c.length-5)+"end",c=c.substr(0,c.length-6)),f=mn(c.toLowerCase()),s[f]=c,!d&&e.hasOwnProperty(f)||(e[f]=p,Ut(t,f)&&(e[f]=!0)),pt(t,n,p,f,d),et(n,f,"A",r,i,y,w)}if(a=t.className,$(a)&&(a=a.animVal),x(a)&&""!==a)for(;o=b.exec(a);)f=mn(o[2]),et(n,f,"C",r,i)&&(e[f]=Jr(o[3])),a=a.substr(o.index+o[0].length);break;case ui:if(11===Rr)for(;t.parentNode&&t.nextSibling&&t.nextSibling.nodeType===ui;)t.nodeValue=t.nodeValue+t.nextSibling.nodeValue,t.parentNode.removeChild(t.nextSibling);ct(n,t.nodeValue);break;case si:Y(t,n,e,r,i)}return n.sort(at),n}function Y(t,n,e,r,i){try{var o=g.exec(t.nodeValue);if(o){var a=mn(o[1]);
 et(n,a,"M",r,i)&&(e[a]=Jr(o[2]))}}catch(u){}}function G(t,n,e){var r=[],i=0;if(n&&t.hasAttribute&&t.hasAttribute(n)){do{if(!t)throw Hi("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",n,e);t.nodeType==oi&&(t.hasAttribute(n)&&i++,t.hasAttribute(e)&&i--),r.push(t),t=t.nextSibling}while(i>0)}else r.push(t);return Fr(r)}function Z(t,n,e){return function(r,i,o,a,u){return i=G(i[0],n,e),t(r,i,o,a,u)}}function J(t,n,e,r,i,o){var a;return t?I(n,e,r,i,o):function(){return a||(a=I(n,e,r,i,o),n=e=o=null),a.apply(this,arguments)}}function K(t,n,e,o,a,u,s,c,f){function h(t,n,e,r){t&&(e&&(t=Z(t,e,r)),t.require=d.require,t.directiveName=v,(_===d||d.$$isolateScope)&&(t=gt(t,{isolateScope:!0})),s.push(t)),n&&(e&&(n=Z(n,e,r)),n.require=d.require,n.directiveName=v,(_===d||d.$$isolateScope)&&(n=gt(n,{isolateScope:!0})),c.push(n))}function p(t,o,a,u,f){function h(t,n,e,r){var i;if(k(t)||(r=e,e=n,n=t,t=void 0),T&&(i=b),e||(e=T?A.parent():A),!r)return f(t,n,i,e,F);var o=f.$$slots[r];if(o)return o(t,n,i,e,F);if(m(o))throw Hi("noslot",'No parent directive that requires a transclusion with slot name "{0}". Element: {1}',r,X(A))}var p,d,v,g,y,b,x,A,E,P;n===a?(E=e,A=e.$$element):(A=Fr(a),E=new D(A,e)),y=o,_?g=o.$new(!0):w&&(y=o.$parent),f&&(x=h,x.$$boundTransclude=f,x.isSlotFilled=function(t){return!!f.$$slots[t]}),C&&(b=tt(A,E,x,C,g,o,_)),_&&(I.$$addScopeInfo(A,g,!0,!(M&&(M===_||M===_.$$originalDirective))),I.$$addScopeClass(A,!0),g.$$isolateBindings=_.$$isolateBindings,P=yt(o,E,g,g.$$isolateBindings,_),P.removeWatches&&g.$on("$destroy",P.removeWatches));for(var O in b){var L=C[O],N=b[O],j=L.$$bindings.bindToController;N.identifier&&j?N.bindingInfo=yt(y,E,N.instance,j,L):N.bindingInfo={};var R=N();R!==N.instance&&(N.instance=R,A.data("$"+L.name+"Controller",R),N.bindingInfo.removeWatches&&N.bindingInfo.removeWatches(),N.bindingInfo=yt(y,E,N.instance,j,L))}for(r(C,function(t,n){var e=t.require;t.bindToController&&!Zr(e)&&$(e)&&l(b[n].instance,Q(n,e,A,b))}),r(b,function(t){var n=t.instance;if(S(n.$onChanges))try{n.$onChanges(t.bindingInfo.initialChanges)}catch(e){i(e)}if(S(n.$onInit))try{n.$onInit()}catch(e){i(e)}S(n.$doCheck)&&(y.$watch(function(){n.$doCheck()}),n.$doCheck()),S(n.$onDestroy)&&y.$on("$destroy",function(){n.$onDestroy()})}),p=0,d=s.length;p<d;p++)v=s[p],mt(v,v.isolateScope?g:o,A,E,v.require&&Q(v.directiveName,v.require,A,b),x);var F=o;for(_&&(_.template||null===_.templateUrl)&&(F=g),t&&t(F,a.childNodes,void 0,f),p=c.length-1;p>=0;p--)v=c[p],mt(v,v.isolateScope?g:o,A,E,v.require&&Q(v.directiveName,v.require,A,b),x);r(b,function(t){var n=t.instance;S(n.$postLink)&&n.$postLink()})}f=f||{};for(var d,v,g,y,b,x=-Number.MAX_VALUE,w=f.newScopeDirective,C=f.controllerDirectives,_=f.newIsolateScopeDirective,M=f.templateDirective,A=f.nonTlbTranscludeDirective,E=!1,P=!1,T=f.hasElementTranscludeDirective,O=e.$$element=Fr(n),L=u,N=o,j=!1,F=!1,q=0,z=t.length;q<z;q++){d=t[q];var W=d.$$start,U=d.$$end;if(W&&(O=G(n,W,U)),g=void 0,x>d.priority)break;if((b=d.scope)&&(d.templateUrl||($(b)?(st("new/isolated scope",_||w,d,O),_=d):st("new/isolated scope",_,d,O)),w=w||d),v=d.name,!j&&(d.replace&&(d.templateUrl||d.template)||d.transclude&&!d.$$tlb)){for(var Y,K=q+1;Y=t[K++];)if(Y.transclude&&!Y.$$tlb||Y.replace&&(Y.templateUrl||Y.template)){F=!0;break}j=!0}if(!d.templateUrl&&d.controller&&(b=d.controller,C=C||dt(),st("'"+v+"' controller",C[v],d,O),C[v]=d),b=d.transclude)if(E=!0,d.$$tlb||(st("transclusion",A,d,O),A=d),"element"==b)T=!0,x=d.priority,g=O,O=e.$$element=Fr(I.$$createComment(v,e[v])),n=O[0],vt(a,V(g),n),g[0].$$parentNode=g[0].parentNode,N=J(F,g,o,x,L&&L.name,{nonTlbTranscludeDirective:A});else{var et=dt();if(g=Fr(Pt(n)).contents(),$(b)){g=[];var rt=dt(),at=dt();r(b,function(t,n){var e="?"===t.charAt(0);t=e?t.substring(1):t,rt[t]=n,et[n]=null,at[n]=e}),r(O.contents(),function(t){var n=rt[mn(R(t))];n?(at[n]=!0,et[n]=et[n]||[],et[n].push(t)):g.push(t)}),r(at,function(t,n){if(!t)throw Hi("reqslot","Required transclusion slot `{0}` was not filled.",n)});for(var ut in et)et[ut]&&(et[ut]=J(F,et[ut],o))}O.empty(),N=J(F,g,o,void 0,void 0,{needsNewScope:d.$$isolateScope||d.$$newScope}),N.$$slots=et}if(d.template)if(P=!0,st("template",M,d,O),M=d,b=S(d.template)?d.template(O,e):d.template,b=Mt(b),d.replace){if(L=d,g=wt(b)?[]:$n(ft(d.templateNamespace,Jr(b))),n=g[0],1!=g.length||n.nodeType!==oi)throw Hi("tplrt","Template for directive '{0}' must have exactly one root element. {1}",v,"");vt(a,O,n);var lt={$attr:{}},ct=H(n,[],lt),ht=t.splice(q+1,t.length-(q+1));(_||w)&&nt(ct,_,w),t=t.concat(ct).concat(ht),it(e,lt),z=t.length}else O.html(b);if(d.templateUrl)P=!0,st("template",M,d,O),M=d,d.replace&&(L=d),p=ot(t.splice(q,t.length-q),O,e,a,E&&N,s,c,{controllerDirectives:C,newScopeDirective:w!==d&&w,newIsolateScopeDirective:_,templateDirective:M,nonTlbTranscludeDirective:A}),z=t.length;else if(d.compile)try{y=d.compile(O,e,N);var pt=d.$$originalDirective||d;S(y)?h(null,B(pt,y),W,U):y&&h(B(pt,y.pre),B(pt,y.post),W,U)}catch($t){i($t,X(O))}d.terminal&&(p.terminal=!0,x=Math.max(x,d.priority))}return p.scope=w&&w.scope===!0,p.transcludeOnThisElement=E,p.templateOnThisElement=P,p.transclude=N,f.hasElementTranscludeDirective=T,p}function Q(t,n,e,i){var o;if(x(n)){var a=n.match(C),u=n.substring(a[0].length),s=a[1]||a[3],l="?"===a[2];if("^^"===s?e=e.parent():(o=i&&i[u],o=o&&o.instance),!o){var c="$"+u+"Controller";o=s?e.inheritedData(c):e.data(c)}if(!o&&!l)throw Hi("ctreq","Controller '{0}', required by directive '{1}', can't be found!",u,t)}else if(Zr(n)){o=[];for(var f=0,h=n.length;f<h;f++)o[f]=Q(t,n[f],e,i)}else $(n)&&(o={},r(n,function(n,r){o[r]=Q(t,n,e,i)}));return o||null}function tt(t,n,e,r,i,o,a){var u=dt();for(var l in r){var c=r[l],f={$scope:c===a||c.$$isolateScope?i:o,$element:t,$attrs:n,$transclude:e},h=c.controller;"@"==h&&(h=n[c.name]);var p=s(h,f,!0,c.controllerAs);u[c.name]=p,t.data("$"+c.name+"Controller",p.instance)}return u}function nt(t,n,e){for(var r=0,i=t.length;r<i;r++)t[r]=h(t[r],{$$isolateScope:n,$$newScope:e})}function et(t,e,r,o,u,s,l){if(e===u)return null;var p=null;if(c.hasOwnProperty(e))for(var d,v=n.get(e+f),g=0,y=v.length;g<y;g++)try{if(d=v[g],(m(o)||o>d.priority)&&d.restrict.indexOf(r)!=-1){if(s&&(d=h(d,{$$start:s,$$end:l})),!d.$$bindings){var b=d.$$bindings=a(d,d.name);$(b.isolateScope)&&(d.$$isolateBindings=b.isolateScope)}t.push(d),p=d}}catch(x){i(x)}return p}function rt(t){if(c.hasOwnProperty(t))for(var e,r=n.get(t+f),i=0,o=r.length;i<o;i++)if(e=r[i],e.multiElement)return!0;return!1}function it(t,n){var e=n.$attr,i=t.$attr;t.$$element;r(t,function(r,i){"$"!=i.charAt(0)&&(n[i]&&n[i]!==r&&(r+=("style"===i?";":" ")+n[i]),t.$set(i,r,!0,e[i]))}),r(n,function(n,r){t.hasOwnProperty(r)||"$"===r.charAt(0)||(t[r]=n,"class"!==r&&"style"!==r&&(i[r]=e[r]))})}function ot(t,n,e,i,a,u,s,l){var c,f,p=[],d=n[0],v=t.shift(),g=h(v,{templateUrl:null,transclude:null,replace:null,$$originalDirective:v}),m=S(v.templateUrl)?v.templateUrl(n,e):v.templateUrl,y=v.templateNamespace;return n.empty(),o(m).then(function(o){var h,b,x,w;if(o=Mt(o),v.replace){if(x=wt(o)?[]:$n(ft(y,Jr(o))),h=x[0],1!=x.length||h.nodeType!==oi)throw Hi("tplrt","Template for directive '{0}' must have exactly one root element. {1}",v.name,m);b={$attr:{}},vt(i,n,h);var C=H(h,[],b);$(v.scope)&&nt(C,!0),t=C.concat(t),it(e,b)}else h=d,n.html(o);for(t.unshift(g),c=K(t,h,e,a,n,v,u,s,l),r(i,function(t,e){t==h&&(i[e]=n[0])}),f=W(n[0].childNodes,a);p.length;){var S=p.shift(),_=p.shift(),M=p.shift(),k=p.shift(),A=n[0];if(!S.$$destroyed){if(_!==d){var E=_.className;l.hasElementTranscludeDirective&&v.replace||(A=Pt(h)),vt(M,Fr(_),A),j(Fr(A),E)}w=c.transcludeOnThisElement?U(S,c.transclude,k):k,c(f,S,A,i,w)}}p=null}),function(t,n,e,r,i){var o=i;n.$$destroyed||(p?p.push(n,e,r,o):(c.transcludeOnThisElement&&(o=U(n,c.transclude,i)),c(f,n,e,r,o)))}}function at(t,n){var e=n.priority-t.priority;return 0!==e?e:t.name!==n.name?t.name<n.name?-1:1:t.index-n.index}function st(t,n,e,r){function i(t){return t?" (module: "+t+")":""}if(n)throw Hi("multidir","Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}",n.name,i(n.$$moduleName),e.name,i(e.$$moduleName),t,X(r))}function ct(t,n){var r=e(n,!0);r&&t.push({priority:0,compile:function(t){var n=t.parent(),e=!!n.length;return e&&I.$$addBindingClass(n),function(t,n){var i=n.parent();e||I.$$addBindingClass(i),I.$$addBindingInfo(i,r.expressions),t.$watch(r,function(t){n[0].nodeValue=t})}}})}function ft(n,e){switch(n=Lr(n||"html")){case"svg":case"math":var r=t.document.createElement("div");return r.innerHTML="<"+n+">"+e+"</"+n+">",r.childNodes[0].childNodes;default:return e}}function ht(t,n){if("srcdoc"==n)return M.HTML;var e=R(t);return"xlinkHref"==n||"form"==e&&"action"==n||"img"!=e&&("src"==n||"ngSrc"==n)?M.RESOURCE_URL:void 0}function pt(t,n,r,i,o){var a=ht(t,i);o=w[i]||o;var u=e(r,!0,a,o);if(u){if("multiple"===i&&"select"===R(t))throw Hi("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",X(t));n.push({priority:100,compile:function(){return{pre:function(t,n,s){var l=s.$$observers||(s.$$observers=dt());if(_.test(i))throw Hi("nodomevents","Interpolations for HTML DOM event attributes are disallowed.  Please use the ng- versions (such as ng-click instead of onclick) instead.");var c=s[i];c!==r&&(u=c&&e(c,!0,a,o),r=c),u&&(s[i]=u(t),(l[i]||(l[i]=[])).$$inter=!0,(s.$$observers&&s.$$observers[i].$$scope||t).$watch(u,function(t,n){"class"===i&&t!=n?s.$updateClass(t,n):s.$set(i,t)}))}}}})}}function vt(n,e,r){var i,o,a=e[0],u=e.length,s=a.parentNode;if(n)for(i=0,o=n.length;i<o;i++)if(n[i]==a){n[i++]=r;for(var l=i,c=l+u-1,f=n.length;l<f;l++,c++)c<f?n[l]=n[c]:delete n[l];n.length-=u-1,n.context===a&&(n.context=r);break}s&&s.replaceChild(r,a);var h=t.document.createDocumentFragment();for(i=0;i<u;i++)h.appendChild(e[i]);for(Fr.hasData(a)&&(Fr.data(r,Fr.data(a)),Fr(a).off("$destroy")),Fr.cleanData(h.querySelectorAll("*")),i=1;i<u;i++)delete e[i];e[0]=r,e.length=1}function gt(t,n){return l(function(){return t.apply(null,arguments)},t,n)}function mt(t,n,e,r,o,a){try{t(n,e,r,o,a)}catch(u){i(u,X(e))}}function yt(t,n,i,o,a){function s(n,e,r){S(i.$onChanges)&&e!==r&&($t||(t.$$postDigest(L),$t=[]),c||(c={},$t.push(l)),c[n]&&(r=c[n].previousValue),c[n]=new gn(r,e))}function l(){i.$onChanges(c),c=void 0}var c,f=[],h={};return r(o,function(r,o){var l,c,d,v,g,m=r.attrName,y=r.optional,$=r.mode;switch($){case"@":y||Or.call(n,m)||(i[o]=n[m]=void 0),n.$observe(m,function(t){if(x(t)||T(t)){var n=i[o];s(o,t,n),i[o]=t}}),n.$$observers[m].$$scope=t,l=n[m],x(l)?i[o]=e(l)(t):T(l)&&(i[o]=l),h[o]=new gn(Yi,i[o]);break;case"=":if(!Or.call(n,m)){if(y)break;n[m]=void 0}if(y&&!n[m])break;c=u(n[m]),v=c.literal?q:function(t,n){return t===n||t!==t&&n!==n},d=c.assign||function(){throw l=i[o]=c(t),Hi("nonassign","Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!",n[m],m,a.name)},l=i[o]=c(t);var b=function(n){return v(n,i[o])||(v(n,l)?d(t,n=i[o]):i[o]=n),l=n};b.$stateful=!0,g=r.collection?t.$watchCollection(n[m],b):t.$watch(u(n[m],b),null,c.literal),f.push(g);break;case"<":if(!Or.call(n,m)){if(y)break;n[m]=void 0}if(y&&!n[m])break;c=u(n[m]);var w=i[o]=c(t);h[o]=new gn(Yi,i[o]),g=t.$watch(c,function(t,n){if(n===t){if(n===w)return;n=w}s(o,t,n),i[o]=t},c.literal),f.push(g);break;case"&":if(c=n.hasOwnProperty(m)?u(n[m]):p,c===p&&y)break;i[o]=function(n){return c(t,n)}}}),{initialChanges:h,removeWatches:f.length&&function(){for(var t=0,n=f.length;t<n;++t)f[t]()}}}var $t,bt=/^\w/,xt=t.document.createElement("div"),Ct=E;D.prototype={$normalize:mn,$addClass:function(t){t&&t.length>0&&P.addClass(this.$$element,t)},$removeClass:function(t){t&&t.length>0&&P.removeClass(this.$$element,t)},$updateClass:function(t,n){var e=yn(t,n);e&&e.length&&P.addClass(this.$$element,e);var r=yn(n,t);r&&r.length&&P.removeClass(this.$$element,r)},$set:function(t,n,e,o){var a,u=this.$$element[0],s=Ut(u,t),l=Ht(t),c=t;if(s?(this.$$element.prop(t,n),o=s):l&&(this[l]=n,c=l),this[t]=n,o?this.$attr[t]=o:(o=this.$attr[t],o||(this.$attr[t]=o=ut(t,"-"))),a=R(this.$$element),"a"===a&&("href"===t||"xlinkHref"===t)||"img"===a&&"src"===t)this[t]=n=O(n,"src"===t);else if("img"===a&&"srcset"===t&&y(n)){for(var f="",h=Jr(n),p=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,d=/\s/.test(h)?p:/(,)/,v=h.split(d),g=Math.floor(v.length/2),$=0;$<g;$++){var b=2*$;f+=O(Jr(v[b]),!0),f+=" "+Jr(v[b+1])}var x=Jr(v[2*$]).split(/\s/);f+=O(Jr(x[0]),!0),2===x.length&&(f+=" "+Jr(x[1])),this[t]=n=f}e!==!1&&(null===n||m(n)?this.$$element.removeAttr(o):bt.test(o)?this.$$element.attr(o,n):N(this.$$element[0],o,n));var w=this.$$observers;w&&r(w[c],function(t){try{t(n)}catch(e){i(e)}})},$observe:function(t,n){var e=this,r=e.$$observers||(e.$$observers=dt()),i=r[t]||(r[t]=[]);return i.push(n),v.$evalAsync(function(){i.$$inter||!e.hasOwnProperty(t)||m(e[t])||n(e[t])}),function(){F(i,n)}}};var St=e.startSymbol(),_t=e.endSymbol(),Mt="{{"==St&&"}}"==_t?d:function(t){return t.replace(/\{\{/g,St).replace(/}}/g,_t)},kt=/^ngAttr[A-Z]/,Et=/^(.+)Start$/;return I.$$addBindingInfo=A?function(t,n){var e=t.data("$binding")||[];Zr(n)?e=e.concat(n):e.push(n),t.data("$binding",e)}:p,I.$$addBindingClass=A?function(t){j(t,"ng-binding")}:p,I.$$addScopeInfo=A?function(t,n,e,r){var i=e?r?"$isolateScopeNoTemplate":"$isolateScope":"$scope";t.data(i,n)}:p,I.$$addScopeClass=A?function(t,n){j(t,n?"ng-isolate-scope":"ng-scope")}:p,I.$$createComment=function(n,e){var r="";return A&&(r=" "+(n||"")+": ",e&&(r+=e+" ")),t.document.createComment(r)},I}]}function gn(t,n){this.previousValue=t,this.currentValue=n}function mn(t){return xt(t.replace(Gi,""))}function yn(t,n){var e="",r=t.split(/\s+/),i=n.split(/\s+/);t:for(var o=0;o<r.length;o++){for(var a=r[o],u=0;u<i.length;u++)if(a==i[u])continue t;e+=(e.length>0?" ":"")+a}return e}function $n(t){t=Fr(t);var n=t.length;if(n<=1)return t;for(;n--;){var e=t[n];e.nodeType===si&&Vr.call(t,n,1)}return t}function bn(t,n){if(n&&x(n))return n;if(x(t)){var e=Xi.exec(t);if(e)return e[3]}}function xn(){var t={},e=!1;this.has=function(n){return t.hasOwnProperty(n)},this.register=function(n,e){ft(n,"controller"),$(n)?l(t,n):t[n]=e},this.allowGlobals=function(){e=!0},this.$get=["$injector","$window",function(r,i){function o(t,e,r,i){if(!t||!$(t.$scope))throw n("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",i,e);t.$scope[e]=r}return function(n,a,u,s){var c,f,h,p;if(u=u===!0,s&&x(s)&&(p=s),x(n)){if(f=n.match(Xi),!f)throw Zi("ctrlfmt","Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.",n);h=f[1],p=p||f[3],n=t.hasOwnProperty(h)?t[h]:ht(a.$scope,h,!0)||(e?ht(i,h,!0):void 0),ct(n,h,!0)}if(u){var d=(Zr(n)?n[n.length-1]:n).prototype;c=Object.create(d||null),p&&o(a,p,c,h||n.name);var v;return v=l(function(){var t=r.invoke(n,c,a,h);return t!==c&&($(t)||S(t))&&(c=t,p&&o(a,p,c,h||n.name)),c},{instance:c,identifier:p})}return c=r.instantiate(n,a,h),p&&o(a,p,c,h||n.name),c}}]}function wn(){this.$get=["$window",function(t){return Fr(t.document)}]}function Cn(){this.$get=["$log",function(t){return function(n,e){t.error.apply(t,arguments)}}]}function Sn(t){return $(t)?C(t)?t.toISOString():U(t):t}function _n(){this.$get=function(){return function(t){if(!t)return"";var n=[];return i(t,function(t,e){null===t||m(t)||(Zr(t)?r(t,function(t){n.push(nt(e)+"="+nt(Sn(t)))}):n.push(nt(e)+"="+nt(Sn(t))))}),n.join("&")}}}function Mn(){this.$get=function(){return function(t){function n(t,o,a){null===t||m(t)||(Zr(t)?r(t,function(t,e){n(t,o+"["+($(t)?e:"")+"]")}):$(t)&&!C(t)?i(t,function(t,e){n(t,o+(a?"":"[")+e+(a?"":"]"))}):e.push(nt(o)+"="+nt(Sn(t))))}if(!t)return"";var e=[];return n(t,"",!0),e.join("&")}}}function kn(t,n){if(x(t)){var e=t.replace(eo,"").trim();if(e){var r=n("Content-Type");(r&&0===r.indexOf(Ki)||An(e))&&(t=H(e))}}return t}function An(t){var n=t.match(to);return n&&no[n[0]].test(t)}function En(t){function n(t,n){t&&(i[t]=i[t]?i[t]+", "+n:n)}var e,i=dt();return x(t)?r(t.split("\n"),function(t){e=t.indexOf(":"),n(Lr(Jr(t.substr(0,e))),Jr(t.substr(e+1)))}):$(t)&&r(t,function(t,e){n(Lr(e),Jr(t))}),i}function Pn(t){var n;return function(e){if(n||(n=En(t)),e){var r=n[Lr(e)];return void 0===r&&(r=null),r}return n}}function Tn(t,n,e,i){return S(i)?i(t,n,e):(r(i,function(r){t=r(t,n,e)}),t)}function On(t){return 200<=t&&t<300}function Ln(){var t=this.defaults={transformResponse:[kn],transformRequest:[function(t){return!$(t)||A(t)||P(t)||E(t)?t:U(t)}],headers:{common:{Accept:"application/json, text/plain, */*"},post:gt(Qi),put:gt(Qi),patch:gt(Qi)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},e=!1;this.useApplyAsync=function(t){return y(t)?(e=!!t,this):e};var i=!0;this.useLegacyPromiseExtensions=function(t){return y(t)?(i=!!t,this):i};var o=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(a,u,s,c,f,h){function p(e){function o(t,n){for(var e=0,r=n.length;e<r;){var i=n[e++],o=n[e++];t=t.then(i,o)}return n.length=0,t}function a(t,n){var e,i={};return r(t,function(t,r){S(t)?(e=t(n),null!=e&&(i[r]=e)):i[r]=t}),i}function u(n){var e,r,i,o=t.headers,u=l({},n.headers);o=l({},o.common,o[Lr(n.method)]);t:for(e in o){r=Lr(e);for(i in u)if(Lr(i)===r)continue t;u[e]=o[e]}return a(u,gt(n))}function s(n){var e=n.headers,i=Tn(n.data,Pn(e),void 0,n.transformRequest);return m(i)&&r(e,function(t,n){"content-type"===Lr(n)&&delete e[n]}),m(n.withCredentials)&&!m(t.withCredentials)&&(n.withCredentials=t.withCredentials),g(n,i).then(c,c)}function c(t){var n=l({},t);return n.data=Tn(t.data,t.headers,t.status,p.transformResponse),On(t.status)?n:f.reject(n)}if(!$(e))throw n("$http")("badreq","Http request configuration must be an object.  Received: {0}",e);if(!x(e.url))throw n("$http")("badreq","Http request configuration url must be a string.  Received: {0}",e.url);var p=l({method:"get",transformRequest:t.transformRequest,transformResponse:t.transformResponse,paramSerializer:t.paramSerializer},e);p.headers=u(e),p.method=Dr(p.method),p.paramSerializer=x(p.paramSerializer)?h.get(p.paramSerializer):p.paramSerializer;var d=[],v=[],y=f.when(p);return r(C,function(t){(t.request||t.requestError)&&d.unshift(t.request,t.requestError),(t.response||t.responseError)&&v.push(t.response,t.responseError)}),y=o(y,d),y=y.then(s),y=o(y,v),i?(y.success=function(t){return ct(t,"fn"),y.then(function(n){t(n.data,n.status,n.headers,p)}),y},y.error=function(t){return ct(t,"fn"),y.then(null,function(n){t(n.data,n.status,n.headers,p)}),y}):(y.success=io("success"),y.error=io("error")),y}function d(t){r(arguments,function(t){p[t]=function(n,e){return p(l({},e||{},{method:t,url:n}))}})}function v(t){r(arguments,function(t){p[t]=function(n,e,r){return p(l({},r||{},{method:t,url:n,data:e}))}})}function g(n,i){function o(t){if(t){var n={};return r(t,function(t,r){n[r]=function(n){function r(){t(n)}e?c.$applyAsync(r):c.$$phase?r():c.$apply(r)}}),n}}function s(t,n,r,i){function o(){l(n,t,r,i)}v&&(On(t)?v.put(_,[t,n,En(r),i]):v.remove(_)),e?c.$applyAsync(o):(o(),c.$$phase||c.$apply())}function l(t,e,r,i){e=e>=-1?e:0,(On(e)?x.resolve:x.reject)({data:t,status:e,headers:Pn(r),config:n,statusText:i})}function h(t){l(t.data,t.status,gt(t.headers()),t.statusText)}function d(){var t=p.pendingRequests.indexOf(n);t!==-1&&p.pendingRequests.splice(t,1)}var v,g,x=f.defer(),C=x.promise,S=n.headers,_=b(n.url,n.paramSerializer(n.params));if(p.pendingRequests.push(n),C.then(d,d),!n.cache&&!t.cache||n.cache===!1||"GET"!==n.method&&"JSONP"!==n.method||(v=$(n.cache)?n.cache:$(t.cache)?t.cache:w),v&&(g=v.get(_),y(g)?O(g)?g.then(h,h):Zr(g)?l(g[1],g[0],gt(g[2]),g[3]):l(g,200,{},"OK"):v.put(_,C)),m(g)){var M=Ne(n.url)?u()[n.xsrfCookieName||t.xsrfCookieName]:void 0;M&&(S[n.xsrfHeaderName||t.xsrfHeaderName]=M),a(n.method,_,i,s,S,n.timeout,n.withCredentials,n.responseType,o(n.eventHandlers),o(n.uploadEventHandlers))}return C}function b(t,n){return n.length>0&&(t+=(t.indexOf("?")==-1?"?":"&")+n),t}var w=s("$http");t.paramSerializer=x(t.paramSerializer)?h.get(t.paramSerializer):t.paramSerializer;var C=[];return r(o,function(t){C.unshift(x(t)?h.get(t):h.invoke(t))}),p.pendingRequests=[],d("get","delete","head","jsonp"),v("post","put","patch"),p.defaults=t,p}]}function Dn(){this.$get=function(){return function(){return new t.XMLHttpRequest}}}function Nn(){this.$get=["$browser","$jsonpCallbacks","$document","$xhrFactory",function(t,n,e,r){return jn(t,r,t.defer,n,e[0])}]}function jn(t,n,e,i,o){function a(t,n,e){t=t.replace("JSON_CALLBACK",n);var r=o.createElement("script"),a=null;return r.type="text/javascript",r.src=t,r.async=!0,a=function(t){vi(r,"load",a),vi(r,"error",a),o.body.removeChild(r),r=null;var u=-1,s="unknown";t&&("load"!==t.type||i.wasCalled(n)||(t={type:"error"}),s=t.type,u="error"===t.type?404:200),e&&e(u,s)},di(r,"load",a),di(r,"error",a),o.body.appendChild(r),a}return function(o,u,s,l,c,f,h,d,v,g){function $(){w&&w(),C&&C.abort()}function b(n,r,i,o,a){y(M)&&e.cancel(M),w=C=null,n(r,i,o,a),t.$$completeOutstandingRequest(p)}if(t.$$incOutstandingRequestCount(),u=u||t.url(),"jsonp"===Lr(o))var x=i.createCallback(u),w=a(u,x,function(t,n){var e=200===t&&i.getResponse(x);b(l,t,e,"",n),i.removeCallback(x)});else{var C=n(o,u);C.open(o,u,!0),r(c,function(t,n){y(t)&&C.setRequestHeader(n,t)}),C.onload=function(){var t=C.statusText||"",n="response"in C?C.response:C.responseText,e=1223===C.status?204:C.status;0===e&&(e=n?200:"file"==De(u).protocol?404:0),b(l,e,n,C.getAllResponseHeaders(),t)};var S=function(){b(l,-1,null,null,"")};if(C.onerror=S,C.onabort=S,r(v,function(t,n){C.addEventListener(n,t)}),r(g,function(t,n){C.upload.addEventListener(n,t)}),h&&(C.withCredentials=!0),d)try{C.responseType=d}catch(_){if("json"!==d)throw _}C.send(m(s)?null:s)}if(f>0)var M=e($,f);else O(f)&&f.then($)}}function Rn(){var t="{{",n="}}";this.startSymbol=function(n){return n?(t=n,this):t},this.endSymbol=function(t){return t?(n=t,this):n},this.$get=["$parse","$exceptionHandler","$sce",function(e,r,i){function o(t){return"\\\\\\"+t}function a(e){return e.replace(p,t).replace(d,n)}function u(t){if(null==t)return"";switch(typeof t){case"string":break;case"number":t=""+t;break;default:t=U(t)}return t}function s(t,n,e,r){var i;return i=t.$watch(function(t){return i(),r(t)},n,e)}function c(o,c,p,d){function g(t){try{return t=O(t),d&&!y(t)?t:u(t)}catch(n){r(oo.interr(o,n))}}if(!o.length||o.indexOf(t)===-1){var $;if(!c){var b=a(o);$=v(b),$.exp=o,$.expressions=[],$.$$watchDelegate=s}return $}d=!!d;for(var x,w,C,_=0,M=[],k=[],A=o.length,E=[],P=[];_<A;){if((x=o.indexOf(t,_))==-1||(w=o.indexOf(n,x+f))==-1){_!==A&&E.push(a(o.substring(_)));break}_!==x&&E.push(a(o.substring(_,x))),C=o.substring(x+f,w),M.push(C),k.push(e(C,g)),_=w+h,P.push(E.length),E.push("")}if(p&&E.length>1&&oo.throwNoconcat(o),!c||M.length){var T=function(t){for(var n=0,e=M.length;n<e;n++){if(d&&m(t[n]))return;E[P[n]]=t[n]}return E.join("")},O=function(t){return p?i.getTrusted(p,t):i.valueOf(t)};return l(function(t){var n=0,e=M.length,i=new Array(e);try{for(;n<e;n++)i[n]=k[n](t);return T(i)}catch(a){r(oo.interr(o,a))}},{exp:o,expressions:M,$$watchDelegate:function(t,n){var e;return t.$watchGroup(k,function(r,i){var o=T(r);S(n)&&n.call(this,o,r!==i?e:o,t),e=o})}})}}var f=t.length,h=n.length,p=new RegExp(t.replace(/./g,o),"g"),d=new RegExp(n.replace(/./g,o),"g");return c.startSymbol=function(){return t},c.endSymbol=function(){return n},c}]}function Fn(){this.$get=["$rootScope","$window","$q","$$q","$browser",function(t,n,e,r,i){function o(o,u,s,l){function c(){f?o.apply(null,h):o(v)}var f=arguments.length>4,h=f?V(arguments,4):[],p=n.setInterval,d=n.clearInterval,v=0,g=y(l)&&!l,m=(g?r:e).defer(),$=m.promise;return s=y(s)?s:0,$.$$intervalId=p(function(){g?i.defer(c):t.$evalAsync(c),m.notify(v++),s>0&&v>=s&&(m.resolve(v),d($.$$intervalId),delete a[$.$$intervalId]),g||t.$apply()},u),a[$.$$intervalId]=m,$}var a={};return o.cancel=function(t){return!!(t&&t.$$intervalId in a)&&(a[t.$$intervalId].reject("canceled"),n.clearInterval(t.$$intervalId),delete a[t.$$intervalId],!0)},o}]}function In(t){for(var n=t.split("/"),e=n.length;e--;)n[e]=tt(n[e]);return n.join("/")}function qn(t,n){var e=De(t);n.$$protocol=e.protocol,n.$$host=e.hostname,n.$$port=f(e.port)||so[e.protocol]||null}function zn(t,n){var e="/"!==t.charAt(0);e&&(t="/"+t);var r=De(t);n.$$path=decodeURIComponent(e&&"/"===r.pathname.charAt(0)?r.pathname.substring(1):r.pathname),n.$$search=K(r.search),n.$$hash=decodeURIComponent(r.hash),n.$$path&&"/"!=n.$$path.charAt(0)&&(n.$$path="/"+n.$$path)}function Vn(t,n){return 0===t.lastIndexOf(n,0)}function Bn(t,n){if(Vn(n,t))return n.substr(t.length)}function Wn(t){var n=t.indexOf("#");return n==-1?t:t.substr(0,n)}function Un(t){return t.replace(/(#.+)|#$/,"$1")}function Hn(t){return t.substr(0,Wn(t).lastIndexOf("/")+1)}function Yn(t){return t.substring(0,t.indexOf("/",t.indexOf("//")+2))}function Gn(t,n,e){this.$$html5=!0,e=e||"",qn(t,this),this.$$parse=function(t){var e=Bn(n,t);if(!x(e))throw lo("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',t,n);zn(e,this),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var t=Q(this.$$search),e=this.$$hash?"#"+tt(this.$$hash):"";this.$$url=In(this.$$path)+(t?"?"+t:"")+e,this.$$absUrl=n+this.$$url.substr(1)},this.$$parseLinkUrl=function(r,i){if(i&&"#"===i[0])return this.hash(i.slice(1)),!0;var o,a,u;return y(o=Bn(t,r))?(a=o,u=y(o=Bn(e,o))?n+(Bn("/",o)||o):t+a):y(o=Bn(n,r))?u=n+o:n==r+"/"&&(u=n),u&&this.$$parse(u),!!u}}function Zn(t,n,e){qn(t,this),this.$$parse=function(r){function i(t,n,e){var r,i=/^\/[A-Z]:(\/.*)/;return Vn(n,e)&&(n=n.replace(e,"")),i.exec(n)?t:(r=i.exec(t),r?r[1]:t)}var o,a=Bn(t,r)||Bn(n,r);m(a)||"#"!==a.charAt(0)?this.$$html5?o=a:(o="",m(a)&&(t=r,this.replace())):(o=Bn(e,a),m(o)&&(o=a)),zn(o,this),this.$$path=i(this.$$path,o,t),this.$$compose()},this.$$compose=function(){var n=Q(this.$$search),r=this.$$hash?"#"+tt(this.$$hash):"";this.$$url=In(this.$$path)+(n?"?"+n:"")+r,this.$$absUrl=t+(this.$$url?e+this.$$url:"")},this.$$parseLinkUrl=function(n,e){return Wn(t)==Wn(n)&&(this.$$parse(n),!0)}}function Xn(t,n,e){this.$$html5=!0,Zn.apply(this,arguments),this.$$parseLinkUrl=function(r,i){if(i&&"#"===i[0])return this.hash(i.slice(1)),!0;var o,a;return t==Wn(r)?o=r:(a=Bn(n,r))?o=t+e+a:n===r+"/"&&(o=n),o&&this.$$parse(o),!!o},this.$$compose=function(){var n=Q(this.$$search),r=this.$$hash?"#"+tt(this.$$hash):"";this.$$url=In(this.$$path)+(n?"?"+n:"")+r,this.$$absUrl=t+e+this.$$url}}function Jn(t){return function(){return this[t]}}function Kn(t,n){return function(e){return m(e)?this[t]:(this[t]=n(e),this.$$compose(),this)}}function Qn(){var t="",n={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(n){return y(n)?(t=n,this):t},this.html5Mode=function(t){return T(t)?(n.enabled=t,this):$(t)?(T(t.enabled)&&(n.enabled=t.enabled),T(t.requireBase)&&(n.requireBase=t.requireBase),T(t.rewriteLinks)&&(n.rewriteLinks=t.rewriteLinks),this):n},this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(e,r,i,o,a){function u(t,n,e){var i=l.url(),o=l.$$state;try{r.url(t,n,e),l.$$state=r.state()}catch(a){throw l.url(i),l.$$state=o,a}}function s(t,n){e.$broadcast("$locationChangeSuccess",l.absUrl(),t,l.$$state,n)}var l,c,f,h=r.baseHref(),p=r.url();if(n.enabled){if(!h&&n.requireBase)throw lo("nobase","$location in HTML5 mode requires a <base> tag to be present!");f=Yn(p)+(h||"/"),c=i.history?Gn:Xn}else f=Wn(p),c=Zn;var d=Hn(f);l=new c(f,d,"#"+t),l.$$parseLinkUrl(p,p),l.$$state=r.state();var v=/^\s*(javascript|mailto):/i;o.on("click",function(t){if(n.rewriteLinks&&!t.ctrlKey&&!t.metaKey&&!t.shiftKey&&2!=t.which&&2!=t.button){for(var i=Fr(t.target);"a"!==R(i[0]);)if(i[0]===o[0]||!(i=i.parent())[0])return;var u=i.prop("href"),s=i.attr("href")||i.attr("xlink:href");$(u)&&"[object SVGAnimatedString]"===u.toString()&&(u=De(u.animVal).href),v.test(u)||!u||i.attr("target")||t.isDefaultPrevented()||l.$$parseLinkUrl(u,s)&&(t.preventDefault(),l.absUrl()!=r.url()&&(e.$apply(),a.angular["ff-684208-preventDefault"]=!0))}}),Un(l.absUrl())!=Un(p)&&r.url(l.absUrl(),!0);var g=!0;return r.onUrlChange(function(t,n){return m(Bn(d,t))?void(a.location.href=t):(e.$evalAsync(function(){var r,i=l.absUrl(),o=l.$$state;t=Un(t),l.$$parse(t),l.$$state=n,r=e.$broadcast("$locationChangeStart",t,i,n,o).defaultPrevented,l.absUrl()===t&&(r?(l.$$parse(i),l.$$state=o,u(i,!1,o)):(g=!1,s(i,o)))}),void(e.$$phase||e.$digest()))}),e.$watch(function(){var t=Un(r.url()),n=Un(l.absUrl()),o=r.state(),a=l.$$replace,c=t!==n||l.$$html5&&i.history&&o!==l.$$state;(g||c)&&(g=!1,e.$evalAsync(function(){var n=l.absUrl(),r=e.$broadcast("$locationChangeStart",n,t,l.$$state,o).defaultPrevented;l.absUrl()===n&&(r?(l.$$parse(t),l.$$state=o):(c&&u(n,a,o===l.$$state?null:l.$$state),s(t,o)))})),l.$$replace=!1}),l}]}function te(){var t=!0,n=this;this.debugEnabled=function(n){return y(n)?(t=n,this):t},this.$get=["$window",function(e){function i(t){return t instanceof Error&&(t.stack?t=t.message&&t.stack.indexOf(t.message)===-1?"Error: "+t.message+"\n"+t.stack:t.stack:t.sourceURL&&(t=t.message+"\n"+t.sourceURL+":"+t.line)),t}function o(t){var n=e.console||{},o=n[t]||n.log||p,a=!1;try{a=!!o.apply}catch(u){}return a?function(){var t=[];return r(arguments,function(n){t.push(i(n))}),o.apply(n,t)}:function(t,n){o(t,null==n?"":n)}}return{log:o("log"),info:o("info"),warn:o("warn"),error:o("error"),debug:function(){var e=o("debug");return function(){t&&e.apply(n,arguments)}}()}}]}function ne(t,n){if("__defineGetter__"===t||"__defineSetter__"===t||"__lookupGetter__"===t||"__lookupSetter__"===t||"__proto__"===t)throw fo("isecfld","Attempting to access a disallowed field in Angular expressions! Expression: {0}",n);return t}function ee(t){return t+""}function re(t,n){if(t){if(t.constructor===t)throw fo("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",n);if(t.window===t)throw fo("isecwindow","Referencing the Window in Angular expressions is disallowed! Expression: {0}",n);if(t.children&&(t.nodeName||t.prop&&t.attr&&t.find))throw fo("isecdom","Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",n);if(t===Object)throw fo("isecobj","Referencing Object in Angular expressions is disallowed! Expression: {0}",n)}return t}function ie(t,n){if(t){if(t.constructor===t)throw fo("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",n);if(t===ho||t===po||t===vo)throw fo("isecff","Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}",n)}}function oe(t,n){if(t&&(t===(0).constructor||t===(!1).constructor||t==="".constructor||t==={}.constructor||t===[].constructor||t===Function.constructor))throw fo("isecaf","Assigning to a constructor is disallowed! Expression: {0}",n)}function ae(t,n){return"undefined"!=typeof t?t:n}function ue(t,n){return"undefined"==typeof t?n:"undefined"==typeof n?t:t+n}function se(t,n){var e=t(n);return!e.$stateful}function le(t,n){var e,i;switch(t.type){case $o.Program:e=!0,r(t.body,function(t){le(t.expression,n),e=e&&t.expression.constant}),t.constant=e;break;case $o.Literal:t.constant=!0,t.toWatch=[];break;case $o.UnaryExpression:le(t.argument,n),t.constant=t.argument.constant,t.toWatch=t.argument.toWatch;break;case $o.BinaryExpression:le(t.left,n),le(t.right,n),t.constant=t.left.constant&&t.right.constant,t.toWatch=t.left.toWatch.concat(t.right.toWatch);break;case $o.LogicalExpression:le(t.left,n),le(t.right,n),t.constant=t.left.constant&&t.right.constant,t.toWatch=t.constant?[]:[t];break;case $o.ConditionalExpression:le(t.test,n),le(t.alternate,n),le(t.consequent,n),t.constant=t.test.constant&&t.alternate.constant&&t.consequent.constant,t.toWatch=t.constant?[]:[t];break;case $o.Identifier:t.constant=!1,t.toWatch=[t];break;case $o.MemberExpression:le(t.object,n),t.computed&&le(t.property,n),t.constant=t.object.constant&&(!t.computed||t.property.constant),t.toWatch=[t];break;case $o.CallExpression:
 e=!!t.filter&&se(n,t.callee.name),i=[],r(t.arguments,function(t){le(t,n),e=e&&t.constant,t.constant||i.push.apply(i,t.toWatch)}),t.constant=e,t.toWatch=t.filter&&se(n,t.callee.name)?i:[t];break;case $o.AssignmentExpression:le(t.left,n),le(t.right,n),t.constant=t.left.constant&&t.right.constant,t.toWatch=[t];break;case $o.ArrayExpression:e=!0,i=[],r(t.elements,function(t){le(t,n),e=e&&t.constant,t.constant||i.push.apply(i,t.toWatch)}),t.constant=e,t.toWatch=i;break;case $o.ObjectExpression:e=!0,i=[],r(t.properties,function(t){le(t.value,n),e=e&&t.value.constant&&!t.computed,t.value.constant||i.push.apply(i,t.value.toWatch)}),t.constant=e,t.toWatch=i;break;case $o.ThisExpression:t.constant=!1,t.toWatch=[];break;case $o.LocalsExpression:t.constant=!1,t.toWatch=[]}}function ce(t){if(1==t.length){var n=t[0].expression,e=n.toWatch;return 1!==e.length?e:e[0]!==n?e:void 0}}function fe(t){return t.type===$o.Identifier||t.type===$o.MemberExpression}function he(t){if(1===t.body.length&&fe(t.body[0].expression))return{type:$o.AssignmentExpression,left:t.body[0].expression,right:{type:$o.NGValueParameter},operator:"="}}function pe(t){return 0===t.body.length||1===t.body.length&&(t.body[0].expression.type===$o.Literal||t.body[0].expression.type===$o.ArrayExpression||t.body[0].expression.type===$o.ObjectExpression)}function de(t){return t.constant}function ve(t,n){this.astBuilder=t,this.$filter=n}function ge(t,n){this.astBuilder=t,this.$filter=n}function me(t){return"constructor"==t}function ye(t){return S(t.valueOf)?t.valueOf():xo.call(t)}function $e(){var t,n,e=dt(),i=dt(),o={"true":!0,"false":!1,"null":null,undefined:void 0};this.addLiteral=function(t,n){o[t]=n},this.setIdentifierFns=function(e,r){return t=e,n=r,this},this.$get=["$filter",function(a){function u(t,n,r){var o,u,l;switch(r=r||b,typeof t){case"string":t=t.trim(),l=t;var g=r?i:e;if(o=g[l],!o){":"===t.charAt(0)&&":"===t.charAt(1)&&(u=!0,t=t.substring(2));var y=r?$:m,x=new yo(y),w=new bo(x,a,y);o=w.parse(t),o.constant?o.$$watchDelegate=d:u?o.$$watchDelegate=o.literal?h:f:o.inputs&&(o.$$watchDelegate=c),r&&(o=s(o)),g[l]=o}return v(o,n);case"function":return v(t,n);default:return v(p,n)}}function s(t){function n(n,e,r,i){var o=b;b=!0;try{return t(n,e,r,i)}finally{b=o}}if(!t)return t;n.$$watchDelegate=t.$$watchDelegate,n.assign=s(t.assign),n.constant=t.constant,n.literal=t.literal;for(var e=0;t.inputs&&e<t.inputs.length;++e)t.inputs[e]=s(t.inputs[e]);return n.inputs=t.inputs,n}function l(t,n){return null==t||null==n?t===n:("object"!=typeof t||(t=ye(t),"object"!=typeof t))&&(t===n||t!==t&&n!==n)}function c(t,n,e,r,i){var o,a=r.inputs;if(1===a.length){var u=l;return a=a[0],t.$watch(function(t){var n=a(t);return l(n,u)||(o=r(t,void 0,void 0,[n]),u=n&&ye(n)),o},n,e,i)}for(var s=[],c=[],f=0,h=a.length;f<h;f++)s[f]=l,c[f]=null;return t.$watch(function(t){for(var n=!1,e=0,i=a.length;e<i;e++){var u=a[e](t);(n||(n=!l(u,s[e])))&&(c[e]=u,s[e]=u&&ye(u))}return n&&(o=r(t,void 0,void 0,c)),o},n,e,i)}function f(t,n,e,r){var i,o;return i=t.$watch(function(t){return r(t)},function(t,e,r){o=t,S(n)&&n.apply(this,arguments),y(t)&&r.$$postDigest(function(){y(o)&&i()})},e)}function h(t,n,e,i){function o(t){var n=!0;return r(t,function(t){y(t)||(n=!1)}),n}var a,u;return a=t.$watch(function(t){return i(t)},function(t,e,r){u=t,S(n)&&n.call(this,t,e,r),o(t)&&r.$$postDigest(function(){o(u)&&a()})},e)}function d(t,n,e,r){var i;return i=t.$watch(function(t){return i(),r(t)},n,e)}function v(t,n){if(!n)return t;var e=t.$$watchDelegate,r=!1,i=e!==h&&e!==f,o=i?function(e,i,o,a){var u=r&&a?a[0]:t(e,i,o,a);return n(u,e,i)}:function(e,r,i,o){var a=t(e,r,i,o),u=n(a,e,r);return y(a)?u:a};return t.$$watchDelegate&&t.$$watchDelegate!==c?o.$$watchDelegate=t.$$watchDelegate:n.$stateful||(o.$$watchDelegate=c,r=!t.inputs,o.inputs=t.inputs?t.inputs:[t]),o}var g=Qr().noUnsafeEval,m={csp:g,expensiveChecks:!1,literals:I(o),isIdentifierStart:S(t)&&t,isIdentifierContinue:S(n)&&n},$={csp:g,expensiveChecks:!0,literals:I(o),isIdentifierStart:S(t)&&t,isIdentifierContinue:S(n)&&n},b=!1;return u.$$runningExpensiveChecks=function(){return b},u}]}function be(){this.$get=["$rootScope","$exceptionHandler",function(t,n){return we(function(n){t.$evalAsync(n)},n)}]}function xe(){this.$get=["$browser","$exceptionHandler",function(t,n){return we(function(n){t.defer(n)},n)}]}function we(t,e){function i(){this.$$state={status:0}}function o(t,n){return function(e){n.call(t,e)}}function a(t){var n,r,i;i=t.pending,t.processScheduled=!1,t.pending=void 0;for(var o=0,a=i.length;o<a;++o){r=i[o][0],n=i[o][t.status];try{S(n)?r.resolve(n(t.value)):1===t.status?r.resolve(t.value):r.reject(t.value)}catch(u){r.reject(u),e(u)}}}function u(n){!n.processScheduled&&n.pending&&(n.processScheduled=!0,t(function(){a(n)}))}function s(){this.promise=new i}function c(t){var n=new s,e=0,i=Zr(t)?[]:{};return r(t,function(t,r){e++,y(t).then(function(t){i.hasOwnProperty(r)||(i[r]=t,--e||n.resolve(i))},function(t){i.hasOwnProperty(r)||n.reject(t)})}),0===e&&n.resolve(i),n.promise}function f(t){var n=p();return r(t,function(t){y(t).then(n.resolve,n.reject)}),n.promise}var h=n("$q",TypeError),p=function(){var t=new s;return t.resolve=o(t,t.resolve),t.reject=o(t,t.reject),t.notify=o(t,t.notify),t};l(i.prototype,{then:function(t,n,e){if(m(t)&&m(n)&&m(e))return this;var r=new s;return this.$$state.pending=this.$$state.pending||[],this.$$state.pending.push([r,t,n,e]),this.$$state.status>0&&u(this.$$state),r.promise},"catch":function(t){return this.then(null,t)},"finally":function(t,n){return this.then(function(n){return g(n,!0,t)},function(n){return g(n,!1,t)},n)}}),l(s.prototype,{resolve:function(t){this.promise.$$state.status||(t===this.promise?this.$$reject(h("qcycle","Expected promise to be resolved with value other than itself '{0}'",t)):this.$$resolve(t))},$$resolve:function(t){function n(t){s||(s=!0,a.$$resolve(t))}function r(t){s||(s=!0,a.$$reject(t))}var i,a=this,s=!1;try{($(t)||S(t))&&(i=t&&t.then),S(i)?(this.promise.$$state.status=-1,i.call(t,n,r,o(this,this.notify))):(this.promise.$$state.value=t,this.promise.$$state.status=1,u(this.promise.$$state))}catch(l){r(l),e(l)}},reject:function(t){this.promise.$$state.status||this.$$reject(t)},$$reject:function(t){this.promise.$$state.value=t,this.promise.$$state.status=2,u(this.promise.$$state)},notify:function(n){var r=this.promise.$$state.pending;this.promise.$$state.status<=0&&r&&r.length&&t(function(){for(var t,i,o=0,a=r.length;o<a;o++){i=r[o][0],t=r[o][3];try{i.notify(S(t)?t(n):n)}catch(u){e(u)}}})}});var d=function(t){var n=new s;return n.reject(t),n.promise},v=function(t,n){var e=new s;return n?e.resolve(t):e.reject(t),e.promise},g=function(t,n,e){var r=null;try{S(e)&&(r=e())}catch(i){return v(i,!1)}return O(r)?r.then(function(){return v(t,n)},function(t){return v(t,!1)}):v(t,n)},y=function(t,n,e,r){var i=new s;return i.resolve(t),i.promise.then(n,e,r)},b=y,x=function(t){function n(t){r.resolve(t)}function e(t){r.reject(t)}if(!S(t))throw h("norslvr","Expected resolverFn, got '{0}'",t);var r=new s;return t(n,e),r.promise};return x.prototype=i.prototype,x.defer=p,x.reject=d,x.when=y,x.resolve=b,x.all=c,x.race=f,x}function Ce(){this.$get=["$window","$timeout",function(t,n){var e=t.requestAnimationFrame||t.webkitRequestAnimationFrame,r=t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.webkitCancelRequestAnimationFrame,i=!!e,o=i?function(t){var n=e(t);return function(){r(n)}}:function(t){var e=n(t,16.66,!1);return function(){n.cancel(e)}};return o.supported=i,o}]}function Se(){function t(t){function n(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$id=a(),this.$$ChildScope=null}return n.prototype=t,n}var i=10,o=n("$rootScope"),u=null,s=null;this.digestTtl=function(t){return arguments.length&&(i=t),i},this.$get=["$exceptionHandler","$parse","$browser",function(n,l,c){function f(t){t.currentScope.$$destroyed=!0}function h(t){9===Rr&&(t.$$childHead&&h(t.$$childHead),t.$$nextSibling&&h(t.$$nextSibling)),t.$parent=t.$$nextSibling=t.$$prevSibling=t.$$childHead=t.$$childTail=t.$root=t.$$watchers=null}function d(){this.$id=a(),this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null,this.$root=this,this.$$destroyed=!1,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$$isolateBindings=null}function v(t){if(_.$$phase)throw o("inprog","{0} already in progress",_.$$phase);_.$$phase=t}function g(){_.$$phase=null}function y(t,n){do t.$$watchersCount+=n;while(t=t.$parent)}function b(t,n,e){do t.$$listenerCount[e]-=n,0===t.$$listenerCount[e]&&delete t.$$listenerCount[e];while(t=t.$parent)}function x(){}function w(){for(;A.length;)try{A.shift()()}catch(t){n(t)}s=null}function C(){null===s&&(s=c.defer(function(){_.$apply(w)}))}d.prototype={constructor:d,$new:function(n,e){var r;return e=e||this,n?(r=new d,r.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=t(this)),r=new this.$$ChildScope),r.$parent=e,r.$$prevSibling=e.$$childTail,e.$$childHead?(e.$$childTail.$$nextSibling=r,e.$$childTail=r):e.$$childHead=e.$$childTail=r,(n||e!=this)&&r.$on("$destroy",f),r},$watch:function(t,n,e,r){var i=l(t);if(i.$$watchDelegate)return i.$$watchDelegate(this,n,e,i,t);var o=this,a=o.$$watchers,s={fn:n,last:x,get:i,exp:r||t,eq:!!e};return u=null,S(n)||(s.fn=p),a||(a=o.$$watchers=[]),a.unshift(s),y(this,1),function(){F(a,s)>=0&&y(o,-1),u=null}},$watchGroup:function(t,n){function e(){s=!1,l?(l=!1,n(o,o,u)):n(o,i,u)}var i=new Array(t.length),o=new Array(t.length),a=[],u=this,s=!1,l=!0;if(!t.length){var c=!0;return u.$evalAsync(function(){c&&n(o,o,u)}),function(){c=!1}}return 1===t.length?this.$watch(t[0],function(t,e,r){o[0]=t,i[0]=e,n(o,t===e?o:i,r)}):(r(t,function(t,n){var r=u.$watch(t,function(t,r){o[n]=t,i[n]=r,s||(s=!0,u.$evalAsync(e))});a.push(r)}),function(){for(;a.length;)a.shift()()})},$watchCollection:function(t,n){function r(t){o=t;var n,r,i,u,s;if(!m(o)){if($(o))if(e(o)){a!==p&&(a=p,g=a.length=0,f++),n=o.length,g!==n&&(f++,a.length=g=n);for(var l=0;l<n;l++)s=a[l],u=o[l],i=s!==s&&u!==u,i||s===u||(f++,a[l]=u)}else{a!==d&&(a=d={},g=0,f++),n=0;for(r in o)Or.call(o,r)&&(n++,u=o[r],s=a[r],r in a?(i=s!==s&&u!==u,i||s===u||(f++,a[r]=u)):(g++,a[r]=u,f++));if(g>n){f++;for(r in a)Or.call(o,r)||(g--,delete a[r])}}else a!==o&&(a=o,f++);return f}}function i(){if(v?(v=!1,n(o,o,s)):n(o,u,s),c)if($(o))if(e(o)){u=new Array(o.length);for(var t=0;t<o.length;t++)u[t]=o[t]}else{u={};for(var r in o)Or.call(o,r)&&(u[r]=o[r])}else u=o}r.$stateful=!0;var o,a,u,s=this,c=n.length>1,f=0,h=l(t,r),p=[],d={},v=!0,g=0;return this.$watch(h,i)},$digest:function(){var t,e,r,a,l,f,h,p,d,m,y,$,b=i,C=this,A=[];v("$digest"),c.$$checkUrlChange(),this===_&&null!==s&&(c.defer.cancel(s),w()),u=null;do{p=!1,m=C;for(var P=0;P<M.length;P++){try{$=M[P],$.scope.$eval($.expression,$.locals)}catch(T){n(T)}u=null}M.length=0;t:do{if(f=m.$$watchers)for(h=f.length;h--;)try{if(t=f[h])if(l=t.get,(e=l(m))===(r=t.last)||(t.eq?q(e,r):"number"==typeof e&&"number"==typeof r&&isNaN(e)&&isNaN(r))){if(t===u){p=!1;break t}}else p=!0,u=t,t.last=t.eq?I(e,null):e,a=t.fn,a(e,r===x?e:r,m),b<5&&(y=4-b,A[y]||(A[y]=[]),A[y].push({msg:S(t.exp)?"fn: "+(t.exp.name||t.exp.toString()):t.exp,newVal:e,oldVal:r}))}catch(T){n(T)}if(!(d=m.$$watchersCount&&m.$$childHead||m!==C&&m.$$nextSibling))for(;m!==C&&!(d=m.$$nextSibling);)m=m.$parent}while(m=d);if((p||M.length)&&!b--)throw g(),o("infdig","{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",i,A)}while(p||M.length);for(g();E<k.length;)try{k[E++]()}catch(T){n(T)}k.length=E=0},$destroy:function(){if(!this.$$destroyed){var t=this.$parent;this.$broadcast("$destroy"),this.$$destroyed=!0,this===_&&c.$$applicationDestroyed(),y(this,-this.$$watchersCount);for(var n in this.$$listenerCount)b(this,this.$$listenerCount[n],n);t&&t.$$childHead==this&&(t.$$childHead=this.$$nextSibling),t&&t.$$childTail==this&&(t.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=p,this.$on=this.$watch=this.$watchGroup=function(){return p},this.$$listeners={},this.$$nextSibling=null,h(this)}},$eval:function(t,n){return l(t)(this,n)},$evalAsync:function(t,n){_.$$phase||M.length||c.defer(function(){M.length&&_.$digest()}),M.push({scope:this,expression:l(t),locals:n})},$$postDigest:function(t){k.push(t)},$apply:function(t){try{v("$apply");try{return this.$eval(t)}finally{g()}}catch(e){n(e)}finally{try{_.$digest()}catch(e){throw n(e),e}}},$applyAsync:function(t){function n(){e.$eval(t)}var e=this;t&&A.push(n),t=l(t),C()},$on:function(t,n){var e=this.$$listeners[t];e||(this.$$listeners[t]=e=[]),e.push(n);var r=this;do r.$$listenerCount[t]||(r.$$listenerCount[t]=0),r.$$listenerCount[t]++;while(r=r.$parent);var i=this;return function(){var r=e.indexOf(n);r!==-1&&(e[r]=null,b(i,1,t))}},$emit:function(t,e){var r,i,o,a=[],u=this,s=!1,l={name:t,targetScope:u,stopPropagation:function(){s=!0},preventDefault:function(){l.defaultPrevented=!0},defaultPrevented:!1},c=z([l],arguments,1);do{for(r=u.$$listeners[t]||a,l.currentScope=u,i=0,o=r.length;i<o;i++)if(r[i])try{r[i].apply(null,c)}catch(f){n(f)}else r.splice(i,1),i--,o--;if(s)return l.currentScope=null,l;u=u.$parent}while(u);return l.currentScope=null,l},$broadcast:function(t,e){var r=this,i=r,o=r,a={name:t,targetScope:r,preventDefault:function(){a.defaultPrevented=!0},defaultPrevented:!1};if(!r.$$listenerCount[t])return a;for(var u,s,l,c=z([a],arguments,1);i=o;){for(a.currentScope=i,u=i.$$listeners[t]||[],s=0,l=u.length;s<l;s++)if(u[s])try{u[s].apply(null,c)}catch(f){n(f)}else u.splice(s,1),s--,l--;if(!(o=i.$$listenerCount[t]&&i.$$childHead||i!==r&&i.$$nextSibling))for(;i!==r&&!(o=i.$$nextSibling);)i=i.$parent}return a.currentScope=null,a}};var _=new d,M=_.$$asyncQueue=[],k=_.$$postDigestQueue=[],A=_.$$applyAsyncQueue=[],E=0;return _}]}function _e(){var t=/^\s*(https?|ftp|mailto|tel|file):/,n=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(n){return y(n)?(t=n,this):t},this.imgSrcSanitizationWhitelist=function(t){return y(t)?(n=t,this):n},this.$get=function(){return function(e,r){var i,o=r?n:t;return i=De(e).href,""===i||i.match(o)?e:"unsafe:"+i}}}function Me(t){if("self"===t)return t;if(x(t)){if(t.indexOf("***")>-1)throw wo("iwcard","Illegal sequence *** in string matcher.  String: {0}",t);return t=Kr(t).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*"),new RegExp("^"+t+"$")}if(_(t))return new RegExp("^"+t.source+"$");throw wo("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}function ke(t){var n=[];return y(t)&&r(t,function(t){n.push(Me(t))}),n}function Ae(){this.SCE_CONTEXTS=Co;var t=["self"],n=[];this.resourceUrlWhitelist=function(n){return arguments.length&&(t=ke(n)),t},this.resourceUrlBlacklist=function(t){return arguments.length&&(n=ke(t)),n},this.$get=["$injector",function(e){function r(t,n){return"self"===t?Ne(n):!!t.exec(n.href)}function i(e){var i,o,a=De(e.toString()),u=!1;for(i=0,o=t.length;i<o;i++)if(r(t[i],a)){u=!0;break}if(u)for(i=0,o=n.length;i<o;i++)if(r(n[i],a)){u=!1;break}return u}function o(t){var n=function(t){this.$$unwrapTrustedValue=function(){return t}};return t&&(n.prototype=new t),n.prototype.valueOf=function(){return this.$$unwrapTrustedValue()},n.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()},n}function a(t,n){var e=f.hasOwnProperty(t)?f[t]:null;if(!e)throw wo("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",t,n);if(null===n||m(n)||""===n)return n;if("string"!=typeof n)throw wo("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",t);return new e(n)}function u(t){return t instanceof c?t.$$unwrapTrustedValue():t}function s(t,n){if(null===n||m(n)||""===n)return n;var e=f.hasOwnProperty(t)?f[t]:null;if(e&&n instanceof e)return n.$$unwrapTrustedValue();if(t===Co.RESOURCE_URL){if(i(n))return n;throw wo("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}",n.toString())}if(t===Co.HTML)return l(n);throw wo("unsafe","Attempting to use an unsafe value in a safe context.")}var l=function(t){throw wo("unsafe","Attempting to use an unsafe value in a safe context.")};e.has("$sanitize")&&(l=e.get("$sanitize"));var c=o(),f={};return f[Co.HTML]=o(c),f[Co.CSS]=o(c),f[Co.URL]=o(c),f[Co.JS]=o(c),f[Co.RESOURCE_URL]=o(f[Co.URL]),{trustAs:a,getTrusted:s,valueOf:u}}]}function Ee(){var t=!0;this.enabled=function(n){return arguments.length&&(t=!!n),t},this.$get=["$parse","$sceDelegate",function(n,e){if(t&&Rr<8)throw wo("iequirks","Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode.  You can fix this by adding the text <!doctype html> to the top of your HTML document.  See http://docs.angularjs.org/api/ng.$sce for more information.");var i=gt(Co);i.isEnabled=function(){return t},i.trustAs=e.trustAs,i.getTrusted=e.getTrusted,i.valueOf=e.valueOf,t||(i.trustAs=i.getTrusted=function(t,n){return n},i.valueOf=d),i.parseAs=function(t,e){var r=n(e);return r.literal&&r.constant?r:n(e,function(n){return i.getTrusted(t,n)})};var o=i.parseAs,a=i.getTrusted,u=i.trustAs;return r(Co,function(t,n){var e=Lr(n);i[xt("parse_as_"+e)]=function(n){return o(t,n)},i[xt("get_trusted_"+e)]=function(n){return a(t,n)},i[xt("trust_as_"+e)]=function(n){return u(t,n)}}),i}]}function Pe(){this.$get=["$window","$document",function(t,n){var e,r,i={},o=t.chrome&&t.chrome.app&&t.chrome.app.runtime,a=!o&&t.history&&t.history.pushState,u=f((/android (\d+)/.exec(Lr((t.navigator||{}).userAgent))||[])[1]),s=/Boxee/i.test((t.navigator||{}).userAgent),l=n[0]||{},c=/^(Moz|webkit|ms)(?=[A-Z])/,h=l.body&&l.body.style,p=!1,d=!1;if(h){for(var v in h)if(r=c.exec(v)){e=r[0],e=e[0].toUpperCase()+e.substr(1);break}e||(e="WebkitOpacity"in h&&"webkit"),p=!!("transition"in h||e+"Transition"in h),d=!!("animation"in h||e+"Animation"in h),!u||p&&d||(p=x(h.webkitTransition),d=x(h.webkitAnimation))}return{history:!(!a||u<4||s),hasEvent:function(t){if("input"===t&&Rr<=11)return!1;if(m(i[t])){var n=l.createElement("div");i[t]="on"+t in n}return i[t]},csp:Qr(),vendorPrefix:e,transitions:p,animations:d,android:u}}]}function Te(){var t;this.httpOptions=function(n){return n?(t=n,this):t},this.$get=["$templateCache","$http","$q","$sce",function(n,e,r,i){function o(a,u){function s(t){if(!u)throw So("tpload","Failed to load template: {0} (HTTP status: {1} {2})",a,t.status,t.statusText);return r.reject(t)}o.totalPendingRequests++,x(a)&&!m(n.get(a))||(a=i.getTrustedResourceUrl(a));var c=e.defaults&&e.defaults.transformResponse;return Zr(c)?c=c.filter(function(t){return t!==kn}):c===kn&&(c=null),e.get(a,l({cache:n,transformResponse:c},t))["finally"](function(){o.totalPendingRequests--}).then(function(t){return n.put(a,t.data),t.data},s)}return o.totalPendingRequests=0,o}]}function Oe(){this.$get=["$rootScope","$browser","$location",function(t,n,e){var i={};return i.findBindings=function(t,n,e){var i=t.getElementsByClassName("ng-binding"),o=[];return r(i,function(t){var i=Yr.element(t).data("$binding");i&&r(i,function(r){if(e){var i=new RegExp("(^|\\s)"+Kr(n)+"(\\s|\\||$)");i.test(r)&&o.push(t)}else r.indexOf(n)!=-1&&o.push(t)})}),o},i.findModels=function(t,n,e){for(var r=["ng-","data-ng-","ng\\:"],i=0;i<r.length;++i){var o=e?"=":"*=",a="["+r[i]+"model"+o+'"'+n+'"]',u=t.querySelectorAll(a);if(u.length)return u}},i.getLocation=function(){return e.url()},i.setLocation=function(n){n!==e.url()&&(e.url(n),t.$digest())},i.whenStable=function(t){n.notifyWhenNoOutstandingRequests(t)},i}]}function Le(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function(t,n,e,r,i){function o(o,u,s){S(o)||(s=u,u=o,o=p);var l,c=V(arguments,3),f=y(s)&&!s,h=(f?r:e).defer(),d=h.promise;return l=n.defer(function(){try{h.resolve(o.apply(null,c))}catch(n){h.reject(n),i(n)}finally{delete a[d.$$timeoutId]}f||t.$apply()},u),d.$$timeoutId=l,a[l]=h,d}var a={};return o.cancel=function(t){return!!(t&&t.$$timeoutId in a)&&(a[t.$$timeoutId].reject("canceled"),delete a[t.$$timeoutId],n.defer.cancel(t.$$timeoutId))},o}]}function De(t){var n=t;return Rr&&(_o.setAttribute("href",n),n=_o.href),_o.setAttribute("href",n),{href:_o.href,protocol:_o.protocol?_o.protocol.replace(/:$/,""):"",host:_o.host,search:_o.search?_o.search.replace(/^\?/,""):"",hash:_o.hash?_o.hash.replace(/^#/,""):"",hostname:_o.hostname,port:_o.port,pathname:"/"===_o.pathname.charAt(0)?_o.pathname:"/"+_o.pathname}}function Ne(t){var n=x(t)?De(t):t;return n.protocol===Mo.protocol&&n.host===Mo.host}function je(){this.$get=v(t)}function Re(t){function n(t){try{return decodeURIComponent(t)}catch(n){return t}}var e=t[0]||{},r={},i="";return function(){var t,o,a,u,s,l=e.cookie||"";if(l!==i)for(i=l,t=i.split("; "),r={},a=0;a<t.length;a++)o=t[a],u=o.indexOf("="),u>0&&(s=n(o.substring(0,u)),m(r[s])&&(r[s]=n(o.substring(u+1))));return r}}function Fe(){this.$get=Re}function Ie(t){function n(i,o){if($(i)){var a={};return r(i,function(t,e){a[e]=n(e,t)}),a}return t.factory(i+e,o)}var e="Filter";this.register=n,this.$get=["$injector",function(t){return function(n){return t.get(n+e)}}],n("currency",We),n("date",or),n("filter",qe),n("json",ar),n("limitTo",ur),n("lowercase",Lo),n("number",Ue),n("orderBy",lr),n("uppercase",Do)}function qe(){return function(t,r,i,o){if(!e(t)){if(null==t)return t;throw n("filter")("notarray","Expected array but received: {0}",t)}o=o||"$";var a,u,s=Be(r);switch(s){case"function":a=r;break;case"boolean":case"null":case"number":case"string":u=!0;case"object":a=ze(r,i,o,u);break;default:return t}return Array.prototype.filter.call(t,a)}}function ze(t,n,e,r){var i,o=$(t)&&e in t;return n===!0?n=q:S(n)||(n=function(t,n){return!m(t)&&(null===t||null===n?t===n:!($(n)||$(t)&&!g(t))&&(t=Lr(""+t),n=Lr(""+n),t.indexOf(n)!==-1))}),i=function(i){return o&&!$(i)?Ve(i,t[e],n,e,!1):Ve(i,t,n,e,r)}}function Ve(t,n,e,r,i,o){var a=Be(t),u=Be(n);if("string"===u&&"!"===n.charAt(0))return!Ve(t,n.substring(1),e,r,i);if(Zr(t))return t.some(function(t){return Ve(t,n,e,r,i)});switch(a){case"object":var s;if(i){for(s in t)if("$"!==s.charAt(0)&&Ve(t[s],n,e,r,!0))return!0;return!o&&Ve(t,n,e,r,!1)}if("object"===u){for(s in n){var l=n[s];if(!S(l)&&!m(l)){var c=s===r,f=c?t:t[s];if(!Ve(f,l,e,r,c,c))return!1}}return!0}return e(t,n);case"function":return!1;default:return e(t,n)}}function Be(t){return null===t?"null":typeof t}function We(t){var n=t.NUMBER_FORMATS;return function(t,e,r){return m(e)&&(e=n.CURRENCY_SYM),m(r)&&(r=n.PATTERNS[1].maxFrac),null==t?t:Ge(t,n.PATTERNS[1],n.GROUP_SEP,n.DECIMAL_SEP,r).replace(/\u00A4/g,e)}}function Ue(t){var n=t.NUMBER_FORMATS;return function(t,e){return null==t?t:Ge(t,n.PATTERNS[0],n.GROUP_SEP,n.DECIMAL_SEP,e)}}function He(t){var n,e,r,i,o,a=0;for((e=t.indexOf(Ao))>-1&&(t=t.replace(Ao,"")),(r=t.search(/e/i))>0?(e<0&&(e=r),e+=+t.slice(r+1),t=t.substring(0,r)):e<0&&(e=t.length),r=0;t.charAt(r)==Eo;r++);if(r==(o=t.length))n=[0],e=1;else{for(o--;t.charAt(o)==Eo;)o--;for(e-=r,n=[],i=0;r<=o;r++,i++)n[i]=+t.charAt(r)}return e>ko&&(n=n.splice(0,ko-1),a=e-1,e=1),{d:n,e:a,i:e}}function Ye(t,n,e,r){var i=t.d,o=i.length-t.i;n=m(n)?Math.min(Math.max(e,o),r):+n;var a=n+t.i,u=i[a];if(a>0){i.splice(Math.max(t.i,a));for(var s=a;s<i.length;s++)i[s]=0}else{o=Math.max(0,o),t.i=1,i.length=Math.max(1,a=n+1),i[0]=0;for(var l=1;l<a;l++)i[l]=0}if(u>=5)if(a-1<0){for(var c=0;c>a;c--)i.unshift(0),t.i++;i.unshift(1),t.i++}else i[a-1]++;for(;o<Math.max(0,n);o++)i.push(0);var f=i.reduceRight(function(t,n,e,r){return n+=t,r[e]=n%10,Math.floor(n/10)},0);f&&(i.unshift(f),t.i++)}function Ge(t,n,e,r,i){if(!x(t)&&!w(t)||isNaN(t))return"";var o,a=!isFinite(t),u=!1,s=Math.abs(t)+"",l="";if(a)l="∞";else{o=He(s),Ye(o,i,n.minFrac,n.maxFrac);var c=o.d,f=o.i,h=o.e,p=[];for(u=c.reduce(function(t,n){return t&&!n},!0);f<0;)c.unshift(0),f++;f>0?p=c.splice(f,c.length):(p=c,c=[0]);var d=[];for(c.length>=n.lgSize&&d.unshift(c.splice(-n.lgSize,c.length).join(""));c.length>n.gSize;)d.unshift(c.splice(-n.gSize,c.length).join(""));c.length&&d.unshift(c.join("")),l=d.join(e),p.length&&(l+=r+p.join("")),h&&(l+="e+"+h)}return t<0&&!u?n.negPre+l+n.negSuf:n.posPre+l+n.posSuf}function Ze(t,n,e,r){var i="";for((t<0||r&&t<=0)&&(r?t=-t+1:(t=-t,i="-")),t=""+t;t.length<n;)t=Eo+t;return e&&(t=t.substr(t.length-n)),i+t}function Xe(t,n,e,r,i){return e=e||0,function(o){var a=o["get"+t]();return(e>0||a>-e)&&(a+=e),0===a&&e==-12&&(a=12),Ze(a,n,r,i)}}function Je(t,n,e){return function(r,i){var o=r["get"+t](),a=(e?"STANDALONE":"")+(n?"SHORT":""),u=Dr(a+t);return i[u][o]}}function Ke(t,n,e){var r=-1*e,i=r>=0?"+":"";return i+=Ze(Math[r>0?"floor":"ceil"](r/60),2)+Ze(Math.abs(r%60),2)}function Qe(t){var n=new Date(t,0,1).getDay();return new Date(t,0,(n<=4?5:12)-n)}function tr(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate()+(4-t.getDay()))}function nr(t){return function(n){var e=Qe(n.getFullYear()),r=tr(n),i=+r-+e,o=1+Math.round(i/6048e5);return Ze(o,t)}}function er(t,n){return t.getHours()<12?n.AMPMS[0]:n.AMPMS[1]}function rr(t,n){return t.getFullYear()<=0?n.ERAS[0]:n.ERAS[1]}function ir(t,n){return t.getFullYear()<=0?n.ERANAMES[0]:n.ERANAMES[1]}function or(t){function n(t){var n;if(n=t.match(e)){var r=new Date(0),i=0,o=0,a=n[8]?r.setUTCFullYear:r.setFullYear,u=n[8]?r.setUTCHours:r.setHours;n[9]&&(i=f(n[9]+n[10]),o=f(n[9]+n[11])),a.call(r,f(n[1]),f(n[2])-1,f(n[3]));var s=f(n[4]||0)-i,l=f(n[5]||0)-o,c=f(n[6]||0),h=Math.round(1e3*parseFloat("0."+(n[7]||0)));return u.call(r,s,l,c,h),r}return t}var e=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(e,i,o){var a,u,s="",l=[];if(i=i||"mediumDate",i=t.DATETIME_FORMATS[i]||i,x(e)&&(e=Oo.test(e)?f(e):n(e)),w(e)&&(e=new Date(e)),!C(e)||!isFinite(e.getTime()))return e;for(;i;)u=To.exec(i),u?(l=z(l,u,1),i=l.pop()):(l.push(i),i=null);var c=e.getTimezoneOffset();return o&&(c=Y(o,c),e=Z(e,o,!0)),r(l,function(n){a=Po[n],s+=a?a(e,t.DATETIME_FORMATS,c):"''"===n?"'":n.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),s}}function ar(){return function(t,n){return m(n)&&(n=2),U(t,n)}}function ur(){return function(t,n,r){return n=Math.abs(Number(n))===1/0?Number(n):f(n),isNaN(n)?t:(w(t)&&(t=t.toString()),e(t)?(r=!r||isNaN(r)?0:f(r),r=r<0?Math.max(0,t.length+r):r,n>=0?sr(t,r,r+n):0===r?sr(t,n,t.length):sr(t,Math.max(0,r+n),r)):t)}}function sr(t,n,e){return x(t)?t.slice(n,e):zr.call(t,n,e)}function lr(t){function r(n){return n.map(function(n){var e=1,r=d;if(S(n))r=n;else if(x(n)&&("+"!=n.charAt(0)&&"-"!=n.charAt(0)||(e="-"==n.charAt(0)?-1:1,n=n.substring(1)),""!==n&&(r=t(n),r.constant))){var i=r();r=function(t){return t[i]}}return{get:r,descending:e}})}function i(t){switch(typeof t){case"number":case"boolean":case"string":return!0;default:return!1}}function o(t){return S(t.valueOf)&&(t=t.valueOf(),i(t))?t:g(t)&&(t=t.toString(),i(t))?t:t}function a(t,n){var e=typeof t;return null===t?(e="string",t="null"):"object"===e&&(t=o(t)),{value:t,type:e,index:n}}function u(t,n){var e=0,r=t.type,i=n.type;if(r===i){var o=t.value,a=n.value;"string"===r?(o=o.toLowerCase(),a=a.toLowerCase()):"object"===r&&($(o)&&(o=t.index),$(a)&&(a=n.index)),o!==a&&(e=o<a?-1:1)}else e=r<i?-1:1;return e}return function(t,i,o,s){function l(t,n){return{value:t,tieBreaker:{value:n,type:"number",index:n},predicateValues:f.map(function(e){return a(e.get(t),n)})}}function c(t,n){for(var e=0,r=f.length;e<r;e++){var i=p(t.predicateValues[e],n.predicateValues[e]);if(i)return i*f[e].descending*h}return p(t.tieBreaker,n.tieBreaker)*h}if(null==t)return t;if(!e(t))throw n("orderBy")("notarray","Expected array but received: {0}",t);Zr(i)||(i=[i]),0===i.length&&(i=["+"]);var f=r(i),h=o?-1:1,p=S(s)?s:u,d=Array.prototype.map.call(t,l);return d.sort(c),t=d.map(function(t){return t.value})}}function cr(t){return S(t)&&(t={link:t}),t.restrict=t.restrict||"AC",v(t)}function fr(t,n){t.$name=n}function hr(t,n,e,i,o){var a=this,u=[];a.$error={},a.$$success={},a.$pending=void 0,a.$name=o(n.name||n.ngForm||"")(e),a.$dirty=!1,a.$pristine=!0,a.$valid=!0,a.$invalid=!1,a.$submitted=!1,a.$$parentForm=Ro,a.$rollbackViewValue=function(){r(u,function(t){t.$rollbackViewValue()})},a.$commitViewValue=function(){r(u,function(t){t.$commitViewValue()})},a.$addControl=function(t){ft(t.$name,"input"),u.push(t),t.$name&&(a[t.$name]=t),t.$$parentForm=a},a.$$renameControl=function(t,n){var e=t.$name;a[e]===t&&delete a[e],a[n]=t,t.$name=n},a.$removeControl=function(t){t.$name&&a[t.$name]===t&&delete a[t.$name],r(a.$pending,function(n,e){a.$setValidity(e,null,t)}),r(a.$error,function(n,e){a.$setValidity(e,null,t)}),r(a.$$success,function(n,e){a.$setValidity(e,null,t)}),F(u,t),t.$$parentForm=Ro},kr({ctrl:this,$element:t,set:function(t,n,e){var r=t[n];if(r){var i=r.indexOf(e);i===-1&&r.push(e)}else t[n]=[e]},unset:function(t,n,e){var r=t[n];r&&(F(r,e),0===r.length&&delete t[n])},$animate:i}),a.$setDirty=function(){i.removeClass(t,xa),i.addClass(t,wa),a.$dirty=!0,a.$pristine=!1,a.$$parentForm.$setDirty()},a.$setPristine=function(){i.setClass(t,xa,wa+" "+Fo),a.$dirty=!1,a.$pristine=!0,a.$submitted=!1,r(u,function(t){t.$setPristine()})},a.$setUntouched=function(){r(u,function(t){t.$setUntouched()})},a.$setSubmitted=function(){i.addClass(t,Fo),a.$submitted=!0,a.$$parentForm.$setSubmitted()}}function pr(t){t.$formatters.push(function(n){return t.$isEmpty(n)?n:n.toString()})}function dr(t,n,e,r,i,o){vr(t,n,e,r,i,o),pr(r)}function vr(t,n,e,r,i,o){var a=Lr(n[0].type);if(!i.android){var u=!1;n.on("compositionstart",function(){u=!0}),n.on("compositionend",function(){u=!1,l()})}var s,l=function(t){if(s&&(o.defer.cancel(s),s=null),!u){var i=n.val(),l=t&&t.type;"password"===a||e.ngTrim&&"false"===e.ngTrim||(i=Jr(i)),(r.$viewValue!==i||""===i&&r.$$hasNativeValidators)&&r.$setViewValue(i,l)}};if(i.hasEvent("input"))n.on("input",l);else{var c=function(t,n,e){s||(s=o.defer(function(){s=null,n&&n.value===e||l(t)}))};n.on("keydown",function(t){var n=t.keyCode;91===n||15<n&&n<19||37<=n&&n<=40||c(t,this,this.value)}),i.hasEvent("paste")&&n.on("paste cut",c)}n.on("change",l),Ko[a]&&r.$$hasNativeValidators&&a===e.type&&n.on(Jo,function(t){if(!s){var n=this[Tr],e=n.badInput,r=n.typeMismatch;s=o.defer(function(){s=null,n.badInput===e&&n.typeMismatch===r||l(t)})}}),r.$render=function(){var t=r.$isEmpty(r.$viewValue)?"":r.$viewValue;n.val()!==t&&n.val(t)}}function gr(t,n){if(C(t))return t;if(x(t)){Go.lastIndex=0;var e=Go.exec(t);if(e){var r=+e[1],i=+e[2],o=0,a=0,u=0,s=0,l=Qe(r),c=7*(i-1);return n&&(o=n.getHours(),a=n.getMinutes(),u=n.getSeconds(),s=n.getMilliseconds()),new Date(r,0,l.getDate()+c,o,a,u,s)}}return NaN}function mr(t,n){return function(e,i){var o,a;if(C(e))return e;if(x(e)){if('"'==e.charAt(0)&&'"'==e.charAt(e.length-1)&&(e=e.substring(1,e.length-1)),Vo.test(e))return new Date(e);if(t.lastIndex=0,o=t.exec(e))return o.shift(),a=i?{yyyy:i.getFullYear(),MM:i.getMonth()+1,dd:i.getDate(),HH:i.getHours(),mm:i.getMinutes(),ss:i.getSeconds(),sss:i.getMilliseconds()/1e3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},r(o,function(t,e){e<n.length&&(a[n[e]]=+t)}),new Date(a.yyyy,a.MM-1,a.dd,a.HH,a.mm,a.ss||0,1e3*a.sss||0)}return NaN}}function yr(t,n,e,r){return function(i,o,a,u,s,l,c){function f(t){return t&&!(t.getTime&&t.getTime()!==t.getTime())}function h(t){return y(t)&&!C(t)?e(t)||void 0:t}$r(i,o,a,u),vr(i,o,a,u,s,l);var p,d=u&&u.$options&&u.$options.timezone;if(u.$$parserName=t,u.$parsers.push(function(t){if(u.$isEmpty(t))return null;if(n.test(t)){var r=e(t,p);return d&&(r=Z(r,d)),r}}),u.$formatters.push(function(t){if(t&&!C(t))throw Aa("datefmt","Expected `{0}` to be a date",t);return f(t)?(p=t,p&&d&&(p=Z(p,d,!0)),c("date")(t,r,d)):(p=null,"")}),y(a.min)||a.ngMin){var v;u.$validators.min=function(t){return!f(t)||m(v)||e(t)>=v},a.$observe("min",function(t){
diff --git a/dist/xosNgLib.css b/dist/xosNgLib.css
index dec2ce3..b4ae64b 100644
--- a/dist/xosNgLib.css
+++ b/dist/xosNgLib.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 @keyframes slideInRight {
   from {
     transform: translate3d(100%, 0, 0);
diff --git a/dist/xosUiComponents.js b/dist/xosUiComponents.js
index 2392930..cc08dbe 100644
--- a/dist/xosUiComponents.js
+++ b/dist/xosUiComponents.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 'use strict';
 
 /**
diff --git a/gulp/dev.js b/gulp/dev.js
index ee51e3f..8dc7573 100644
--- a/gulp/dev.js
+++ b/gulp/dev.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /*eslint-env node */
 (function () {
   'use strict';
diff --git a/gulp/docs.js b/gulp/docs.js
index 11494e6..e5e7bf7 100644
--- a/gulp/docs.js
+++ b/gulp/docs.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /*eslint-env node */
 
 const gulp = require('gulp');
diff --git a/gulp/ngXosHelpers.js b/gulp/ngXosHelpers.js
index 4888bdf..f297c35 100644
--- a/gulp/ngXosHelpers.js
+++ b/gulp/ngXosHelpers.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /*eslint-env node */
 
 (function () {
diff --git a/gulp/ngXosVendor.js b/gulp/ngXosVendor.js
index 9e82c23..6205137 100644
--- a/gulp/ngXosVendor.js
+++ b/gulp/ngXosVendor.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /*eslint-env node */
 (function () {
   
diff --git a/gulpfile.js b/gulpfile.js
index e25e936..57037b9 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /*eslint-env node */
 (function () {
   'use strict';
diff --git a/karma.conf.ci.js b/karma.conf.ci.js
index 399cdfd..834214f 100644
--- a/karma.conf.ci.js
+++ b/karma.conf.ci.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /*eslint-env node */
 (function () {
   
diff --git a/karma.conf.js b/karma.conf.js
index 16ca1a6..e62295b 100644
--- a/karma.conf.js
+++ b/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /*eslint-env node */
 (function () {
   'use strict';
diff --git a/karma.conf.ui.js b/karma.conf.ui.js
index fe5aadf..72132d9 100644
--- a/karma.conf.ui.js
+++ b/karma.conf.ui.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /*eslint-env node */
 (function () {
   
diff --git a/ng-xos-lib-onboard.yaml b/ng-xos-lib-onboard.yaml
index 381e63a..ce84c8c 100644
--- a/ng-xos-lib-onboard.yaml
+++ b/ng-xos-lib-onboard.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Onboard ng-xos-lib
diff --git a/spec/csrftoken.test.js b/spec/csrftoken.test.js
index fd00181..3a5d035 100644
--- a/spec/csrftoken.test.js
+++ b/spec/csrftoken.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function () {
   'use strict';
   describe('The xos.helper module', function(){
diff --git a/spec/label_formatter.test.js b/spec/label_formatter.test.js
index 119f4ce..e2b2a9d 100644
--- a/spec/label_formatter.test.js
+++ b/spec/label_formatter.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/spec/log.test.js b/spec/log.test.js
index 21085c6..88bcab1 100644
--- a/spec/log.test.js
+++ b/spec/log.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/spec/noHyperlinks.test.js b/spec/noHyperlinks.test.js
index 7b6e9d0..0db18a0 100644
--- a/spec/noHyperlinks.test.js
+++ b/spec/noHyperlinks.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/spec/notification.test.js b/spec/notification.test.js
index cbc1e56..4ed7304 100644
--- a/spec/notification.test.js
+++ b/spec/notification.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/spec/services/helpers/comparator.test.js b/spec/services/helpers/comparator.test.js
index 66e26d3..4262411 100644
--- a/spec/services/helpers/comparator.test.js
+++ b/spec/services/helpers/comparator.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/spec/services/helpers/form.helpers.test.js b/spec/services/helpers/form.helpers.test.js
index 308d503..aa37c25 100644
--- a/spec/services/helpers/form.helpers.test.js
+++ b/spec/services/helpers/form.helpers.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/spec/services/helpers/user-prefs.test.js b/spec/services/helpers/user-prefs.test.js
index 63b55c9..f8582aa 100644
--- a/spec/services/helpers/user-prefs.test.js
+++ b/spec/services/helpers/user-prefs.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/spec/test_helpers.js b/spec/test_helpers.js
index c373c5e..625124e 100644
--- a/spec/test_helpers.js
+++ b/spec/test_helpers.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * Collection of helpers for xos tests
  */
diff --git a/spec/ui/alert.test.js b/spec/ui/alert.test.js
index c67d03a..d5151f6 100644
--- a/spec/ui/alert.test.js
+++ b/spec/ui/alert.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/spec/ui/custom-validator.test.js b/spec/ui/custom-validator.test.js
index c85c934..55a1afc 100644
--- a/spec/ui/custom-validator.test.js
+++ b/spec/ui/custom-validator.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/spec/ui/field.test.js b/spec/ui/field.test.js
index 6260ac8..9d8e90d 100644
--- a/spec/ui/field.test.js
+++ b/spec/ui/field.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**

  * © OpenCORD

  *

diff --git a/spec/ui/form.test.js b/spec/ui/form.test.js
index deb7e60..a24dd31 100644
--- a/spec/ui/form.test.js
+++ b/spec/ui/form.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/spec/ui/pagination.test.js b/spec/ui/pagination.test.js
index 03f1045..4cfec15 100644
--- a/spec/ui/pagination.test.js
+++ b/spec/ui/pagination.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/spec/ui/smart-pie.test.js b/spec/ui/smart-pie.test.js
index d5a9cfe..d5a09c4 100644
--- a/spec/ui/smart-pie.test.js
+++ b/spec/ui/smart-pie.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/spec/ui/smart-table.test.js b/spec/ui/smart-table.test.js
index e87e807..941cebc 100644
--- a/spec/ui/smart-table.test.js
+++ b/spec/ui/smart-table.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/spec/ui/table.test.js b/spec/ui/table.test.js
index 0b6ea87..fc56429 100644
--- a/spec/ui/table.test.js
+++ b/spec/ui/table.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/spec/ui/validation.test.js b/spec/ui/validation.test.js
index 44d9f96..a572316 100644
--- a/spec/ui/validation.test.js
+++ b/spec/ui/validation.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/spec/ui/xos.helpers.mock.js b/spec/ui/xos.helpers.mock.js
index bf0f0f5..55b374d 100644
--- a/spec/ui/xos.helpers.mock.js
+++ b/spec/ui/xos.helpers.mock.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function () {
   'use strict';
   angular.module('xos.helpers', ['xos.uiComponents'])
diff --git a/src/index.ngdoc.js b/src/index.ngdoc.js
index 6f6a77c..3ab7574 100644
--- a/src/index.ngdoc.js
+++ b/src/index.ngdoc.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
 * @ngdoc overview
 * @name ngXosLib
diff --git a/src/services/csrfToken.interceptor.js b/src/services/csrfToken.interceptor.js
index 5f87de5..393d8ea 100644
--- a/src/services/csrfToken.interceptor.js
+++ b/src/services/csrfToken.interceptor.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/helpers/ui/comparator.service.js b/src/services/helpers/ui/comparator.service.js
index 24bf9f9..824f464 100644
--- a/src/services/helpers/ui/comparator.service.js
+++ b/src/services/helpers/ui/comparator.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/helpers/ui/form.helpers.js b/src/services/helpers/ui/form.helpers.js
index 5dbecd7..92f49ca 100644
--- a/src/services/helpers/ui/form.helpers.js
+++ b/src/services/helpers/ui/form.helpers.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function () {
 
   angular.module('xos.uiComponents')
diff --git a/src/services/helpers/ui/label_formatter.service.js b/src/services/helpers/ui/label_formatter.service.js
index e01e772..150e3e3 100644
--- a/src/services/helpers/ui/label_formatter.service.js
+++ b/src/services/helpers/ui/label_formatter.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/helpers/user-prefs.service.js b/src/services/helpers/user-prefs.service.js
index f3f1f19..0a430ae 100644
--- a/src/services/helpers/user-prefs.service.js
+++ b/src/services/helpers/user-prefs.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function () {

   

   angular.module('xos.helpers')

diff --git a/src/services/log.decorator.js b/src/services/log.decorator.js
index 37d36f9..54b9e94 100644
--- a/src/services/log.decorator.js
+++ b/src/services/log.decorator.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 // TODO write tests for log
 
 /* eslint-disable  angular/ng_window_service*/
diff --git a/src/services/noHyperlinks.interceptor.js b/src/services/noHyperlinks.interceptor.js
index af3dd63..6927b57 100644
--- a/src/services/noHyperlinks.interceptor.js
+++ b/src/services/noHyperlinks.interceptor.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/notification.service.js b/src/services/notification.service.js
index 9a1598e..00e0453 100644
--- a/src/services/notification.service.js
+++ b/src/services/notification.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /* eslint-disable  angular/ng_window_service*/
 (function() {
   'use strict';
diff --git a/src/services/rest/Dashboards.js b/src/services/rest/Dashboards.js
index 42af90b..45df6c7 100644
--- a/src/services/rest/Dashboards.js
+++ b/src/services/rest/Dashboards.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Deployments.js b/src/services/rest/Deployments.js
index 4fecbc2..c37fdd6 100644
--- a/src/services/rest/Deployments.js
+++ b/src/services/rest/Deployments.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Example.js b/src/services/rest/Example.js
index b13ccda..d4b9b7e 100644
--- a/src/services/rest/Example.js
+++ b/src/services/rest/Example.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Flavors.js b/src/services/rest/Flavors.js
index 348b770..840578a 100644
--- a/src/services/rest/Flavors.js
+++ b/src/services/rest/Flavors.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Images.js b/src/services/rest/Images.js
index 4fe9cb3..19eb685 100644
--- a/src/services/rest/Images.js
+++ b/src/services/rest/Images.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Instances.js b/src/services/rest/Instances.js
index f1e8521..03ffee9 100644
--- a/src/services/rest/Instances.js
+++ b/src/services/rest/Instances.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Me.js b/src/services/rest/Me.js
index fe3dfb1..ac4c9ef 100644
--- a/src/services/rest/Me.js
+++ b/src/services/rest/Me.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {

   'use strict';

 

diff --git a/src/services/rest/Networks.js b/src/services/rest/Networks.js
index 74b73b6..3f0ca5b 100644
--- a/src/services/rest/Networks.js
+++ b/src/services/rest/Networks.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Networkstemplates.js b/src/services/rest/Networkstemplates.js
index 961d5d8..7899842 100644
--- a/src/services/rest/Networkstemplates.js
+++ b/src/services/rest/Networkstemplates.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Nodes.js b/src/services/rest/Nodes.js
index bf2e387..4b3abad 100644
--- a/src/services/rest/Nodes.js
+++ b/src/services/rest/Nodes.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/ONOS-Apps.js b/src/services/rest/ONOS-Apps.js
index 8d4c104..e29c32d 100644
--- a/src/services/rest/ONOS-Apps.js
+++ b/src/services/rest/ONOS-Apps.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/ONOS-Services.js b/src/services/rest/ONOS-Services.js
index 19270e1..e14af8d 100644
--- a/src/services/rest/ONOS-Services.js
+++ b/src/services/rest/ONOS-Services.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Services.js b/src/services/rest/Services.js
index eda57e4..6419749 100644
--- a/src/services/rest/Services.js
+++ b/src/services/rest/Services.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Sites.js b/src/services/rest/Sites.js
index 818d741..d1a7ad4 100644
--- a/src/services/rest/Sites.js
+++ b/src/services/rest/Sites.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Slices.js b/src/services/rest/Slices.js
index 5a0da11..0b41ae3 100644
--- a/src/services/rest/Slices.js
+++ b/src/services/rest/Slices.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Slices_plus.js b/src/services/rest/Slices_plus.js
index 8213b11..5930531 100644
--- a/src/services/rest/Slices_plus.js
+++ b/src/services/rest/Slices_plus.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Subscribers.js b/src/services/rest/Subscribers.js
index 945e1e8..1f70ed1 100644
--- a/src/services/rest/Subscribers.js
+++ b/src/services/rest/Subscribers.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Tenant.js b/src/services/rest/Tenant.js
index 8feb102..9516de8 100644
--- a/src/services/rest/Tenant.js
+++ b/src/services/rest/Tenant.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Truckroll.js b/src/services/rest/Truckroll.js
index 7af9016..833d947 100644
--- a/src/services/rest/Truckroll.js
+++ b/src/services/rest/Truckroll.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Users.js b/src/services/rest/Users.js
index 8be0fdd..d6fb235 100644
--- a/src/services/rest/Users.js
+++ b/src/services/rest/Users.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/Utility.js b/src/services/rest/Utility.js
index a735c46..e06caa6 100644
--- a/src/services/rest/Utility.js
+++ b/src/services/rest/Utility.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/vOLT.js b/src/services/rest/vOLT.js
index 424c48d..9da07d0 100644
--- a/src/services/rest/vOLT.js
+++ b/src/services/rest/vOLT.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/rest/vSG.js b/src/services/rest/vSG.js
index 121b5a3..61cfdbd 100644
--- a/src/services/rest/vSG.js
+++ b/src/services/rest/vSG.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/services/service_graph.service.js b/src/services/service_graph.service.js
index 8a732a2..0456a08 100644
--- a/src/services/service_graph.service.js
+++ b/src/services/service_graph.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';
 
diff --git a/src/styles/animations.scss b/src/styles/animations.scss
index f565ff7..57c0ce6 100644
--- a/src/styles/animations.scss
+++ b/src/styles/animations.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 @keyframes slideInRight {
   from {
     transform: translate3d(100%, 0, 0);
diff --git a/src/styles/loader.scss b/src/styles/loader.scss
index 66297df..ee867b2 100644
--- a/src/styles/loader.scss
+++ b/src/styles/loader.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 .loader {
   font-size: 10px;
   margin: 0 auto;
diff --git a/src/styles/main.scss b/src/styles/main.scss
index 3dbdc24..1c3d24d 100644
--- a/src/styles/main.scss
+++ b/src/styles/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 @import './animations.scss';
 @import '../../bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_variables.scss';
 @import './loader.scss';
diff --git a/src/ui_components/dumbComponents/alert/alert.component.js b/src/ui_components/dumbComponents/alert/alert.component.js
index 948c851..23097d2 100644
--- a/src/ui_components/dumbComponents/alert/alert.component.js
+++ b/src/ui_components/dumbComponents/alert/alert.component.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/src/ui_components/dumbComponents/alert/alert.scss b/src/ui_components/dumbComponents/alert/alert.scss
index f031ba6..b3d409e 100644
--- a/src/ui_components/dumbComponents/alert/alert.scss
+++ b/src/ui_components/dumbComponents/alert/alert.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 @import '../../../styles/animations.scss';
 
 xos-alert {
diff --git a/src/ui_components/dumbComponents/field/field.component.js b/src/ui_components/dumbComponents/field/field.component.js
index 6b413bb..a204222 100644
--- a/src/ui_components/dumbComponents/field/field.component.js
+++ b/src/ui_components/dumbComponents/field/field.component.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/src/ui_components/dumbComponents/field/field.scss b/src/ui_components/dumbComponents/field/field.scss
index 1810ea0..183b668 100644
--- a/src/ui_components/dumbComponents/field/field.scss
+++ b/src/ui_components/dumbComponents/field/field.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 xos-field {
   display: block;
 
diff --git a/src/ui_components/dumbComponents/form/form.component.js b/src/ui_components/dumbComponents/form/form.component.js
index 185abc3..c417433 100644
--- a/src/ui_components/dumbComponents/form/form.component.js
+++ b/src/ui_components/dumbComponents/form/form.component.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/src/ui_components/dumbComponents/form/form.scss b/src/ui_components/dumbComponents/form/form.scss
index cf977af..9f8465a 100644
--- a/src/ui_components/dumbComponents/form/form.scss
+++ b/src/ui_components/dumbComponents/form/form.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 @import '../../../styles/animations.scss';
 @import '../../../../bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_variables.scss';
 
diff --git a/src/ui_components/dumbComponents/pagination/pagination.component.js b/src/ui_components/dumbComponents/pagination/pagination.component.js
index 0324751..15c5ab3 100644
--- a/src/ui_components/dumbComponents/pagination/pagination.component.js
+++ b/src/ui_components/dumbComponents/pagination/pagination.component.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/src/ui_components/dumbComponents/table/table.component.js b/src/ui_components/dumbComponents/table/table.component.js
index ed038fd..f677e2a 100644
--- a/src/ui_components/dumbComponents/table/table.component.js
+++ b/src/ui_components/dumbComponents/table/table.component.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/src/ui_components/dumbComponents/table/table.scss b/src/ui_components/dumbComponents/table/table.scss
index d9830d8..d19a74d 100644
--- a/src/ui_components/dumbComponents/table/table.scss
+++ b/src/ui_components/dumbComponents/table/table.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 @import '../../../styles/animations.scss';
 
 xos-table {
diff --git a/src/ui_components/dumbComponents/validation/validation.component.js b/src/ui_components/dumbComponents/validation/validation.component.js
index 42deb4e..9a8dd7b 100644
--- a/src/ui_components/dumbComponents/validation/validation.component.js
+++ b/src/ui_components/dumbComponents/validation/validation.component.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/src/ui_components/dumbComponents/validation/validation.scss b/src/ui_components/dumbComponents/validation/validation.scss
index 588853f..63c7393 100644
--- a/src/ui_components/dumbComponents/validation/validation.scss
+++ b/src/ui_components/dumbComponents/validation/validation.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 @import '../../../styles/animations.scss';
 @import '../../../../bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_variables.scss';
 
diff --git a/src/ui_components/smartComponents/smartPie/smartPie.component.js b/src/ui_components/smartComponents/smartPie/smartPie.component.js
index 2276b5d..73aba05 100644
--- a/src/ui_components/smartComponents/smartPie/smartPie.component.js
+++ b/src/ui_components/smartComponents/smartPie/smartPie.component.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/src/ui_components/smartComponents/smartTable/smartTable.component.js b/src/ui_components/smartComponents/smartTable/smartTable.component.js
index d65884a..3c9bf7e 100644
--- a/src/ui_components/smartComponents/smartTable/smartTable.component.js
+++ b/src/ui_components/smartComponents/smartTable/smartTable.component.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/src/ui_components/smartComponents/smartTable/smartTable.scss b/src/ui_components/smartComponents/smartTable/smartTable.scss
index fc63fdf..f96c2e7 100644
--- a/src/ui_components/smartComponents/smartTable/smartTable.scss
+++ b/src/ui_components/smartComponents/smartTable/smartTable.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 xos-smart-table{
   
 }
\ No newline at end of file
diff --git a/src/ui_components/ui-components.module.js b/src/ui_components/ui-components.module.js
index 1b02ab3..1a1bb7c 100644
--- a/src/ui_components/ui-components.module.js
+++ b/src/ui_components/ui-components.module.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/src/xosHelpers.module.js b/src/xosHelpers.module.js
index 25c8354..7b5f9df 100644
--- a/src/xosHelpers.module.js
+++ b/src/xosHelpers.module.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
 (function() {
   'use strict';