diff --git a/src/app/core/alert/alert.ts b/src/app/core/alert/alert.ts
index 037abb1..162804a 100644
--- a/src/app/core/alert/alert.ts
+++ b/src/app/core/alert/alert.ts
@@ -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.
+ */
+
+
 export interface IXosAlertConfig {
   type: string;
   closeBtn?: boolean;
diff --git a/src/app/core/field/field.scss b/src/app/core/field/field.scss
index d15f359..7bdb659 100644
--- a/src/app/core/field/field.scss
+++ b/src/app/core/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.
+ */
+
+
 @import "../../style/vars";
 
 span.required {
diff --git a/src/app/core/field/field.ts b/src/app/core/field/field.ts
index f05a8e4..89fdd76 100644
--- a/src/app/core/field/field.ts
+++ b/src/app/core/field/field.ts
@@ -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 './field.scss';
 import {IXosConfigHelpersService} from '../services/helpers/config.helpers';
 import {IXosFormHelpersService} from '../form/form-helpers';
diff --git a/src/app/core/footer/footer.spec.ts b/src/app/core/footer/footer.spec.ts
index 4193bc9..28291aa 100644
--- a/src/app/core/footer/footer.spec.ts
+++ b/src/app/core/footer/footer.spec.ts
@@ -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.
+ */
+
+
 /// <reference path="../../../../typings/index.d.ts" />
 
 import * as angular from 'angular';
diff --git a/src/app/core/footer/footer.ts b/src/app/core/footer/footer.ts
index e5fbe3f..dcc4c88 100644
--- a/src/app/core/footer/footer.ts
+++ b/src/app/core/footer/footer.ts
@@ -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 {IXosStyleConfig} from '../../../index';
 class FooterCtrl {
 
diff --git a/src/app/core/form/form-helpers.spec.ts b/src/app/core/form/form-helpers.spec.ts
index 52a9769..1dfd0d6 100644
--- a/src/app/core/form/form-helpers.spec.ts
+++ b/src/app/core/form/form-helpers.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import {IXosFormHelpersService, XosFormHelpers} from './form-helpers';
diff --git a/src/app/core/form/form-helpers.ts b/src/app/core/form/form-helpers.ts
index 3ae3fe6..149b3c7 100644
--- a/src/app/core/form/form-helpers.ts
+++ b/src/app/core/form/form-helpers.ts
@@ -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.
+ */
+
+
 export interface IXosFormHelpersService {
   _getFieldFormat(value: any): string;
 }
diff --git a/src/app/core/form/form.spec.ts b/src/app/core/form/form.spec.ts
index 6b2a196..b010907 100644
--- a/src/app/core/form/form.spec.ts
+++ b/src/app/core/form/form.spec.ts
@@ -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 * as angular from 'angular';
 import * as $ from 'jquery';
 import 'angular-mocks';
diff --git a/src/app/core/form/form.ts b/src/app/core/form/form.ts
index 273e9b1..8faa2bd 100644
--- a/src/app/core/form/form.ts
+++ b/src/app/core/form/form.ts
@@ -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 clean this mess
 
 import * as _ from 'lodash';
diff --git a/src/app/core/header/header.scss b/src/app/core/header/header.scss
index ca97ae2..30347f8 100644
--- a/src/app/core/header/header.scss
+++ b/src/app/core/header/header.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.
+ */
+
+
 #toast-container [toast]:not(:first-child) {
   margin-top: 10px !important;
 }
diff --git a/src/app/core/header/header.spec.ts b/src/app/core/header/header.spec.ts
index 73ba587..13f8b5b 100644
--- a/src/app/core/header/header.spec.ts
+++ b/src/app/core/header/header.spec.ts
@@ -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.
+ */
+
+
 /// <reference path="../../../../typings/index.d.ts" />
 
 import * as $ from 'jquery';
diff --git a/src/app/core/header/header.ts b/src/app/core/header/header.ts
index 268fdcd..a89199d 100644
--- a/src/app/core/header/header.ts
+++ b/src/app/core/header/header.ts
@@ -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 './header.scss';
 import {IWSEvent} from '../../datasources/websocket/global';
 import {IStoreService} from '../../datasources/stores/synchronizer.store';
diff --git a/src/app/core/index.ts b/src/app/core/index.ts
index 33db0ae..6c70d3a 100644
--- a/src/app/core/index.ts
+++ b/src/app/core/index.ts
@@ -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 {xosHeader} from './header/header';
 import {xosFooter} from './footer/footer';
 import {xosNav} from './nav/nav';
diff --git a/src/app/core/key-binding/key-binding-panel.scss b/src/app/core/key-binding/key-binding-panel.scss
index 0fde571..556f6dd 100644
--- a/src/app/core/key-binding/key-binding-panel.scss
+++ b/src/app/core/key-binding/key-binding-panel.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 './../../style/vars.scss';
 
 xos-key-binding-panel {
diff --git a/src/app/core/key-binding/key-binding-panel.ts b/src/app/core/key-binding/key-binding-panel.ts
index 4ee31eb..af3e810 100644
--- a/src/app/core/key-binding/key-binding-panel.ts
+++ b/src/app/core/key-binding/key-binding-panel.ts
@@ -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 {IXosKeyboardShortcutService, IXosKeyboardShortcutMap} from '../services/keyboard-shortcut';
 import './key-binding-panel.scss';
 
diff --git a/src/app/core/link-wrapper/link-wrapper.ts b/src/app/core/link-wrapper/link-wrapper.ts
index 0f03ecb..f08c9d6 100644
--- a/src/app/core/link-wrapper/link-wrapper.ts
+++ b/src/app/core/link-wrapper/link-wrapper.ts
@@ -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 IDirective = angular.IDirective;
 export function xosLinkWrapper(): IDirective {
   return {
diff --git a/src/app/core/loader/loader.spec.ts b/src/app/core/loader/loader.spec.ts
index d4b88dd..44fc60f 100644
--- a/src/app/core/loader/loader.spec.ts
+++ b/src/app/core/loader/loader.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import {xosLoader} from './loader';
diff --git a/src/app/core/loader/loader.ts b/src/app/core/loader/loader.ts
index 23acf6a..b93aebf 100644
--- a/src/app/core/loader/loader.ts
+++ b/src/app/core/loader/loader.ts
@@ -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 {IXosModelDiscovererService} from '../../datasources/helpers/model-discoverer.service';
 import {IXosOnboarder} from '../../extender/services/onboard.service';
 import {IXosAuthService} from '../../datasources/rest/auth.rest';
diff --git a/src/app/core/login/login.scss b/src/app/core/login/login.scss
index bef1977..4dc155e 100644
--- a/src/app/core/login/login.scss
+++ b/src/app/core/login/login.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-login {
   .content {
     background-repeat: no-repeat;
diff --git a/src/app/core/login/login.ts b/src/app/core/login/login.ts
index d47f265..586f4d0 100644
--- a/src/app/core/login/login.ts
+++ b/src/app/core/login/login.ts
@@ -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 {AuthService} from '../../datasources/rest/auth.rest';
 import './login.scss';
 
diff --git a/src/app/core/nav/nav.scss b/src/app/core/nav/nav.scss
index 9ecddfc..4897dec 100644
--- a/src/app/core/nav/nav.scss
+++ b/src/app/core/nav/nav.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-nav {
   .navigation {
     max-height: 100%;
diff --git a/src/app/core/nav/nav.spec.ts b/src/app/core/nav/nav.spec.ts
index 1d41f4b..407e69e 100644
--- a/src/app/core/nav/nav.spec.ts
+++ b/src/app/core/nav/nav.spec.ts
@@ -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.
+ */
+
+
 /// <reference path="../../../../typings/index.d.ts" />
 
 import * as $ from 'jquery';
diff --git a/src/app/core/nav/nav.ts b/src/app/core/nav/nav.ts
index 8c68457..8f1f83e 100644
--- a/src/app/core/nav/nav.ts
+++ b/src/app/core/nav/nav.ts
@@ -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 './nav.scss';
 import {IXosNavigationService, IXosNavigationRoute} from '../services/navigation';
 import {IXosAuthService} from '../../datasources/rest/auth.rest';
diff --git a/src/app/core/pagination/pagination.filter.ts b/src/app/core/pagination/pagination.filter.ts
index 2a561c9..4cdf77c 100644
--- a/src/app/core/pagination/pagination.filter.ts
+++ b/src/app/core/pagination/pagination.filter.ts
@@ -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.
+ */
+
+
 export function PaginationFilter() {
   return function(input: any[], start: string) {
     if (!input || !angular.isArray(input)) {
diff --git a/src/app/core/pagination/pagination.ts b/src/app/core/pagination/pagination.ts
index 997123c..604f995 100644
--- a/src/app/core/pagination/pagination.ts
+++ b/src/app/core/pagination/pagination.ts
@@ -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.
+ */
+
+
 class XosPaginationCtrl {
   $inject = ['$onInit', '$scope'];
 
diff --git a/src/app/core/routes.ts b/src/app/core/routes.ts
index 7bacb85..a371bfb 100644
--- a/src/app/core/routes.ts
+++ b/src/app/core/routes.ts
@@ -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.
+ */
+
+
 export default routesConfig;
 
 /** @ngInject */
diff --git a/src/app/core/services/helpers/component-injector.helpers.spec.ts b/src/app/core/services/helpers/component-injector.helpers.spec.ts
index cb6ee6d..edec97c 100644
--- a/src/app/core/services/helpers/component-injector.helpers.spec.ts
+++ b/src/app/core/services/helpers/component-injector.helpers.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-ui-router';
diff --git a/src/app/core/services/helpers/component-injector.helpers.ts b/src/app/core/services/helpers/component-injector.helpers.ts
index 9fc475b..ff32f0d 100644
--- a/src/app/core/services/helpers/component-injector.helpers.ts
+++ b/src/app/core/services/helpers/component-injector.helpers.ts
@@ -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 * as $ from 'jquery';
 import * as _ from 'lodash';
 
diff --git a/src/app/core/services/helpers/config.helpers.spec.ts b/src/app/core/services/helpers/config.helpers.spec.ts
index 5b2ae07..00de431 100644
--- a/src/app/core/services/helpers/config.helpers.spec.ts
+++ b/src/app/core/services/helpers/config.helpers.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-ui-router';
diff --git a/src/app/core/services/helpers/config.helpers.ts b/src/app/core/services/helpers/config.helpers.ts
index 5dbd74e..7cd8991 100644
--- a/src/app/core/services/helpers/config.helpers.ts
+++ b/src/app/core/services/helpers/config.helpers.ts
@@ -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 * as _ from 'lodash';
 import * as pluralize from 'pluralize';
 import {IXosTableColumn, IXosTableCfg} from '../../table/table';
diff --git a/src/app/core/services/helpers/debounce.helper.spec.ts b/src/app/core/services/helpers/debounce.helper.spec.ts
index e04b11e..1cc20c8 100644
--- a/src/app/core/services/helpers/debounce.helper.spec.ts
+++ b/src/app/core/services/helpers/debounce.helper.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-ui-router';
diff --git a/src/app/core/services/helpers/debounce.helper.ts b/src/app/core/services/helpers/debounce.helper.ts
index 89f62ee..e8e479d 100644
--- a/src/app/core/services/helpers/debounce.helper.ts
+++ b/src/app/core/services/helpers/debounce.helper.ts
@@ -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.
+ */
+
+
 export interface IXosDebouncer {
   debounce(func: any, wait: number, context: any, immediate?: boolean): any;
 }
diff --git a/src/app/core/services/keyboard-shortcut.spec.ts b/src/app/core/services/keyboard-shortcut.spec.ts
index deb04b7..a4a15dd 100644
--- a/src/app/core/services/keyboard-shortcut.spec.ts
+++ b/src/app/core/services/keyboard-shortcut.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import {IXosKeyboardShortcutService, XosKeyboardShortcut, IXosKeyboardShortcutBinding} from './keyboard-shortcut';
diff --git a/src/app/core/services/keyboard-shortcut.ts b/src/app/core/services/keyboard-shortcut.ts
index 1907b0d..72a59a5 100644
--- a/src/app/core/services/keyboard-shortcut.ts
+++ b/src/app/core/services/keyboard-shortcut.ts
@@ -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 * as $ from 'jquery';
 import * as _ from 'lodash';
 import {IXosSidePanelService} from '../side-panel/side-panel.service';
diff --git a/src/app/core/services/navigation.spec.ts b/src/app/core/services/navigation.spec.ts
index 50af9d9..bc27772 100644
--- a/src/app/core/services/navigation.spec.ts
+++ b/src/app/core/services/navigation.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-ui-router';
diff --git a/src/app/core/services/navigation.ts b/src/app/core/services/navigation.ts
index 6fb6883..e7fa4ed 100644
--- a/src/app/core/services/navigation.ts
+++ b/src/app/core/services/navigation.ts
@@ -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.
+ */
+
+
 /// <reference path="../../../../typings/index.d.ts" />
 
 import * as _ from 'lodash';
diff --git a/src/app/core/services/page-title.spec.ts b/src/app/core/services/page-title.spec.ts
index 9e6f519..6825c9e 100644
--- a/src/app/core/services/page-title.spec.ts
+++ b/src/app/core/services/page-title.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-ui-router';
diff --git a/src/app/core/services/page-title.ts b/src/app/core/services/page-title.ts
index e3b8d42..62f578f 100644
--- a/src/app/core/services/page-title.ts
+++ b/src/app/core/services/page-title.ts
@@ -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 {IXosStyleConfig} from '../../../index';
 export interface IXosPageTitleService {
   get(): string;
diff --git a/src/app/core/services/runtime-states.spec.ts b/src/app/core/services/runtime-states.spec.ts
index 8b9015d..f90a0e1 100644
--- a/src/app/core/services/runtime-states.spec.ts
+++ b/src/app/core/services/runtime-states.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-ui-router';
diff --git a/src/app/core/services/runtime-states.ts b/src/app/core/services/runtime-states.ts
index 17b3052..84d5db3 100644
--- a/src/app/core/services/runtime-states.ts
+++ b/src/app/core/services/runtime-states.ts
@@ -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 {IXosModelRelation} from '../../views/crud/crud';
 export interface IXosState extends angular.ui.IState {
   data: {
diff --git a/src/app/core/side-panel/side-panel.scss b/src/app/core/side-panel/side-panel.scss
index 13538fe..56f7190 100644
--- a/src/app/core/side-panel/side-panel.scss
+++ b/src/app/core/side-panel/side-panel.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 './../../style/vars.scss';
 
 $side-panel-width: 400px;
diff --git a/src/app/core/side-panel/side-panel.service.ts b/src/app/core/side-panel/side-panel.service.ts
index 4858f63..fc07332 100644
--- a/src/app/core/side-panel/side-panel.service.ts
+++ b/src/app/core/side-panel/side-panel.service.ts
@@ -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 * as $ from 'jquery';
 import {IXosComponentInjectorService} from '../services/helpers/component-injector.helpers';
 
diff --git a/src/app/core/side-panel/side-panel.ts b/src/app/core/side-panel/side-panel.ts
index 4d400f4..9b2b78f 100644
--- a/src/app/core/side-panel/side-panel.ts
+++ b/src/app/core/side-panel/side-panel.ts
@@ -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 './side-panel.scss';
 import {IXosSidePanelService} from './side-panel.service';
 
diff --git a/src/app/core/table/array-to-list.filter.spec.ts b/src/app/core/table/array-to-list.filter.spec.ts
index 7e1e9da..d21b7bb 100644
--- a/src/app/core/table/array-to-list.filter.spec.ts
+++ b/src/app/core/table/array-to-list.filter.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import {ArrayToListFilter} from './array-to-list.filter';
diff --git a/src/app/core/table/array-to-list.filter.ts b/src/app/core/table/array-to-list.filter.ts
index ff5ab38..475c625 100644
--- a/src/app/core/table/array-to-list.filter.ts
+++ b/src/app/core/table/array-to-list.filter.ts
@@ -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.
+ */
+
+
 export function ArrayToListFilter() {
   return (input: any) => {
     if (!angular.isArray(input)) {
diff --git a/src/app/core/table/table.scss b/src/app/core/table/table.scss
index 9922026..844cf3b 100644
--- a/src/app/core/table/table.scss
+++ b/src/app/core/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 './../../style/vars.scss';
 @import '../../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/variables';
 
diff --git a/src/app/core/table/table.spec.ts b/src/app/core/table/table.spec.ts
index c2d8f2f..aa1c62b 100644
--- a/src/app/core/table/table.spec.ts
+++ b/src/app/core/table/table.spec.ts
@@ -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 * as angular from 'angular';
 import * as $ from 'jquery';
 import 'angular-mocks';
diff --git a/src/app/core/table/table.ts b/src/app/core/table/table.ts
index 23960e1..46a5ca5 100644
--- a/src/app/core/table/table.ts
+++ b/src/app/core/table/table.ts
@@ -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 fininsh to import all methods from https://github.com/opencord/ng-xos-lib/blob/master/src/ui_components/dumbComponents/table/table.component.js
 // TODO import tests
 
diff --git a/src/app/core/validation/validation.scss b/src/app/core/validation/validation.scss
index fea42c3..301911e 100644
--- a/src/app/core/validation/validation.scss
+++ b/src/app/core/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.
+ */
+
+
 xos-validation {
   display: block;
 }
diff --git a/src/app/core/validation/validation.ts b/src/app/core/validation/validation.ts
index 5a27045..a1f1292 100644
--- a/src/app/core/validation/validation.ts
+++ b/src/app/core/validation/validation.ts
@@ -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 './validation.scss';
 
 class ValidationCtrl {
diff --git a/src/app/datasources/helpers/model-discoverer.service.ts b/src/app/datasources/helpers/model-discoverer.service.ts
index 37ecc93..bab0873 100644
--- a/src/app/datasources/helpers/model-discoverer.service.ts
+++ b/src/app/datasources/helpers/model-discoverer.service.ts
@@ -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 test me hard!!!
 
 import * as _ from 'lodash';
diff --git a/src/app/datasources/helpers/model.discoverer.service.spec.ts b/src/app/datasources/helpers/model.discoverer.service.spec.ts
index b72b311..94a98e6 100644
--- a/src/app/datasources/helpers/model.discoverer.service.spec.ts
+++ b/src/app/datasources/helpers/model.discoverer.service.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-ui-router';
diff --git a/src/app/datasources/helpers/search.service.ts b/src/app/datasources/helpers/search.service.ts
index 2a77ab6..66748b1 100644
--- a/src/app/datasources/helpers/search.service.ts
+++ b/src/app/datasources/helpers/search.service.ts
@@ -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 * as _ from 'lodash';
 import {IXosNavigationService} from '../../core/services/navigation';
 import {IXosModelStoreService} from '../stores/model.store';
diff --git a/src/app/datasources/helpers/store.helpers.spec.ts b/src/app/datasources/helpers/store.helpers.spec.ts
index 9f4370c..5d0a584 100644
--- a/src/app/datasources/helpers/store.helpers.spec.ts
+++ b/src/app/datasources/helpers/store.helpers.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-ui-router';
diff --git a/src/app/datasources/helpers/store.helpers.ts b/src/app/datasources/helpers/store.helpers.ts
index c26e235..83c3b9a 100644
--- a/src/app/datasources/helpers/store.helpers.ts
+++ b/src/app/datasources/helpers/store.helpers.ts
@@ -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 {BehaviorSubject} from 'rxjs';
 import * as _ from 'lodash';
 import * as pluralize from 'pluralize';
diff --git a/src/app/datasources/index.ts b/src/app/datasources/index.ts
index 80d348a..e5adcab 100644
--- a/src/app/datasources/index.ts
+++ b/src/app/datasources/index.ts
@@ -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 {ModelRest} from './rest/model.rest';
 import {AuthService} from './rest/auth.rest';
 import {WebSocketEvent} from './websocket/global';
diff --git a/src/app/datasources/rest/auth.rest.spec.ts b/src/app/datasources/rest/auth.rest.spec.ts
index 7a406db..8ba77d3 100644
--- a/src/app/datasources/rest/auth.rest.spec.ts
+++ b/src/app/datasources/rest/auth.rest.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-resource';
diff --git a/src/app/datasources/rest/auth.rest.ts b/src/app/datasources/rest/auth.rest.ts
index 82f71b6..2bc2bbc 100644
--- a/src/app/datasources/rest/auth.rest.ts
+++ b/src/app/datasources/rest/auth.rest.ts
@@ -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 IHttpPromiseCallbackArg = angular.IHttpPromiseCallbackArg;
 import {IXosAppConfig} from '../../../index';
 export interface IAuthRequestData {
diff --git a/src/app/datasources/rest/model.rest.spec.ts b/src/app/datasources/rest/model.rest.spec.ts
index 9d5b4f3..d545ac2 100644
--- a/src/app/datasources/rest/model.rest.spec.ts
+++ b/src/app/datasources/rest/model.rest.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-resource';
diff --git a/src/app/datasources/rest/model.rest.ts b/src/app/datasources/rest/model.rest.ts
index 4aa862c..6c72d99 100644
--- a/src/app/datasources/rest/model.rest.ts
+++ b/src/app/datasources/rest/model.rest.ts
@@ -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 {IXosAppConfig} from '../../../index';
 export interface IXosResourceService {
   getResource(url: string): ng.resource.IResourceClass<any>;
diff --git a/src/app/datasources/rest/modeldefs.rest.spec.ts b/src/app/datasources/rest/modeldefs.rest.spec.ts
index 5b54fb8..6688e52 100644
--- a/src/app/datasources/rest/modeldefs.rest.spec.ts
+++ b/src/app/datasources/rest/modeldefs.rest.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-resource';
diff --git a/src/app/datasources/rest/modeldefs.rest.ts b/src/app/datasources/rest/modeldefs.rest.ts
index 0af00ff..981cac2 100644
--- a/src/app/datasources/rest/modeldefs.rest.ts
+++ b/src/app/datasources/rest/modeldefs.rest.ts
@@ -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 {IXosModelDefsField} from '../../core/services/helpers/config.helpers';
 import {IXosAppConfig} from '../../../index';
 
diff --git a/src/app/datasources/stores/model.store.spec.ts b/src/app/datasources/stores/model.store.spec.ts
index 846ef84..4e94495 100644
--- a/src/app/datasources/stores/model.store.spec.ts
+++ b/src/app/datasources/stores/model.store.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-resource';
diff --git a/src/app/datasources/stores/model.store.ts b/src/app/datasources/stores/model.store.ts
index 10da16e..7ca0ae1 100644
--- a/src/app/datasources/stores/model.store.ts
+++ b/src/app/datasources/stores/model.store.ts
@@ -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.
+ */
+
+
 /// <reference path="../../../../typings/index.d.ts"/>
 import * as _ from 'lodash';
 import {BehaviorSubject, Observable} from 'rxjs/Rx';
diff --git a/src/app/datasources/stores/synchronizer.store.ts b/src/app/datasources/stores/synchronizer.store.ts
index aa25cc0..635e6db 100644
--- a/src/app/datasources/stores/synchronizer.store.ts
+++ b/src/app/datasources/stores/synchronizer.store.ts
@@ -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.
+ */
+
+
 /// <reference path="../../../../typings/index.d.ts"/>
 
 import {Subject, Observable} from 'rxjs/Rx';
diff --git a/src/app/datasources/websocket/global.ts b/src/app/datasources/websocket/global.ts
index 7e5dad7..3b07eca 100644
--- a/src/app/datasources/websocket/global.ts
+++ b/src/app/datasources/websocket/global.ts
@@ -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 * as io from 'socket.io-client';
 import * as _ from 'lodash';
 import {Subject, Observable} from 'rxjs/Rx';
diff --git a/src/app/extender/index.ts b/src/app/extender/index.ts
index 622491a..f6e3138 100644
--- a/src/app/extender/index.ts
+++ b/src/app/extender/index.ts
@@ -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 {xosDataSources} from '../datasources/index';
 export const xosExtender = 'xosExtender';
 
diff --git a/src/app/extender/services/onboard.service.spec.ts b/src/app/extender/services/onboard.service.spec.ts
index 02237cc..3601e5e 100644
--- a/src/app/extender/services/onboard.service.spec.ts
+++ b/src/app/extender/services/onboard.service.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-resource';
diff --git a/src/app/extender/services/onboard.service.ts b/src/app/extender/services/onboard.service.ts
index 206a968..03868c1 100644
--- a/src/app/extender/services/onboard.service.ts
+++ b/src/app/extender/services/onboard.service.ts
@@ -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 {IWSEventService} from '../../datasources/websocket/global';
 import {IXosModelStoreService} from '../../datasources/stores/model.store';
 import * as _ from 'lodash';
diff --git a/src/app/main.spec.ts b/src/app/main.spec.ts
index f1d66fe..907018f 100644
--- a/src/app/main.spec.ts
+++ b/src/app/main.spec.ts
@@ -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.
+ */
+
+
 /// <reference path="../../typings/index.d.ts" />
 
 import * as angular from 'angular';
diff --git a/src/app/main.ts b/src/app/main.ts
index 11dd35a..103b8f1 100644
--- a/src/app/main.ts
+++ b/src/app/main.ts
@@ -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.
+ */
+
+
 export const main: angular.IComponentOptions = {
   template: require('./main.html')
 };
diff --git a/src/app/service-graph/components/coarse/coarse.component.scss b/src/app/service-graph/components/coarse/coarse.component.scss
index 1cf8f3c..fabfb91 100644
--- a/src/app/service-graph/components/coarse/coarse.component.scss
+++ b/src/app/service-graph/components/coarse/coarse.component.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 './../../../style/vars.scss';
 @import '../../../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/variables';
 
diff --git a/src/app/service-graph/components/coarse/coarse.component.ts b/src/app/service-graph/components/coarse/coarse.component.ts
index 501c543..c8e2361 100644
--- a/src/app/service-graph/components/coarse/coarse.component.ts
+++ b/src/app/service-graph/components/coarse/coarse.component.ts
@@ -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 './coarse.component.scss';
 import * as d3 from 'd3';
 import * as $ from 'jquery';
diff --git a/src/app/service-graph/components/fine-grained/fine-grained.component.scss b/src/app/service-graph/components/fine-grained/fine-grained.component.scss
index 37605f9..29ea116 100644
--- a/src/app/service-graph/components/fine-grained/fine-grained.component.scss
+++ b/src/app/service-graph/components/fine-grained/fine-grained.component.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 './../../../style/vars.scss';
 @import '../../../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/variables';
 
diff --git a/src/app/service-graph/components/fine-grained/fine-grained.component.ts b/src/app/service-graph/components/fine-grained/fine-grained.component.ts
index 6d57aad..3b51a02 100644
--- a/src/app/service-graph/components/fine-grained/fine-grained.component.ts
+++ b/src/app/service-graph/components/fine-grained/fine-grained.component.ts
@@ -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 './fine-grained.component.scss';
 import * as d3 from 'd3';
 import * as $ from 'jquery';
diff --git a/src/app/service-graph/graph.config.ts b/src/app/service-graph/graph.config.ts
index 4626c6d..abfd415 100644
--- a/src/app/service-graph/graph.config.ts
+++ b/src/app/service-graph/graph.config.ts
@@ -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.
+ */
+
+
 interface ISvgMarker {
   id: string;
   width: number;
diff --git a/src/app/service-graph/index.ts b/src/app/service-graph/index.ts
index 0786592..2acb259 100644
--- a/src/app/service-graph/index.ts
+++ b/src/app/service-graph/index.ts
@@ -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 {xosDataSources} from '../datasources/index';
 import {XosServiceGraphStore} from './services/service-graph.store';
 import {xosCore} from '../core/index';
diff --git a/src/app/service-graph/interfaces.ts b/src/app/service-graph/interfaces.ts
index a7e41f1..af55c54 100644
--- a/src/app/service-graph/interfaces.ts
+++ b/src/app/service-graph/interfaces.ts
@@ -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.
+ */
+
+
 interface Id3Element {
   d3Class?: string;
   d3Id?: string;
diff --git a/src/app/service-graph/services/d3-helpers/graph.helpers.ts b/src/app/service-graph/services/d3-helpers/graph.helpers.ts
index 4bf4cb8..15988cd 100644
--- a/src/app/service-graph/services/d3-helpers/graph.helpers.ts
+++ b/src/app/service-graph/services/d3-helpers/graph.helpers.ts
@@ -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 * as d3 from 'd3';
 
 export interface Id3BBox {
diff --git a/src/app/service-graph/services/graph.extender.spec.ts b/src/app/service-graph/services/graph.extender.spec.ts
index 28ab96e..f01d57c 100644
--- a/src/app/service-graph/services/graph.extender.spec.ts
+++ b/src/app/service-graph/services/graph.extender.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-ui-router';
diff --git a/src/app/service-graph/services/graph.extender.ts b/src/app/service-graph/services/graph.extender.ts
index ba9218f..a601e87 100644
--- a/src/app/service-graph/services/graph.extender.ts
+++ b/src/app/service-graph/services/graph.extender.ts
@@ -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 {IXosServiceGraph} from '../interfaces';
 
 export interface IXosServiceGraphReducers {
diff --git a/src/app/service-graph/services/service-graph.store.spec.ts b/src/app/service-graph/services/service-graph.store.spec.ts
index 7ddc393..91c7dd0 100644
--- a/src/app/service-graph/services/service-graph.store.spec.ts
+++ b/src/app/service-graph/services/service-graph.store.spec.ts
@@ -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 * as angular from 'angular';
 import 'angular-mocks';
 import 'angular-ui-router';
diff --git a/src/app/service-graph/services/service-graph.store.ts b/src/app/service-graph/services/service-graph.store.ts
index d784958..402bea0 100644
--- a/src/app/service-graph/services/service-graph.store.ts
+++ b/src/app/service-graph/services/service-graph.store.ts
@@ -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 * as _ from 'lodash';
 import {Observable, BehaviorSubject, Subscription} from 'rxjs';
 import {IXosModelStoreService} from '../../datasources/stores/model.store';
diff --git a/src/app/service-graph/services/service-instance.graph.store.ts b/src/app/service-graph/services/service-instance.graph.store.ts
index a6ab41e..b8220b9 100644
--- a/src/app/service-graph/services/service-instance.graph.store.ts
+++ b/src/app/service-graph/services/service-instance.graph.store.ts
@@ -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 * as _ from 'lodash';
 import {Observable, BehaviorSubject, Subscription} from 'rxjs';
 import {
diff --git a/src/app/style/imports/loader.scss b/src/app/style/imports/loader.scss
index 4c1a751..a04b17f 100644
--- a/src/app/style/imports/loader.scss
+++ b/src/app/style/imports/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.
+ */
+
+
 @import '../vars';
 
 .loader,
diff --git a/src/app/style/pe-icons/helper.css b/src/app/style/pe-icons/helper.css
index db84f4e..65cf5c7 100644
--- a/src/app/style/pe-icons/helper.css
+++ b/src/app/style/pe-icons/helper.css
@@ -1,4 +1,22 @@
 
+/*
+ * 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.
+ */
+
+
+
 /* HELPER CLASS 
  * -------------------------- */
 
diff --git a/src/app/style/pe-icons/pe-icon-7-stroke.css b/src/app/style/pe-icons/pe-icon-7-stroke.css
index 1c6c29f..e192491 100644
--- a/src/app/style/pe-icons/pe-icon-7-stroke.css
+++ b/src/app/style/pe-icons/pe-icon-7-stroke.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.
+ */
+
+
 @font-face {
 	font-family: 'Pe-icon-7-stroke';
 	src:url('./Pe-icon-7-stroke.eot?d7yf1v');
diff --git a/src/app/style/stroke-icons/style.css b/src/app/style/stroke-icons/style.css
index bfe359b..5fa6c72 100644
--- a/src/app/style/stroke-icons/style.css
+++ b/src/app/style/stroke-icons/style.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.
+ */
+
+
 @font-face {
 	font-family: 'stroke';
 	src:url('stroke.eot?-yg5sl9');
diff --git a/src/app/style/style.css b/src/app/style/style.css
index df4f58e..91a2226 100644
--- a/src/app/style/style.css
+++ b/src/app/style/style.css
@@ -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.
+ */
+
+
 .btn:active,.btn.active{box-shadow:none}.btn{color:inherit;background-color:transparent}.buttons-margin .btn{margin-bottom:5px}.btn-default{border-color:#585d6e}.btn.btn-w-sm{min-width:80px}.btn.btn-w-md{min-width:120px}.btn.btn-w-lg{min-width:160px}.btn.btn-rounded{border-radius:50px}.btn.btn-squared{border-radius:0}.btn-accent{color:#949ba2;background-color:transparent;border-color:#f6a821}.btn-accent:focus,.btn-accent.focus{color:#ffffff;background-color:rgba(246,168,33,0.1);border-color:#f6a821;outline:0;box-shadow:none}.btn-accent:hover{color:#ffffff;background-color:rgba(246,168,33,0.1);border-color:#f6a821}.btn-accent:active,.btn-accent.active,.open>.dropdown-toggle.btn-accent{color:#ffffff;background-color:rgba(246,168,33,0.1);border-color:#f6a821}.btn-accent:active:hover,.btn-accent.active:hover,.open>.dropdown-toggle.btn-accent:hover,.btn-accent:active:focus,.btn-accent.active:focus,.open>.dropdown-toggle.btn-accent:focus,.btn-accent:active.focus,.btn-accent.active.focus,.open>.dropdown-toggle.btn-accent.focus{color:#ffffff;background-color:rgba(246,168,33,0.1);border-color:#f8bb52;outline:0;box-shadow:none}.btn-accent:active,.btn-accent.active,.open>.dropdown-toggle.btn-accent{background-image:none}.btn-accent.disabled:hover,.btn-accent[disabled]:hover,fieldset[disabled] .btn-accent:hover,.btn-accent.disabled:focus,.btn-accent[disabled]:focus,fieldset[disabled] .btn-accent:focus,.btn-accent.disabled.focus,.btn-accent[disabled].focus,fieldset[disabled] .btn-accent.focus{background-color:rgba(246,168,33,0.1);border-color:#f6a821}.btn-accent .badge{color:transparent;background-color:#949ba2}.btn-default{color:#949ba2;background-color:transparent;border-color:#616779}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:rgba(97,103,121,0.1);border-color:#616779;outline:0;box-shadow:none}.btn-default:hover{color:#ffffff;background-color:rgba(97,103,121,0.1);border-color:#616779}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:rgba(97,103,121,0.1);border-color:#616779}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:rgba(97,103,121,0.1);border-color:#798094;outline:0;box-shadow:none}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:rgba(97,103,121,0.1);border-color:#616779}.btn-default .badge{color:transparent;background-color:#949ba2}.btn-primary{color:#949ba2;background-color:transparent;border-color:#0F83C9}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:rgba(15,131,201,0.1);border-color:#0F83C9;outline:0;box-shadow:none}.btn-primary:hover{color:#ffffff;background-color:rgba(15,131,201,0.1);border-color:#0F83C9}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:rgba(15,131,201,0.1);border-color:#0F83C9}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:rgba(15,131,201,0.1);border-color:#1d9fee;outline:0;box-shadow:none}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:rgba(15,131,201,0.1);border-color:#0F83C9}.btn-primary .badge{color:transparent;background-color:#949ba2}.btn-success{color:#949ba2;background-color:transparent;border-color:#1bbf89}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:rgba(27,191,137,0.1);border-color:#1bbf89;outline:0;box-shadow:none}.btn-success:hover{color:#ffffff;background-color:rgba(27,191,137,0.1);border-color:#1bbf89}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:rgba(27,191,137,0.1);border-color:#1bbf89}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:rgba(27,191,137,0.1);border-color:#2ce1a5;outline:0;box-shadow:none}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:rgba(27,191,137,0.1);border-color:#1bbf89}.btn-success .badge{color:transparent;background-color:#949ba2}.btn-info{color:#949ba2;background-color:transparent;border-color:#56C0E0}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:rgba(86,192,224,0.1);border-color:#56C0E0;outline:0;box-shadow:none}.btn-info:hover{color:#ffffff;background-color:rgba(86,192,224,0.1);border-color:#56C0E0}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:rgba(86,192,224,0.1);border-color:#56C0E0}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:rgba(86,192,224,0.1);border-color:#81d0e8;outline:0;box-shadow:none}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:rgba(86,192,224,0.1);border-color:#56C0E0}.btn-info .badge{color:transparent;background-color:#949ba2}.btn-warning{color:#949ba2;background-color:transparent;border-color:#f7af3e}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:rgba(247,175,62,0.1);border-color:#f7af3e;outline:0;box-shadow:none}.btn-warning:hover{color:#ffffff;background-color:rgba(247,175,62,0.1);border-color:#f7af3e}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:rgba(247,175,62,0.1);border-color:#f7af3e}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:rgba(247,175,62,0.1);border-color:#f9c36f;outline:0;box-shadow:none}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:rgba(247,175,62,0.1);border-color:#f7af3e}.btn-warning .badge{color:transparent;background-color:#949ba2}.btn-danger{color:#949ba2;background-color:transparent;border-color:#DB524B}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:rgba(219,82,75,0.1);border-color:#DB524B;outline:0;box-shadow:none}.btn-danger:hover{color:#ffffff;background-color:rgba(219,82,75,0.1);border-color:#DB524B}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:rgba(219,82,75,0.1);border-color:#DB524B}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:rgba(219,82,75,0.1);border-color:#e47b75;outline:0;box-shadow:none}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:rgba(219,82,75,0.1);border-color:#DB524B}.btn-danger .badge{color:transparent;background-color:#949ba2}.btn-default:hover,.btn-default:active,.btn-default:active:focus,.btn-default:focus,.btn-default.active{background-color:#3d404c}.btn-link:hover,.btn-link:active,.btn-link:active:focus,.btn-link:focus,.btn-link.active{color:#f6a821;text-decoration:none}.content>div{opacity:0}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:2000;position:fixed;margin:auto;top:0;left:0;right:0;bottom:0;height:5px;width:200px;background:#fff;overflow:hidden}.pace .pace-progress{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);max-width:200px;z-index:2000;display:block;position:absolute;top:0;right:100%;height:100%;width:100%;background:#f6a821}.pace.pace-inactive{display:none}.pace-done .content>div{opacity:1}.text-muted{color:#868e96}.text-accent{color:#f6a821}.text-primary{color:#0F83C9}.text-success{color:#1bbf89}.text-info{color:#56C0E0}.text-warning{color:#f7af3e}.text-danger{color:#DB524B}.p-xxs{padding:5px !important}.p-xs{padding:10px !important}.p-sm{padding:15px !important}.p-m{padding:20px !important}.p-md{padding:25px !important}.p-lg{padding:30px !important}.p-xl{padding:40px !important}.m-xxs{margin:2px 4px}.m-xs{margin:5px}.m-sm{margin:10px}.m{margin:15px}.m-md{margin:20px}.m-lg{margin:30px}.m-xl{margin:50px}.m-n{margin:0 !important}.m-l-none{margin-left:0}.m-l-xs{margin-left:5px}.m-l-sm{margin-left:10px}.m-l{margin-left:15px}.m-l-md{margin-left:20px}.m-l-lg{margin-left:30px}.m-l-xl{margin-left:40px}.m-l-n-xxs{margin-left:-1px}.m-l-n-xs{margin-left:-5px}.m-l-n-sm{margin-left:-10px}.m-l-n{margin-left:-15px}.m-l-n-md{margin-left:-20px}.m-l-n-lg{margin-left:-30px}.m-l-n-xl{margin-left:-40px}.m-t-none{margin-top:0}.m-t-xxs{margin-top:1px}.m-t-xs{margin-top:5px}.m-t-sm{margin-top:10px}.m-t{margin-top:15px}.m-t-md{margin-top:20px}.m-t-lg{margin-top:30px}.m-t-xl{margin-top:40px}.m-t-xxl{margin-top:50px}.m-t-xxxl{margin-top:60px}.m-t-n-xxs{margin-top:-1px}.m-t-n-xs{margin-top:-5px}.m-t-n-sm{margin-top:-10px}.m-t-n{margin-top:-15px}.m-t-n-md{margin-top:-20px}.m-t-n-lg{margin-top:-30px}.m-t-n-xl{margin-top:-40px}.m-r-none{margin-right:0}.m-r-xxs{margin-right:1px}.m-r-xs{margin-right:5px}.m-r-sm{margin-right:10px}.m-r{margin-right:15px}.m-r-md{margin-right:20px}.m-r-lg{margin-right:30px}.m-r-xl{margin-right:40px}.m-r-n-xxs{margin-right:-1px}.m-r-n-xs{margin-right:-5px}.m-r-n-sm{margin-right:-10px}.m-r-n{margin-right:-15px}.m-r-n-md{margin-right:-20px}.m-r-n-lg{margin-right:-30px}.m-r-n-xl{margin-right:-40px}.m-b-none{margin-bottom:0}.m-b-xxs{margin-bottom:1px}.m-b-xs{margin-bottom:5px}.m-b-sm{margin-bottom:10px}.m-b{margin-bottom:15px}.m-b-md{margin-bottom:20px}.m-b-lg{margin-bottom:30px}.m-b-xl{margin-bottom:40px}.m-b-n-xxs{margin-bottom:-1px}.m-b-n-xs{margin-bottom:-5px}.m-b-n-sm{margin-bottom:-10px}.m-b-n{margin-bottom:-15px}.m-b-n-md{margin-bottom:-20px}.m-b-n-lg{margin-bottom:-30px}.m-b-n-xl{margin-bottom:-40px}.space-15{margin:15px 0}.space-20{margin:20px 0}.space-25{margin:25px 0}.space-30{margin:30px 0}.label-accent{background-color:#f6a821}body{background:#2f323b;font-family:'Roboto',sans-serif;color:#949ba2}.content{margin-top:60px;margin-left:200px;position:relative;padding:30px;transition:margin-left .3s ease-out;-webkit-transition:margin-left .3s ease-out}.content:before{content:'';position:fixed;top:0;bottom:0;z-index:-2;left:0;right:0;background-image:-webkit-radial-gradient(top, circle cover, #393b45 0, #2d3038 70%);background-image:-moz-radial-gradient(center, circle cover, #393b45 0, #2d3038 70%);background-image:-o-radial-gradient(center, circle cover, #393b45 0, #2d3038 70%);background-image:radial-gradient(center, circle cover, #393b45 0, #2d3038 70%);background-position:50%,50%}.navigation{margin-top:60px;background-color:#24262d;width:200px;position:absolute;left:0;bottom:0;top:0;transition:left .3s ease-out;-webkit-transition:left .3s ease-out}.navigation nav{background-color:#2a2d35}.navigation:before{transition:left .3s ease-out;-webkit-transition:left .3s ease-out;content:'';position:fixed;top:0;bottom:0;z-index:-1;left:0;background-color:#24262d;width:200px}body.nav-toggle .content{margin-left:0}body.nav-toggle .navigation{left:-200px}body.nav-toggle .navigation:before{left:-200px}@media (max-width:767px){.content{margin-left:0;padding:30px 0 10px 0}.navigation{left:-200px;z-index:2}.navigation:before{left:-200px}body.nav-toggle .content{margin-left:0}body.nav-toggle .navigation{left:0;z-index:2}body.nav-toggle .navigation:before{left:0}}body.blank .content{margin:0}.container-center{max-width:400px;margin:10% auto 0;padding:20px}.container-center.sm{max-width:200px}.container-center.md{max-width:600px}.container-center.lg{max-width:800px}a{color:#f6a821;text-decoration:none}a:hover,a:focus{color:#f8bb52;outline:none}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #3d404c}code{padding:2px 4px;font-size:90%;color:#f6a821;background-color:#24262d;border-radius:3px}pre{font-size:90%;color:#949ba2;background-color:#24262d;border-radius:3px;border:none}mark{background-color:#e9e599;border-radius:2px;padding:.1em .4em}label{color:#ffffff;font-weight:500}sup{font-size:12px;top:-0.8em}.help-block{color:#6d757d}.bs-example{background-color:#2f323b;padding:10px;border-radius:3px}.show-grid [class^="col-"]{background-color:#2f323b !important;border:1px solid #3d404c;padding-bottom:10px;padding-top:10px}.slight{font-size:11px;font-weight:300}.show-grid{margin:10px 0 !important}.row{margin-left:-10px;margin-right:-10px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{padding-left:10px;padding-right:10px}.font-example-box:hover{color:#ffffff}.font-example-box{text-align:center;min-height:90px;margin:10px 0;font-size:42px}.font-example-box i{font-size:22px}.icon-example-name{display:block;font-size:11px}.back-link{float:left;width:100%;margin:10px}.ui-sortable .panel-body{cursor:move}.ui-sortable-placeholder{border:1px dashed #535868 !important;visibility:visible !important}.navbar{min-height:60px}.navbar-default .navbar-brand,.navbar-default .navbar-brand:focus{width:200px;background-color:#f6a821;height:60px;padding:20px 25px;font-weight:400;letter-spacing:10px;color:#FFFFFF}.navbar-default .navbar-brand{color:#FFFFFF}.navbar-default .navbar-brand:hover{color:#FFFFFF;background-color:#f5a212}.navbar-brand span{letter-spacing:normal;float:right;font-size:12px;margin-left:-15px;color:#fce2b4}.navbar-default{border-bottom:none;background-color:#FFFFFF}.left-nav-toggle{float:left;padding:9px 10px 8px 25px}.left-nav-toggle:hover a{color:#f6a821}.left-nav-toggle a{font-size:30px;color:#949ba2}.navbar-default .navbar-nav>li>a{color:#6a727a}.left-nav-toggle a:hover,.left-nav-toggle a:focus{text-decoration:none}.navbar-form{margin-top:11px;padding:0}.navbar-form input.form-control{border:none;box-shadow:none;color:#949ba2}.navbar-form input.form-control::-webkit-input-placeholder{color:#6f7780}.navbar-form input.form-control:-moz-placeholder{color:#6f7780}.navbar-form input.form-control::-moz-placeholder{color:#6f7780}.navbar-form input.form-control:-ms-input-placeholder{color:#6f7780}.navbar-nav>li>a{padding:20px 15px;text-transform:uppercase;font-weight:500}.navbar-nav>li:first-child>a{padding-left:0}.navbar-nav>li:last-child>a{padding:10px 25px 10px 15px}.navbar-nav.navbar-right a .label{margin:-5px 0 0 5px}.profil-link img{height:40px;margin-left:10px}.profil-link .profile-address{text-transform:lowercase}#mobile-menu{display:none}@media (max-width:767px){#mobile-menu{display:block}}#mobile-menu{float:right}#mobile-menu .left-nav-toggle{padding-right:25px}.luna-nav.nav{padding-top:15px}.luna-nav.nav li>a,.luna-nav.nav .nav-category{padding:8px 15px 8px 25px;margin:0 0}.luna-nav.nav .nav-info{margin-top:50px;padding:20px 25px 25px 25px;font-size:12px;background-color:#24262d}.luna-nav.nav .nav-info i{font-size:34px}.luna-nav.nav .nav-second li>a{padding-left:40px}.luna-nav.nav li.active .nav-second li>a{padding-left:40px;border-left:none;color:#848c94}.luna-nav.nav li.active .nav-second li.active a{padding-left:34px;border-left:6px solid #c37e08;color:#c0c4c8}.luna-nav.nav li.active .nav-second li a:hover{color:#c0c4c8}.luna-nav.nav li>a{color:#848c94}.luna-nav.nav li.active a{border-left:6px solid #f6a821;padding-left:19px;color:#c0c4c8}.luna-nav.nav li a:hover,.luna-nav.nav li a:focus{color:#c0c4c8;background:inherit}.luna-nav.nav .nav-category{color:#FFFFFF;margin-top:10px}.luna-nav.nav .sub-nav-icon{float:right;transform:rotate(90deg);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}.panel{background-color:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;color:#949ba2;border-radius:3px}.panel .panel-body{padding:5px 15px 15px 15px}.panel.panel-filled .panel-body{padding-top:10px}.panel .panel-footer{background-color:transparent;border:none}.panel>.panel-heading{color:#ffffff}.panel-tools{display:inline-block;float:right;margin-top:0;padding:0;position:relative}.panel-tools a{margin-left:2px;color:#949ba2;cursor:pointer}.panel-tools a:hover{color:#ffffff}.panel.panel-c-white{border-left:3px solid #949ba2}.panel.panel-c-accent{border-left:3px solid #f6a821}.panel.panel-c-primary{border-left:3px solid #0F83C9}.panel.panel-c-warning{border-left:3px solid #f7af3e}.panel.panel-c-info{border-left:3px solid #56C0E0}.panel.panel-c-success{border-left:3px solid #1bbf89}.panel.panel-c-danger{border-left:3px solid #DB524B}.panel.panel-b-accent{background-color:#f6a821;color:#ffffff}.panel.panel-b-white{background-color:white;color:#61686f}.panel.panel-b-white .panel-heading{color:#61686f}.panel.panel-b-white .panel-footer{color:#61686f}.panel.panel-filled{background-color:rgba(68,70,79,0.5)}.view-header{margin:20px 0;min-height:50px;padding:0 15px}.view-header .header-icon{font-size:60px;color:#f6a821;width:68px;float:left;margin-top:-8px;line-height:0}.view-header .header-title{margin-left:68px}.view-header .header-title h3{margin-bottom:2px}.panel.collapsed .panel-body,.panel.collapsed .panel-footer{display:none}.panel.collapsed .fa.fa-chevron-up:before{content:"\f078"}.panel.collapsed .fa.fa-chevron-down:before{content:"\f077"}.pagination>li>a,.pagination>li>span{color:#949ba2;background-color:transparent;border:1px solid #585d6e}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#ffffff;background-color:rgba(97,103,121,0.1);border-color:#616779}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{color:#ffffff;background-color:rgba(97,103,121,0.1);border-color:#616779}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#949ba2;background-color:transparent;border-color:#4a4f5d}.progress{border-radius:2px;margin-bottom:10px}.progress-bar{background-color:#2f323b;text-align:right;padding-right:10px;color:#949ba2}.progress-small,.progress-small .progress-bar{height:10px}.progress-bar-primary{border-right:4px solid #0d74b1}.progress-bar-success{border-right:4px solid #18a979}.progress-bar-info{border-right:4px solid #0d74b1}.progress-bar-warning{border-right:4px solid #f6a526}.progress-bar-danger{border-right:4px solid #d73e36}.full .progress-bar-success{background-color:#1bbf89;border-right:4px solid #18a979}.full .progress-bar-info{background-color:#0F83C9;border-right:4px solid #0d74b1}.full .progress-bar-warning{background-color:#f7af3e;border-right:4px solid #f6a526}.full .progress-bar-danger{background-color:#DB524B;border-right:4px solid #d73e36}.full .progress-bar-primary{background-color:#0F83C9;border-right:4px solid #0d74b1}.full .progress-bar{color:#ffffff}.modal-content{background-color:#21242a}.modal-content .modal-title{font-size:22px}.modal-content .modal-header{border-color:#3d404c;background-color:#1d1f24;padding:40px 20px}.modal-content .modal-body{padding:40px}.modal-content .modal-footer{border-color:#3d404c;background-color:#1d1f24;padding:20px}.modal-backdrop.in{filter:alpha(opacity=10);opacity:.1}h1,h2,h3,h4,h5,h6{color:#FFFFFF}h1,.h1,h2,.h2,h3,.h3{margin-top:10px}.c-accent{color:#f6a821}.c-white{color:#FFFFFF}.c-text{color:#949ba2}.font-light{font-weight:300}.font-normal{font-weight:400}.font-bold{font-weight:600}.font-extra-bold{font-weight:700}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{color:#a4aab0}.label-default{background-color:#44464f}.label-primary{background-color:#0F83C9}.label-success{background-color:#1bbf89}.label-info{background-color:#56C0E0}.label-warning{background-color:#f7af3e}.label-danger{background-color:#DB524B}.badge{background-color:transparent;border:1px solid #44464f;font-weight:300;color:#aaacb5}.vertical-container{width:98%;margin:0 auto}.vertical-container::after{content:'';display:table;clear:both}.v-timeline{position:relative;padding:0;margin-top:2em;margin-bottom:2em}.v-timeline::before{content:'';position:absolute;top:0;left:18px;height:100%;width:4px;background:#3d404c}.vertical-timeline-content .btn{float:right}.vertical-timeline-block{position:relative;margin:2em 0}.vertical-timeline-block:after{content:"";display:table;clear:both}.vertical-timeline-block:first-child{margin-top:0}.vertical-timeline-block:last-child{margin-bottom:0}.vertical-timeline-icon{position:absolute;top:0;left:0;width:40px;height:40px;border-radius:50%;font-size:16px;border:1px solid #3d404c;text-align:center;background:#2f323b;color:#ffffff}.vertical-timeline-icon i{display:block;width:24px;height:24px;position:relative;left:50%;top:50%;margin-left:-12px;margin-top:-9px}.vertical-timeline-content{position:relative;margin-left:60px;background-color:rgba(68,70,79,0.5);border-radius:.25em;border:1px solid #3d404c}.vertical-timeline-content:after{content:"";display:table;clear:both}.vertical-timeline-content h2{font-weight:400;margin-top:4px}.vertical-timeline-content p{margin:1em 0 0 0;line-height:1.6}.vertical-timeline-content .vertical-date{font-weight:500;text-align:right}.vertical-date small{color:#ffffff;font-weight:400}.vertical-timeline-content:after,.vertical-timeline-content:before{right:100%;top:20px;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.vertical-timeline-content:after{border-color:transparent;border-right-color:#3d404c;border-width:10px;margin-top:-10px}.vertical-timeline-content:before{border-color:transparent;border-right-color:#3d404c;border-width:11px;margin-top:-11px}.vertical-timeline-content h2{font-size:16px}.dd{position:relative;display:block;margin:0;padding:0;list-style:none;line-height:20px}.dd-list{display:block;position:relative;margin:0;padding:0;list-style:none}.dd-list .dd-list{padding-left:30px}.dd-collapsed .dd-list{display:none}.dd-item,.dd-empty,.dd-placeholder{display:block;position:relative;margin:0;padding:0;min-height:20px;line-height:20px}.dd-handle{display:block;margin:5px 0;padding:10px 10px;color:#949ba2;text-decoration:none;border:1px solid #3d404c;background-color:rgba(68,70,79,0.5);-webkit-border-radius:3px;border-radius:3px;box-sizing:border-box;-moz-box-sizing:border-box}.dd-handle span{font-weight:bold}.dd-handle:hover{background-color:rgba(68,70,79,0.8);cursor:pointer}.dd-item>button{display:block;position:relative;cursor:pointer;float:left;width:25px;height:20px;margin:10px 0;padding:0;text-indent:100%;white-space:nowrap;overflow:hidden;border:0;background:transparent;font-size:12px;line-height:1;text-align:center;font-weight:bold}.dd-item>button:before{content:'+';display:block;position:absolute;width:100%;text-align:center;text-indent:0}.dd-item>button[data-action="collapse"]:before{content:'-'}.dd-placeholder,.dd-empty{margin:5px 0;padding:0;min-height:30px;background:transparent;border:1px dashed #535868;box-sizing:border-box;-moz-box-sizing:border-box}.dd-empty{border:1px dashed #3d404c;min-height:100px;background-color:transparent;background-size:60px 60px;background-position:0 0,30px 30px}.dd-dragel{position:absolute;z-index:9999;pointer-events:none}.dd-dragel>.dd-item .dd-handle{margin-top:0}.dd-dragel .dd-handle{-webkit-box-shadow:2px 4px 6px 0 rgba(0,0,0,0.1);box-shadow:2px 4px 6px 0 rgba(0,0,0,0.1)}.nestable-lists{display:block;clear:both;padding:30px 0;width:100%;border:0;border-top:2px solid #e4e5e7;border-bottom:2px solid #e4e5e7}#nestable-menu{padding:0;margin:10px 0 20px 0}#nestable-output{width:100%;font-size:.75em;line-height:1.333333em;font-family:open sans,lucida grande,lucida sans unicode,helvetica,arial,sans-serif;padding:5px;box-sizing:border-box;-moz-box-sizing:border-box}#nestable-output{font-size:14px;padding:25px;box-sizing:border-box;-moz-box-sizing:border-box}.nav-tabs{border:none}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{background-color:rgba(68,70,79,0.5);color:#ffffff;border-width:0 0 1px 0}.tab-pane .panel-body{border-top:none;background-color:rgba(68,70,79,0.5);margin-bottom:20px}.nav-tabs>li a:hover{background:transparent;border-color:transparent}.nav-tabs>li>a{color:#949ba2}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tabs-left .panel-body{position:static}.tabs-left>.nav-tabs,.tabs-right>.nav-tabs{width:20%}.tabs-left .panel-body{width:80%;margin-left:20%}.tabs-right .panel-body{width:80%;margin-right:20%}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs>li{margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px}.tabs-left>.nav-tabs>li>a{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-right>.nav-tabs{float:right;margin-left:19px}.tabs-right>.nav-tabs>li>a{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{border-top:1px solid #3d404c}.table>thead>tr>th{border-bottom:none}.table-striped>tbody>tr:nth-of-type(odd){background-color:rgba(68,70,79,0.5)}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#494b54}.table-hover>tbody>tr:hover{background-color:#494b54}.table-bordered,.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border-color:#3d404c}.panel-filled .table>thead>tr>th,.panel-filled .table>tbody>tr>th,.panel-filled .table>tfoot>tr>th,.panel-filled .table>thead>tr>td,.panel-filled .table>tbody>tr>td,.panel-filled .table>tfoot>tr>td{border-color:#484c5a}.panel-filled .table-bordered,.panel-filled .table-bordered>thead>tr>th,.panel-filled .table-bordered>tbody>tr>th,.panel-filled .table-bordered>tfoot>tr>th,.panel-filled .table-bordered>thead>tr>td,.panel-filled .table-bordered>tbody>tr>td,.panel-filled .table-bordered>tfoot>tr>td{border-color:#484c5a}.panel-filled .table-striped>tbody>tr:nth-of-type(odd){background-color:#44464f}.panel-filled .table-hover>tbody>tr:hover{background-color:#494b54}th{color:#ffffff}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:rgba(27,191,137,0.2);border:none}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#18a979}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:rgba(86,192,224,0.2);border:none}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#40b8dc}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:rgba(247,175,62,0.2);border:none}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#f6a526}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:rgba(219,82,75,0.2);border:none}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#d73e36}div.dt-button-info{background-color:#21242a;border-radius:6px;border:none}div.dt-button-info h2{background-color:transparent;border-color:#3d404c}.table-responsive{border-color:#484c5a !important}.alert-success{color:#ffffff;border-color:#1bbf89;background-color:#1bbf89}.alert-success .alert-link{color:#1bbf89}.alert-warning{color:#ffffff;border-color:#f7af3e;background-color:#f7af3e}.alert-warning .alert-link{color:#f7af3e}.alert-info{color:#ffffff;border-color:#56C0E0;background-color:#56C0E0}.alert-info .alert-link{color:#56C0E0}.alert-danger{color:#ffffff;border-color:#DB524B;background-color:#DB524B}.alert-danger .alert-link{color:#DB524B}.toast-success{color:#ffffff;border-color:#1bbf89;background-color:#1bbf89}.toast-warning{color:#ffffff;border-color:#f7af3e;background-color:#f7af3e}.toast-info{color:#ffffff;border-color:#56C0E0;background-color:#56C0E0}.toast-error{color:#ffffff;border-color:#DB524B;background-color:#DB524B}#toast-container>div,#toast-container .toast{opacity:1;margin-top:20px;border-radius:4px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);-moz-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}#toast-container>div:hover,#toast-container .toast:hover{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.7);-moz-box-shadow:0 5px 15px rgba(0,0,0,0.7);box-shadow:0 5px 15px rgba(0,0,0,0.7)}#toast-container.toast-top-right>div{margin-top:60px}.form-control{color:#949ba2;border:none;border-radius:4px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:none;-o-transition:none;transition:none;background-color:#494b54}.form-control:focus{-webkit-box-shadow:none;box-shadow:none}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#2c2e34;opacity:1}.navbar-form .form-control{background-color:#ffffff}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#159269}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#f59b0d}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#cb3029}.has-success .form-control{border-color:#159269;border-style:solid;border-width:1px;-webkit-box-shadow:none !important;box-shadow:none !important}.has-warning .form-control{border-color:#f59b0d;border-style:solid;border-width:1px;-webkit-box-shadow:none !important;box-shadow:none !important}.has-error .form-control{border-color:#cb3029;border-style:solid;border-width:1px;-webkit-box-shadow:none !important;box-shadow:none !important}.support-question a{color:#949ba2}.support-question a:hover{text-decoration:none}.support-question a:focus{text-decoration:none}.support-question:hover{background-color:rgba(68,70,79,0.7)}.support-question.active{border-left:3px solid #f6a821}.support-question.active .panel-body{padding-left:13px}.flot-chart{display:block;height:300px;position:relative;color:#545454}.flot-chart-analytics{margin-top:10px;margin-bottom:10px;display:block;height:150px;position:relative}.flot-chart-content{width:100%;height:100%;color:#545454}.flot-text{color:#949ba2 !important}.jqstooltip{padding:5px !important;border:none !important;border-radius:10px;background-color:#f6a821 !important;width:auto !important;height:auto !important}.hoverinfo{background-color:#f6a821 !important;box-shadow:0 5px 15px rgba(0,0,0,0.5) !important;-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5) !important;border:none !important;border-radius:4px !important;color:#ffffff !important;padding:6px 12px !important}
\ No newline at end of file
diff --git a/src/app/style/style.scss b/src/app/style/style.scss
index 198c712..0cfcdeb 100644
--- a/src/app/style/style.scss
+++ b/src/app/style/style.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 './vars.scss';
 
 .btn:active,.btn.active{
diff --git a/src/app/style/vars.scss b/src/app/style/vars.scss
index 05aeeea..2f2f829 100644
--- a/src/app/style/vars.scss
+++ b/src/app/style/vars.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.
+ */
+
+
 // COLORS
 
 //$gray_dark: darken($background-color, 2%);
diff --git a/src/app/template/directives/directives.ts b/src/app/template/directives/directives.ts
index 3e4840d..c96ecdc 100644
--- a/src/app/template/directives/directives.ts
+++ b/src/app/template/directives/directives.ts
@@ -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.
+ */
+
+
 /**
  * LUNA - Responsive Admin Theme
  *
diff --git a/src/app/template/filters/capitalize.ts b/src/app/template/filters/capitalize.ts
index 8325eb7..c7f7ef1 100644
--- a/src/app/template/filters/capitalize.ts
+++ b/src/app/template/filters/capitalize.ts
@@ -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.
+ */
+
+
 export function capitalize() {
   return function(input: string) {
     return (!!input) ? input.charAt(0).toUpperCase() + input.substr(1).toLowerCase() : '';
diff --git a/src/app/template/index.ts b/src/app/template/index.ts
index 0e68771..4396d68 100644
--- a/src/app/template/index.ts
+++ b/src/app/template/index.ts
@@ -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 check used deps
 
 import {minimalizaMenu, panelTools, XosNavHandlerService} from './directives/directives';
diff --git a/src/app/views/crud/crud.relations.service.spec.ts b/src/app/views/crud/crud.relations.service.spec.ts
index 8c0f2f9..771c9a8 100644
--- a/src/app/views/crud/crud.relations.service.spec.ts
+++ b/src/app/views/crud/crud.relations.service.spec.ts
@@ -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 {
   IXosCrudRelationService, XosCrudRelationService, IXosCrudRelationFormTabData,
   IXosCrudRelationTableTabData
diff --git a/src/app/views/crud/crud.relations.service.ts b/src/app/views/crud/crud.relations.service.ts
index 292c6f5..f6a7015 100644
--- a/src/app/views/crud/crud.relations.service.ts
+++ b/src/app/views/crud/crud.relations.service.ts
@@ -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 {IXosModelRelation} from './crud';
 import {IXosModelStoreService} from '../../datasources/stores/model.store';
 import {IXosModelDiscovererService} from '../../datasources/helpers/model-discoverer.service';
diff --git a/src/app/views/crud/crud.scss b/src/app/views/crud/crud.scss
index ac6fd81..9b2303a 100644
--- a/src/app/views/crud/crud.scss
+++ b/src/app/views/crud/crud.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 './../../style/vars.scss';
 li.uib-tab {
   &.empty > a {
diff --git a/src/app/views/crud/crud.ts b/src/app/views/crud/crud.ts
index fc422f3..e281d16 100644
--- a/src/app/views/crud/crud.ts
+++ b/src/app/views/crud/crud.ts
@@ -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 {IXosTableCfg} from '../../core/table/table';
 import {IXosModelStoreService} from '../../datasources/stores/model.store';
 import {IXosConfigHelpersService} from '../../core/services/helpers/config.helpers';
diff --git a/src/app/views/dashboard/dashboard.ts b/src/app/views/dashboard/dashboard.ts
index 21fbbde..45bd138 100644
--- a/src/app/views/dashboard/dashboard.ts
+++ b/src/app/views/dashboard/dashboard.ts
@@ -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 {IXosModelStoreService} from '../../datasources/stores/model.store';
 import {IXosAuthService} from '../../datasources/rest/auth.rest';
 class DashboardController {
diff --git a/src/app/views/index.ts b/src/app/views/index.ts
index b296f9b..8f2a2b8 100644
--- a/src/app/views/index.ts
+++ b/src/app/views/index.ts
@@ -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 {xosCore} from '../core/index';
 import {xosCrud} from './crud/crud';
 import {xosDashboard} from './dashboard/dashboard';
