hunk.code_window:       runSsl: {
           command: [
             'docker stop portainer',
             'docker rm portainer',
             'docker run -d -p 9000:9000 -v /tmp/portainer:/data -v /tmp/docker-ssl:/certs --name portainer portainer -H tcp://10.0.7.10:2376 --tlsverify'
           ].join(';')
         },
         cleanImages: {
           command: 'docker rmi $(docker images -q -f dangling=true)'
         }
  
hunk.labels: keep keep keep keep replace keep keep keep keep keep
hunk.after_edit:           'docker run -d -p 9000:9000 -v /tmp/portainer:/data -v /tmp/docker-ssl:/certs --name portainer portainer -H tcp://10.0.7.10:2376 --tlsverify --no-analytics'
  
hunk.file_path: gruntfile.js
hunk.type: replace
file: angular.module('portainer.filters', []);
  angular.module('portainer.rest', ['ngResource']);
  angular.module('portainer.services', []);
  angular.module('portainer.helpers', []);
  angular.module('portainer', [
    'ui.bootstrap',
    'ui.router',
    'ui.select',
    'ngCookies',
    'ngSanitize',
    'ngFileUpload',
    'angularUtils.directives.dirPagination',
    'LocalStorageModule',
    'angular-jwt',
    'angular-google-analytics',
    'portainer.templates',
    'portainer.filters',
    'portainer.rest',
    'portainer.helpers',
    'portainer.services',
    'auth',
    'dashboard',
    'container',
    'containerConsole',
    'containerLogs',
    'containers',
    'createContainer',
    'createNetwork',
    'createService',
    'createVolume',
    'docker',
    'endpoint',
    'endpointInit',
    'endpoints',
    'events',
    'image',
    'images',
    'main',
    'network',
    'networks',
    'node',
    'service',
    'services',
    'settings',
    'sidebar',
    'stats',
    'swarm',
    'task',
    'templates',
    'volumes'])
    .config(['$stateProvider', '$urlRouterProvider', '$httpProvider', 'localStorageServiceProvider', 'jwtOptionsProvider', 'AnalyticsProvider', function ($stateProvider, $urlRouterProvider, $httpProvider, localStorageServiceProvider, jwtOptionsProvider, AnalyticsProvider) {
      'use strict';
  
      localStorageServiceProvider
      .setStorageType('sessionStorage')
      .setPrefix('portainer');
  
      jwtOptionsProvider.config({
        tokenGetter: ['LocalStorage', function(LocalStorage) {
          return LocalStorage.getJWT();
        }],
        unauthenticatedRedirector: ['$state', function($state) {
          $state.go('auth', {error: 'Your session has expired'});
        }]
      });
      $httpProvider.interceptors.push('jwtInterceptor');
  
      AnalyticsProvider.setAccount('@@CONFIG_GA_ID');
  
      $urlRouterProvider.otherwise('/auth');
  
      $stateProvider
      .state('root', {
        abstract: true,
        resolve: {
          requiresLogin: ['StateManager', function (StateManager) {
            var applicationState = StateManager.getState();
            return applicationState.application.authentication;
          }]
        }
      })
      .state('auth', {
        parent: 'root',
        url: '/auth',
        params: {
          logout: false,
          error: ''
        },
        views: {
          "content@": {
            templateUrl: 'app/components/auth/auth.html',
            controller: 'AuthenticationController'
          }
        },
        data: {
          requiresLogin: false
        }
      })
      .state('containers', {
        parent: 'root',
        url: '/containers/',
        views: {
          "content@": {
            templateUrl: 'app/components/containers/containers.html',
            controller: 'ContainersController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('container', {
        url: "^/containers/:id",
        views: {
          "content@": {
            templateUrl: 'app/components/container/container.html',
            controller: 'ContainerController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('stats', {
        url: "^/containers/:id/stats",
        views: {
          "content@": {
            templateUrl: 'app/components/stats/stats.html',
            controller: 'StatsController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('logs', {
        url: "^/containers/:id/logs",
        views: {
          "content@": {
            templateUrl: 'app/components/containerLogs/containerlogs.html',
            controller: 'ContainerLogsController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('console', {
        url: "^/containers/:id/console",
        views: {
          "content@": {
            templateUrl: 'app/components/containerConsole/containerConsole.html',
            controller: 'ContainerConsoleController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('dashboard', {
        parent: 'root',
        url: '/dashboard',
        views: {
          "content@": {
            templateUrl: 'app/components/dashboard/dashboard.html',
            controller: 'DashboardController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('actions', {
        abstract: true,
        url: "/actions",
        views: {
          "content@": {
            template: '<div ui-view="content@"></div>'
          },
          "sidebar@": {
            template: '<div ui-view="sidebar@"></div>'
          }
        }
      })
      .state('actions.create', {
        abstract: true,
        url: "/create",
        views: {
          "content@": {
            template: '<div ui-view="content@"></div>'
          },
          "sidebar@": {
            template: '<div ui-view="sidebar@"></div>'
          }
        }
      })
      .state('actions.create.container', {
        url: "/container",
        views: {
          "content@": {
            templateUrl: 'app/components/createContainer/createcontainer.html',
            controller: 'CreateContainerController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('actions.create.network', {
        url: "/network",
        views: {
          "content@": {
            templateUrl: 'app/components/createNetwork/createnetwork.html',
            controller: 'CreateNetworkController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('actions.create.service', {
        url: "/service",
        views: {
          "content@": {
            templateUrl: 'app/components/createService/createservice.html',
            controller: 'CreateServiceController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('actions.create.volume', {
        url: "/volume",
        views: {
          "content@": {
            templateUrl: 'app/components/createVolume/createvolume.html',
            controller: 'CreateVolumeController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('docker', {
        url: '/docker/',
        views: {
          "content@": {
            templateUrl: 'app/components/docker/docker.html',
            controller: 'DockerController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('endpoints', {
        url: '/endpoints/',
        views: {
          "content@": {
            templateUrl: 'app/components/endpoints/endpoints.html',
            controller: 'EndpointsController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('endpoint', {
        url: '^/endpoints/:id',
        views: {
          "content@": {
            templateUrl: 'app/components/endpoint/endpoint.html',
            controller: 'EndpointController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('endpointInit', {
        url: '/init/endpoint',
        views: {
          "content@": {
            templateUrl: 'app/components/endpointInit/endpointInit.html',
            controller: 'EndpointInitController'
          }
        }
      })
      .state('events', {
        url: '/events/',
        views: {
          "content@": {
            templateUrl: 'app/components/events/events.html',
            controller: 'EventsController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('images', {
        url: '/images/',
        views: {
          "content@": {
            templateUrl: 'app/components/images/images.html',
            controller: 'ImagesController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('image', {
        url: '^/images/:id/',
        views: {
          "content@": {
            templateUrl: 'app/components/image/image.html',
            controller: 'ImageController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('networks', {
        url: '/networks/',
        views: {
          "content@": {
            templateUrl: 'app/components/networks/networks.html',
            controller: 'NetworksController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('network', {
        url: '^/networks/:id/',
        views: {
          "content@": {
            templateUrl: 'app/components/network/network.html',
            controller: 'NetworkController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('node', {
        url: '^/nodes/:id/',
        views: {
          "content@": {
            templateUrl: 'app/components/node/node.html',
            controller: 'NodeController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('services', {
        url: '/services/',
        views: {
          "content@": {
            templateUrl: 'app/components/services/services.html',
            controller: 'ServicesController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('service', {
        url: '^/service/:id/',
        views: {
          "content@": {
            templateUrl: 'app/components/service/service.html',
            controller: 'ServiceController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('settings', {
        url: '/settings/',
        views: {
          "content@": {
            templateUrl: 'app/components/settings/settings.html',
            controller: 'SettingsController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('task', {
        url: '^/task/:id',
        views: {
          "content@": {
            templateUrl: 'app/components/task/task.html',
            controller: 'TaskController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('templates', {
        url: '/templates/',
        views: {
          "content@": {
            templateUrl: 'app/components/templates/templates.html',
            controller: 'TemplatesController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('volumes', {
        url: '/volumes/',
        views: {
          "content@": {
            templateUrl: 'app/components/volumes/volumes.html',
            controller: 'VolumesController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      })
      .state('swarm', {
        url: '/swarm/',
        views: {
          "content@": {
            templateUrl: 'app/components/swarm/swarm.html',
            controller: 'SwarmController'
          },
          "sidebar@": {
            templateUrl: 'app/components/sidebar/sidebar.html',
            controller: 'SidebarController'
          }
        }
      });
  
      // The Docker API likes to return plaintext errors, this catches them and disp
      $httpProvider.interceptors.push(function() {
        return {
          'response': function(response) {
            if (typeof(response.data) === 'string' &&
            (response.data.startsWith('Conflict.') || response.data.startsWith('conflict:'))) {
              $.gritter.add({
                title: 'Error',
                text: $('<div>').text(response.data).html(),
                time: 10000
              });
            }
            return response;
          }
        };
      });
    }])
    .run(['$rootScope', '$state', 'Authentication', 'authManager', 'StateManager', 'Messages', 'Analytics', function ($rootScope, $state, Authentication, authManager, StateManager, Messages, Analytics) {
      StateManager.initialize().then(function success(state) {
        if (state.application.authentication) {
          authManager.checkAuthOnRefresh();
          authManager.redirectWhenUnauthenticated();
          Authentication.init();
          $rootScope.$on('tokenHasExpired', function($state) {
            $state.go('auth', {error: 'Your session has expired'});
          });
        }
      }, function error(err) {
        Messages.error("Failure", err, 'Unable to retrieve application settings');
      });
  
      $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {
        Analytics.trackPage(toState.url);
        Analytics.pageView();
      });
  
      $rootScope.$state = $state;
    }])
    // This is your docker url that the api will use to make requests
    // You need to set this to the api endpoint without the port i.e. http://192.168.1.9
    .constant('DOCKER_PORT', '') // Docker port, leave as an empty string if no port is required.  If you have a port, prefix it with a ':' i.e. :4243
    .constant('DOCKER_ENDPOINT', 'api/docker')
    .constant('CONFIG_ENDPOINT', 'api/settings')
    .constant('AUTH_ENDPOINT', 'api/auth')
    .constant('USERS_ENDPOINT', 'api/users')
    .constant('ENDPOINTS_ENDPOINT', 'api/endpoints')
    .constant('TEMPLATES_ENDPOINT', 'api/templates')
    .constant('PAGINATION_MAX_ITEMS', 10)
    .constant('UI_VERSION', 'v1.11.3');
  