Skip to content

Commit

Permalink
Merge pull request #432 from CenturyLinkLabs/feature/deployment-targe…
Browse files Browse the repository at this point in the history
…t-metadata

Deployment target metadata
  • Loading branch information
dpetersen committed Nov 12, 2014
2 parents 1add384 + 96858cd commit 4fb640c
Show file tree
Hide file tree
Showing 18 changed files with 196 additions and 29 deletions.
39 changes: 38 additions & 1 deletion app/assets/stylesheets/panamax/deployments.css.scss
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,44 @@
margin-bottom: 15px;
margin-left: 15px;
position: relative;
width: 755px;
}

.status {
font-size: 14px;
color: $medium_grey;
float: left;

.last-updated,
form {
float: left;
margin-left: 15px;
}
.last-updated {
margin-top: 4px;
}

form button {
@include border-box;
border: none;
background: none;
position: relative;
height: 15px;
width: 15px;
font-size: 0;

&:after {
content: '';
position: absolute;
top: 0;
left: 0;
@extend .icon-arrowloop-medium;
@include icon-green;
}

&:hover:after {
@include icon-light-green;
}
}
}

.actions {
Expand Down
13 changes: 13 additions & 0 deletions app/controllers/deployment_target_metadata_refreshes_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
class DeploymentTargetMetadataRefreshesController < ApplicationController
respond_to :html

def create
deployment_target_id = params[:deployment_target_id]

DeploymentTargetMetadataRefresh.create(
deployment_target_id: deployment_target_id
)
flash[:success] = I18n.t('deployment_targets.metadata_refresh.success')
redirect_to deployment_targets_path
end
end
5 changes: 5 additions & 0 deletions app/models/deployment_target.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,9 @@ class DeploymentTarget < BaseResource
string :endpoint_url
end

class Metadata < BaseResource
def created_at
Time.parse(attributes[:created_at])
end
end
end
8 changes: 8 additions & 0 deletions app/models/deployment_target_metadata_refresh.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class DeploymentTargetMetadataRefresh < BaseResource
include ActiveResource::Singleton

self.site = PanamaxApi::URL + "/deployment_targets/:deployment_target_id/metadata"
self.singleton_name = "refresh"

belongs_to :deployment_target
end
8 changes: 5 additions & 3 deletions app/models/image.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ def deployment_attributes=(attrs)
end

def deployment
BaseResource.new({
count: 1
})
Class.new(BaseResource) do
def count
1
end
end.new
end

def docker_index_url
Expand Down
36 changes: 36 additions & 0 deletions app/views/deployment_targets/_deployment_target.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
.deployment-target
= link_to deployment_target.name,
deployment_target_deployments_path(deployment_target),
class: 'name'
%em.status
%span.last-updated
Last Updated:
- if deployment_target.metadata?
= l(deployment_target.metadata.created_at, format: :informal)
- else
never
= form_for [ deployment_target, DeploymentTargetMetadataRefresh.new ] do |f|
= f.button "Refresh"
.actions
= link_to 'Delete Target',
deployment_target_path(deployment_target),
class: 'delete-action',
title: 'delete',
method: 'delete',
data: { delete_confirm: 'Delete this Target?', delete_remove_at: '.deployment-target' }
%dl.target-info
%dt Endpoint:
%dd= deployment_target.endpoint_url
- if deployment_target.metadata?
%dt Agent Version:
%dd= deployment_target.metadata.agent_version
%dt Adapter Type:
%dd= deployment_target.metadata.adapter_type
%dt Adapter Version:
%dd= deployment_target.metadata.adapter_version
%dl.token
%dt{ data: { toggle: { class: 'expanded' } } }
Target Token
%dd.token-contents
.token-container
%div{ contenteditable: true }= deployment_target.auth_blob
22 changes: 1 addition & 21 deletions app/views/deployment_targets/index.html.haml
Original file line number Diff line number Diff line change
@@ -1,26 +1,6 @@
- content_for(:body_id, 'deployments_flow')
= render '/shared/breadcrumbs', breadcrumbs: ["Manage", "Remote Deployment Targets"]
- @deployment_targets.each do |target|
.deployment-target
= link_to target.name,
deployment_target_deployments_path(target),
class: 'name'
.actions
= link_to 'Delete Target',
deployment_target_path(target),
class: 'delete-action',
title: 'delete',
method: 'delete',
data: { delete_confirm: 'Delete this Target?', delete_remove_at: '.deployment-target' }
%dl.target-info
%dt Endpoint:
%dd= target.endpoint_url
%dl.token
%dt{ data: { toggle: { class: 'expanded' } } }
Target Token
%dd.token-contents
.token-container
%div{ contenteditable: true }= target.auth_blob
= render @deployment_targets

= render 'shared/errors', errors: @deployment_target.errors
= form_for @deployment_target, html: { id: 'create_target', class: ('expanded' unless @deployment_target.valid?) } do |f|
Expand Down
2 changes: 2 additions & 0 deletions config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ en:
deployment_targets:
create:
success: 'Your deployment target was added successfully'
metadata_refresh:
success: 'Agent was successfully refreshed'
registries:
destroy:
success: 'Your registry was deleted successfully'
Expand Down
4 changes: 4 additions & 0 deletions config/locales/formats.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
en:
time:
formats:
informal: "%m/%d/%Y at %l:%M%P"
1 change: 1 addition & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
resources :deployment_targets, only: [:index, :create, :destroy] do
get :select, on: :collection
resources :deployments, only: [:new, :create, :index, :destroy]
resources :deployment_target_metadata_refreshes, only: :create
end

resource :user, only: [:update]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
require 'spec_helper'

describe DeploymentTargetMetadataRefreshesController do
describe '#create' do
before do
DeploymentTargetMetadataRefresh.stub(create: double)
post :create, deployment_target_id: "19"
end

it 'creates a DeploymentTargetMetadataRefresh with the expected DeploymentTarget' do
expect(DeploymentTargetMetadataRefresh).to(
have_received(:create).
with({ deployment_target_id: "19" })
)
end

context 'HTML format' do
it 'redirects to the deployments list' do
expect(response).to redirect_to(deployment_targets_path)
end
end
end
end
25 changes: 22 additions & 3 deletions spec/features/manage_deployment_targets_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,17 @@
visit '/deployment_targets'

expect(page).to have_content 'Remote Deployment Targets'
expect(page).to have_content 'Socialize staging environment'
expect(page).to have_content 'Endpoint: https://foo.host'
expect(page).to have_content 'Target Token aHR0cHM6Ly8xMC4wLjEuODozMDAxfGEyNjNkNWEyLTVkNDUtNGUxNy1iNDQ3LTQ2MGM3YzcwODIy'

within('div', text: 'Socialize') do
expect(page).to have_content 'Socialize staging environment'
expect(page).to have_content 'Endpoint: https://foo.host'
expect(page).to have_content 'Target Token aHR0cHM6Ly8xMC4wLjEuODozMDAxfGEyNjNkNWEyLTVkNDUtNGUxNy1iNDQ3LTQ2MGM3YzcwODIy'
expect(page).to have_content 'Agent Version: 0.1.0'
end

within('div', text: 'Brand new target') do
expect(page).to have_no_content 'Agent Version'
end
end

it 'can create a deployment target' do
Expand All @@ -33,5 +41,16 @@
page.should have_content 'wp-pod'
page.should have_content 'db-pod'
end

it 'can refresh a deployment target' do
visit '/deployment_targets'

within('div', text: 'Brand new target') do
click_on "Refresh"
end

expect(page).to have_content(I18n.t('deployment_targets.metadata_refresh.success'))
expect(current_path).to eq(deployment_targets_path)
end
end
end
11 changes: 11 additions & 0 deletions spec/models/deployment_target_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
require 'spec_helper'

describe DeploymentTarget::Metadata do
describe "#created_at" do
let(:time) { Time.parse("2014-03-19") }
let(:metadata) { DeploymentTarget::Metadata.new(created_at: time.to_json) }
subject { metadata.created_at }

it { should eq(time) }
end
end
4 changes: 4 additions & 0 deletions spec/support/fake_panamax_api.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ class FakePanamaxApi < Sinatra::Base
json_response 201, 'deployment_representation.json'
end

post '/deployment_targets/:id/metadata/refresh.json' do
json_response 201, 'deployment_target_refresh_representation.json'
end

get '/registries.json' do
json_response 200, 'registries_representation.json'
end
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"meatdata": {
"agent_version": "0.3.0",
"adapter_type": "Test Orchestrator",
"adapter_version": "0.4.0",
"created_at": "2014-11-06T17:32:47.255+00:00"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@
"id": 8,
"name": "Socialize production environment",
"endpoint_url": "https://social.host",
"metadata": null,
"auth_blob": "aHR0cHM6Ly8xMC4wLjEuODozMDAxfGEyNjNkNWEyLTVkNDUtNGUxNy1iNDQ3LTQ2MGM3YzcwODIy\nNXxNRE15TXpaall6TXROVE5oWXkwME56VXpMV0V6Wm1FdE0yRTJOV1UyTUdRNE1HWTNDZz09fC0t\nLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFb2pDQ0Fvb0NDUUM4SDVjR0ozWGRwREFOQmdr\ncWhraUc5dzBCQVFVRkFEQVRNUkV3RHdZRFZRUUREQWd4Ck1DNHdMakV1T0RBZUZ3MHhOREV3TWpJ\nd01qQTVOVFJhRncweE5URXdNakl3TWpBNU5UUmFNQk14RVRBUEJnTlYKQkFNTUNERXdMakF1TVM0\nNE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBOFgyUQpaTldrV0ZU\ncU5EZlZBZnpnSTdkV3RwOVNadENWWGVoYnFpUVprRkJHRTRQQUs3TDVCb0lycnI2YlBNN09vZVh6\nClVjSWd1cXI0WFpXVkpXTHF5NThxaTkxanBjdzRlcFNmMVBHNlhXdGVPdy9ZUTk5Um9YaFA3L0pN\nTWhXQTlwZk0KWjFNZnAwcFhpc1o0TURPak5YNjRUdnVtNVlQN3RmYjROaENqakZTZGcwRlRIa1hp\nL0I1YmM3TWMrdUVqbmNhcAplZ1M5bWRhVFZZdStPaWt4ZHJmTnRLYmtFWmN6NlJkQTIvMFd6RWVY\nRFdUNEtVeFpwdzJlT0pQcWpablFzMzVtCm5SN2VyVDFIS3htN2IreU1HODY5NEYrQ1RsSnMyT0Va\nc0FGYURmaFdTVitGUUk2V3VtdzB0WFNvNTBwTE94LzYKSkQyY3FoclhQRWVka3BVZ0NSek9JU0Jt\nN1AvYkNhSW9qOTRSRE9Memd6ZFdpM0xyS1Nuak8zdy81NVRNTm1mZwo4WW0xQld4b0xFR1MyQkM1\nK0hNM0VqWGRhM2V3ZUk0TFpYbEE3TVVCY0JMQm11VnJhSEtoTWFPSkJYTmtyNVF1CkQ0WVFvREdh\nY08yVHhqMFJEWXFsVmxqVXFDam8yU1YxYkFDZ1Fwdm1RNWhwQ1B2NW9HYS9DYTBxRnFqSkxmaWUK\nbjZOUExYS04xNXAxWXBjV1JIZzRLWUkzTkRvSGtJNFRrTy9ncXVqQ1VETVFYaUJnQlFxQUZHSGNR\nTFBwb2R2QQpIRnhFV3liTmZtMlNzM3VEZno1U1BTdGdGTXl0NnBMVGMyNlpvT1B0YTkwendnM0pa\nR01US1d5WEwySjJhRFVqCkU2aEFLVHpaM1Exa3c3QkF6eHJLci9kME4yZVNBdzhNWmR3Y24vY0NB\nd0VBQVRBTkJna3Foa2lHOXcwQkFRVUYKQUFPQ0FnRUFva1A3YXdKNE04UFNKQk4rU0VLTDJ0bDlS\nM2lVUWROSDVZSkQ0dWRwYkxYMXFxVTZPa1JnMGNlaQo2bFZvcTZPQmNobDFUKzhPU3pVLzFSZXQy\nTUtNeitSYm5YK0VNVGM3RFJYcjJOOFZZRHdSSXNPY29Bb0FNeWR0CnFuRW1HeGMwNVBKVERhZWUr\nWFBuUkZ5VURuYTYrM2NHYTM4U3hnSUlmQmFHb1IxOFpLNmprRFhyMlhTMEEwRW4KV1kxeW9TK0F4\nYjRLMS9nbmpMNEphR3ZHdUpqOG53V3BaaVFXMlQ0aXFpdW9ZaDNXMkdvQnRBSFNQSStwcTU5NQp1\nMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXVlMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXk0MU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaVGRPVG5ERQp3WW9HazhNOEprRzNhZHlteUZNME5wdGZxNWR6SVpxclA0\nVkNiSjJzdU5PVW44cjBPWlNnQkVzVUQ3ajE0a3hZCmY5VDd6NWllcTdSZVBtQm5RMHBFWStOeHNW\nejJuKzEvZDNTcDhKeC9LVlNiNEpBM3l0KzdsS0R0UFZ6NjREWjAKcHI3UjEzWW5FZGxudzk5T2E0\ndVpWRk9vemtZcHdyb01PWFR4UlY3czJieFlHODBjRHlvSmYzcFhkZC9LVXBSSgpLVkxUa1JvMlo3\nUzAzYlJxc01iMTNkQzBpZkNSSnl2aGtPQVZPRm00K25kQVNneG12eEk9Ci0tLS0tRU5EIENFUlRJ\nRklDQVRFLS0tLS0K"
}
13 changes: 13 additions & 0 deletions spec/support/fixtures/deployment_targets_representation.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,19 @@
"id": 1,
"name": "Socialize staging environment",
"endpoint_url": "https://foo.host",
"metadata": {
"agent_version": "0.1.0",
"adapter_type": "Test Orchestrator",
"adapter_version": "0.2.0",
"created_at": "2014-11-06T17:32:47.255+00:00"
},
"auth_blob": "aHR0cHM6Ly8xMC4wLjEuODozMDAxfGEyNjNkNWEyLTVkNDUtNGUxNy1iNDQ3LTQ2MGM3YzcwODIy\nNXxNRE15TXpaall6TXROVE5oWXkwME56VXpMV0V6Wm1FdE0yRTJOV1UyTUdRNE1HWTNDZz09fC0t\nLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFb2pDQ0Fvb0NDUUM4SDVjR0ozWGRwREFOQmdr\ncWhraUc5dzBCQVFVRkFEQVRNUkV3RHdZRFZRUUREQWd4Ck1DNHdMakV1T0RBZUZ3MHhOREV3TWpJ\nd01qQTVOVFJhRncweE5URXdNakl3TWpBNU5UUmFNQk14RVRBUEJnTlYKQkFNTUNERXdMakF1TVM0\nNE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBOFgyUQpaTldrV0ZU\ncU5EZlZBZnpnSTdkV3RwOVNadENWWGVoYnFpUVprRkJHRTRQQUs3TDVCb0lycnI2YlBNN09vZVh6\nClVjSWd1cXI0WFpXVkpXTHF5NThxaTkxanBjdzRlcFNmMVBHNlhXdGVPdy9ZUTk5Um9YaFA3L0pN\nTWhXQTlwZk0KWjFNZnAwcFhpc1o0TURPak5YNjRUdnVtNVlQN3RmYjROaENqakZTZGcwRlRIa1hp\nL0I1YmM3TWMrdUVqbmNhcAplZ1M5bWRhVFZZdStPaWt4ZHJmTnRLYmtFWmN6NlJkQTIvMFd6RWVY\nRFdUNEtVeFpwdzJlT0pQcWpablFzMzVtCm5SN2VyVDFIS3htN2IreU1HODY5NEYrQ1RsSnMyT0Va\nc0FGYURmaFdTVitGUUk2V3VtdzB0WFNvNTBwTE94LzYKSkQyY3FoclhQRWVka3BVZ0NSek9JU0Jt\nN1AvYkNhSW9qOTRSRE9Memd6ZFdpM0xyS1Nuak8zdy81NVRNTm1mZwo4WW0xQld4b0xFR1MyQkM1\nK0hNM0VqWGRhM2V3ZUk0TFpYbEE3TVVCY0JMQm11VnJhSEtoTWFPSkJYTmtyNVF1CkQ0WVFvREdh\nY08yVHhqMFJEWXFsVmxqVXFDam8yU1YxYkFDZ1Fwdm1RNWhwQ1B2NW9HYS9DYTBxRnFqSkxmaWUK\nbjZOUExYS04xNXAxWXBjV1JIZzRLWUkzTkRvSGtJNFRrTy9ncXVqQ1VETVFYaUJnQlFxQUZHSGNR\nTFBwb2R2QQpIRnhFV3liTmZtMlNzM3VEZno1U1BTdGdGTXl0NnBMVGMyNlpvT1B0YTkwendnM0pa\nR01US1d5WEwySjJhRFVqCkU2aEFLVHpaM1Exa3c3QkF6eHJLci9kME4yZVNBdzhNWmR3Y24vY0NB\nd0VBQVRBTkJna3Foa2lHOXcwQkFRVUYKQUFPQ0FnRUFva1A3YXdKNE04UFNKQk4rU0VLTDJ0bDlS\nM2lVUWROSDVZSkQ0dWRwYkxYMXFxVTZPa1JnMGNlaQo2bFZvcTZPQmNobDFUKzhPU3pVLzFSZXQy\nTUtNeitSYm5YK0VNVGM3RFJYcjJOOFZZRHdSSXNPY29Bb0FNeWR0CnFuRW1HeGMwNVBKVERhZWUr\nWFBuUkZ5VURuYTYrM2NHYTM4U3hnSUlmQmFHb1IxOFpLNmprRFhyMlhTMEEwRW4KV1kxeW9TK0F4\nYjRLMS9nbmpMNEphR3ZHdUpqOG53V3BaaVFXMlQ0aXFpdW9ZaDNXMkdvQnRBSFNQSStwcTU5NQp1\nMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXVlMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXk0MU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaVGRPVG5ERQp3WW9HazhNOEprRzNhZHlteUZNME5wdGZxNWR6SVpxclA0\nVkNiSjJzdU5PVW44cjBPWlNnQkVzVUQ3ajE0a3hZCmY5VDd6NWllcTdSZVBtQm5RMHBFWStOeHNW\nejJuKzEvZDNTcDhKeC9LVlNiNEpBM3l0KzdsS0R0UFZ6NjREWjAKcHI3UjEzWW5FZGxudzk5T2E0\ndVpWRk9vemtZcHdyb01PWFR4UlY3czJieFlHODBjRHlvSmYzcFhkZC9LVXBSSgpLVkxUa1JvMlo3\nUzAzYlJxc01iMTNkQzBpZkNSSnl2aGtPQVZPRm00K25kQVNneG12eEk9Ci0tLS0tRU5EIENFUlRJ\nRklDQVRFLS0tLS0K"
},
{
"id": 2,
"name": "Brand new target",
"endpoint_url": "https://example.com/new",
"metadata": null,
"auth_blob": "aHR0cHM6Ly8xMC4wLjEuODozMDAxfGEyNjNkNWEyLTVkNDUtNGUxNy1iNDQ3LTQ2MGM3YzcwODIy\nNXxNRE15TXpaall6TXROVE5oWXkwME56VXpMV0V6Wm1FdE0yRTJOV1UyTUdRNE1HWTNDZz09fC0t\nLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFb2pDQ0Fvb0NDUUM4SDVjR0ozWGRwREFOQmdr\ncWhraUc5dzBCQVFVRkFEQVRNUkV3RHdZRFZRUUREQWd4Ck1DNHdMakV1T0RBZUZ3MHhOREV3TWpJ\nd01qQTVOVFJhRncweE5URXdNakl3TWpBNU5UUmFNQk14RVRBUEJnTlYKQkFNTUNERXdMakF1TVM0\nNE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBOFgyUQpaTldrV0ZU\ncU5EZlZBZnpnSTdkV3RwOVNadENWWGVoYnFpUVprRkJHRTRQQUs3TDVCb0lycnI2YlBNN09vZVh6\nClVjSWd1cXI0WFpXVkpXTHF5NThxaTkxanBjdzRlcFNmMVBHNlhXdGVPdy9ZUTk5Um9YaFA3L0pN\nTWhXQTlwZk0KWjFNZnAwcFhpc1o0TURPak5YNjRUdnVtNVlQN3RmYjROaENqakZTZGcwRlRIa1hp\nL0I1YmM3TWMrdUVqbmNhcAplZ1M5bWRhVFZZdStPaWt4ZHJmTnRLYmtFWmN6NlJkQTIvMFd6RWVY\nRFdUNEtVeFpwdzJlT0pQcWpablFzMzVtCm5SN2VyVDFIS3htN2IreU1HODY5NEYrQ1RsSnMyT0Va\nc0FGYURmaFdTVitGUUk2V3VtdzB0WFNvNTBwTE94LzYKSkQyY3FoclhQRWVka3BVZ0NSek9JU0Jt\nN1AvYkNhSW9qOTRSRE9Memd6ZFdpM0xyS1Nuak8zdy81NVRNTm1mZwo4WW0xQld4b0xFR1MyQkM1\nK0hNM0VqWGRhM2V3ZUk0TFpYbEE3TVVCY0JMQm11VnJhSEtoTWFPSkJYTmtyNVF1CkQ0WVFvREdh\nY08yVHhqMFJEWXFsVmxqVXFDam8yU1YxYkFDZ1Fwdm1RNWhwQ1B2NW9HYS9DYTBxRnFqSkxmaWUK\nbjZOUExYS04xNXAxWXBjV1JIZzRLWUkzTkRvSGtJNFRrTy9ncXVqQ1VETVFYaUJnQlFxQUZHSGNR\nTFBwb2R2QQpIRnhFV3liTmZtMlNzM3VEZno1U1BTdGdGTXl0NnBMVGMyNlpvT1B0YTkwendnM0pa\nR01US1d5WEwySjJhRFVqCkU2aEFLVHpaM1Exa3c3QkF6eHJLci9kME4yZVNBdzhNWmR3Y24vY0NB\nd0VBQVRBTkJna3Foa2lHOXcwQkFRVUYKQUFPQ0FnRUFva1A3YXdKNE04UFNKQk4rU0VLTDJ0bDlS\nM2lVUWROSDVZSkQ0dWRwYkxYMXFxVTZPa1JnMGNlaQo2bFZvcTZPQmNobDFUKzhPU3pVLzFSZXQy\nTUtNeitSYm5YK0VNVGM3RFJYcjJOOFZZRHdSSXNPY29Bb0FNeWR0CnFuRW1HeGMwNVBKVERhZWUr\nWFBuUkZ5VURuYTYrM2NHYTM4U3hnSUlmQmFHb1IxOFpLNmprRFhyMlhTMEEwRW4KV1kxeW9TK0F4\nYjRLMS9nbmpMNEphR3ZHdUpqOG53V3BaaVFXMlQ0aXFpdW9ZaDNXMkdvQnRBSFNQSStwcTU5NQp1\nMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXVlMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXk0MU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaXdBd2U5TkM4MFBNNGFMU1FaVGRPVG5ERQp3WW9HazhNOEprRzNhZHlteUZNME5wdGZxNWR6SVpxclA0\nVkNiSjJzdU5PVW44cjBPWlNnQkVzVUQ3ajE0a3hZCmY5VDd6NWllcTdSZVBtQm5RMHBFWStOeHNW\nejJuKzEvZDNTcDhKeC9LVlNiNEpBM3l0KzdsS0R0UFZ6NjREWjAKcHI3UjEzWW5FZGxudzk5T2E0\ndVpWRk9vemtZcHdyb01PWFR4UlY3czJieFlHODBjRHlvSmYzcFhkZC9LVXBSSgpLVkxUa1JvMlo3\nUzAzYlJxc01iMTNkQzBpZkNSSnl2aGtPQVZPRm00K25kQVNneG12eEk9Ci0tLS0tRU5EIENFUlRJ\nRklDQVRFLS0tLS0K"
}
]
2 changes: 1 addition & 1 deletion vendor/ctl-base-ui

0 comments on commit 4fb640c

Please sign in to comment.