From 866ca4e49ff74ffadf8e6f6ff663a168489c2aba Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 14 Feb 2020 21:09:08 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/ci/global.gitlab-ci.yml | 8 ++ .../javascripts/monitoring/stores/actions.js | 4 +- .../monitoring/stores/mutations.js | 23 +++-- .../pages/projects/releases/edit/index.js | 2 +- .../pages/projects/releases/index/index.js | 2 +- .../app.vue => components/app_edit.vue} | 12 +-- .../app.vue => components/app_index.vue} | 4 +- .../{list => }/components/evidence_block.vue | 0 .../{list => }/components/release_block.vue | 0 .../components/release_block_assets.vue | 0 .../components/release_block_author.vue | 0 .../components/release_block_footer.vue | 0 .../components/release_block_header.vue | 0 .../components/release_block_metadata.vue | 0 .../release_block_milestone_info.vue | 0 .../components/release_block_milestones.vue | 0 .../releases/{list => }/constants.js | 0 .../javascripts/releases/detail/index.js | 19 ---- .../releases/detail/store/index.js | 14 --- app/assets/javascripts/releases/list/index.js | 24 ----- .../javascripts/releases/list/store/index.js | 14 --- app/assets/javascripts/releases/mount_edit.js | 17 ++++ .../javascripts/releases/mount_index.js | 21 +++++ .../javascripts/releases/stores/index.js | 6 ++ .../modules/detail}/actions.js | 0 .../releases/stores/modules/detail/index.js | 10 +++ .../modules/detail}/mutation_types.js | 0 .../modules/detail}/mutations.js | 0 .../store => stores/modules/detail}/state.js | 0 .../store => stores/modules/list}/actions.js | 0 .../releases/stores/modules/list/index.js | 10 +++ .../modules/list}/mutation_types.js | 0 .../modules/list}/mutations.js | 0 .../store => stores/modules/list}/state.js | 0 .../admin/application_settings_controller.rb | 10 +-- app/controllers/admin/projects_controller.rb | 2 +- app/controllers/admin/services_controller.rb | 2 +- app/controllers/projects/issues_controller.rb | 2 +- .../projects/pipeline_schedules_controller.rb | 2 +- .../registry/repositories_controller.rb | 2 +- .../projects/settings/ci_cd_controller.rb | 2 + .../settings/repository_controller.rb | 2 +- .../repositories/git_http_controller.rb | 2 +- app/helpers/analytics_navbar_helper.rb | 6 +- app/services/ci/process_build_service.rb | 8 +- .../nav/sidebar/_analytics_links.html.haml | 4 +- .../layouts/nav/sidebar/_group.html.haml | 2 +- .../layouts/nav/sidebar/_project.html.haml | 4 +- .../31526-skip-if-needed-job-skipped.yml | 5 ++ ...5487-backfill-lfs-objects-projects-sql.yml | 5 ++ ...v-object_builder_convert_empty_strings.yml | 6 ++ .../jcunha-update-managed-apps-template.yml | 5 ++ .../toggle-analytics-navbar-feature-flags.yml | 5 ++ ...0200210062432_schedule_link_lfs_objects.rb | 38 ++++++++ .../group/contribution_analytics/index.md | 2 +- .../insights/img/insights_sidebar_link.png | Bin 12327 -> 0 bytes .../img/insights_sidebar_link_v12_8.png | Bin 0 -> 7773 bytes doc/user/group/insights/index.md | 4 +- .../img/issues_created_per_month.png | Bin 28508 -> 0 bytes .../img/issues_created_per_month_v12_8.png | Bin 0 -> 66854 bytes doc/user/group/issues_analytics/index.md | 4 +- .../insights/img/insights_sidebar_link.png | Bin 13776 -> 0 bytes .../img/insights_sidebar_link_v12_8.png | Bin 0 -> 11194 bytes doc/user/project/insights/index.md | 4 +- .../prometheus_dashboard_area_panel_type.png | Bin 19349 -> 0 bytes ...etheus_dashboard_area_panel_type_v12_8.png | Bin 0 -> 53370 bytes doc/user/project/integrations/prometheus.md | 6 +- doc/user/shortcuts.md | 2 +- lib/api/group_export.rb | 2 +- lib/api/group_import.rb | 2 +- lib/api/pipeline_schedules.rb | 2 +- lib/api/project_container_repositories.rb | 4 +- lib/api/releases.rb | 4 +- .../background_migration/link_lfs_objects.rb | 48 ++++++++++ ...Managed-Cluster-Applications.gitlab-ci.yml | 4 +- .../import_export/group_object_builder.rb | 9 ++ qa/qa.rb | 4 + qa/qa/page/group/menu.rb | 13 ++- qa/qa/page/group/sub_menus/common.rb | 21 ++--- qa/qa/page/project/sub_menus/common.rb | 18 ++-- qa/qa/page/sub_menus/common.rb | 50 +++++++++++ rubocop/rubocop.rb | 1 + .../security/group/internal_access_spec.rb | 8 +- .../security/group/private_access_spec.rb | 8 +- .../security/group/public_access_spec.rb | 8 +- .../security/project/internal_access_spec.rb | 18 ++-- .../security/project/private_access_spec.rb | 16 ++-- .../security/project/public_access_spec.rb | 18 ++-- .../monitoring/store/mutations_spec.js | 25 +++++- .../app_edit_spec.js} | 18 ++-- .../components/evidence_block_spec.js | 4 +- .../components/release_block_footer_spec.js | 4 +- .../components/release_block_header_spec.js | 4 +- .../release_block_milestone_info_spec.js | 6 +- .../components/release_block_spec.js | 8 +- .../modules/detail}/actions_spec.js | 8 +- .../modules/detail}/mutations_spec.js | 8 +- .../app_index_spec.js} | 11 +-- .../modules/list}/actions_spec.js | 8 +- .../store => stores/modules/list}/helpers.js | 2 +- .../modules/list}/mutations_spec.js | 8 +- .../link_lfs_objects_spec.rb | 66 ++++++++++++++ .../group_object_builder_spec.rb | 22 +++++ .../schedule_link_lfs_objects_spec.rb | 82 ++++++++++++++++++ spec/routing/project_routing_spec.rb | 16 ++-- .../shared_processing_service.rb | 25 ++++++ .../services/ci/process_build_service_spec.rb | 31 +++++++ 107 files changed, 688 insertions(+), 252 deletions(-) rename app/assets/javascripts/releases/{detail/components/app.vue => components/app_edit.vue} (94%) rename app/assets/javascripts/releases/{list/components/app.vue => components/app_index.vue} (95%) rename app/assets/javascripts/releases/{list => }/components/evidence_block.vue (100%) rename app/assets/javascripts/releases/{list => }/components/release_block.vue (100%) rename app/assets/javascripts/releases/{list => }/components/release_block_assets.vue (100%) rename app/assets/javascripts/releases/{list => }/components/release_block_author.vue (100%) rename app/assets/javascripts/releases/{list => }/components/release_block_footer.vue (100%) rename app/assets/javascripts/releases/{list => }/components/release_block_header.vue (100%) rename app/assets/javascripts/releases/{list => }/components/release_block_metadata.vue (100%) rename app/assets/javascripts/releases/{list => }/components/release_block_milestone_info.vue (100%) rename app/assets/javascripts/releases/{list => }/components/release_block_milestones.vue (100%) rename app/assets/javascripts/releases/{list => }/constants.js (100%) delete mode 100644 app/assets/javascripts/releases/detail/index.js delete mode 100644 app/assets/javascripts/releases/detail/store/index.js delete mode 100644 app/assets/javascripts/releases/list/index.js delete mode 100644 app/assets/javascripts/releases/list/store/index.js create mode 100644 app/assets/javascripts/releases/mount_edit.js create mode 100644 app/assets/javascripts/releases/mount_index.js create mode 100644 app/assets/javascripts/releases/stores/index.js rename app/assets/javascripts/releases/{detail/store => stores/modules/detail}/actions.js (100%) create mode 100644 app/assets/javascripts/releases/stores/modules/detail/index.js rename app/assets/javascripts/releases/{detail/store => stores/modules/detail}/mutation_types.js (100%) rename app/assets/javascripts/releases/{detail/store => stores/modules/detail}/mutations.js (100%) rename app/assets/javascripts/releases/{detail/store => stores/modules/detail}/state.js (100%) rename app/assets/javascripts/releases/{list/store => stores/modules/list}/actions.js (100%) create mode 100644 app/assets/javascripts/releases/stores/modules/list/index.js rename app/assets/javascripts/releases/{list/store => stores/modules/list}/mutation_types.js (100%) rename app/assets/javascripts/releases/{list/store => stores/modules/list}/mutations.js (100%) rename app/assets/javascripts/releases/{list/store => stores/modules/list}/state.js (100%) create mode 100644 changelogs/unreleased/31526-skip-if-needed-job-skipped.yml create mode 100644 changelogs/unreleased/55487-backfill-lfs-objects-projects-sql.yml create mode 100644 changelogs/unreleased/georgekoltsov-object_builder_convert_empty_strings.yml create mode 100644 changelogs/unreleased/jcunha-update-managed-apps-template.yml create mode 100644 changelogs/unreleased/toggle-analytics-navbar-feature-flags.yml create mode 100644 db/post_migrate/20200210062432_schedule_link_lfs_objects.rb delete mode 100644 doc/user/group/insights/img/insights_sidebar_link.png create mode 100644 doc/user/group/insights/img/insights_sidebar_link_v12_8.png delete mode 100644 doc/user/group/issues_analytics/img/issues_created_per_month.png create mode 100644 doc/user/group/issues_analytics/img/issues_created_per_month_v12_8.png delete mode 100644 doc/user/project/insights/img/insights_sidebar_link.png create mode 100644 doc/user/project/insights/img/insights_sidebar_link_v12_8.png delete mode 100644 doc/user/project/integrations/img/prometheus_dashboard_area_panel_type.png create mode 100644 doc/user/project/integrations/img/prometheus_dashboard_area_panel_type_v12_8.png create mode 100644 lib/gitlab/background_migration/link_lfs_objects.rb create mode 100644 qa/qa/page/sub_menus/common.rb rename spec/frontend/releases/{detail/components/app_spec.js => components/app_edit_spec.js} (89%) rename spec/frontend/releases/{list => }/components/evidence_block_spec.js (94%) rename spec/frontend/releases/{list => }/components/release_block_footer_spec.js (97%) rename spec/frontend/releases/{list => }/components/release_block_header_spec.js (90%) rename spec/frontend/releases/{list => }/components/release_block_milestone_info_spec.js (95%) rename spec/frontend/releases/{list => }/components/release_block_spec.js (97%) rename spec/frontend/releases/{detail/store => stores/modules/detail}/actions_spec.js (96%) rename spec/frontend/releases/{detail/store => stores/modules/detail}/mutations_spec.js (93%) rename spec/javascripts/releases/{list/components/app_spec.js => components/app_index_spec.js} (91%) rename spec/javascripts/releases/{list/store => stores/modules/list}/actions_spec.js (94%) rename spec/javascripts/releases/{list/store => stores/modules/list}/helpers.js (68%) rename spec/javascripts/releases/{list/store => stores/modules/list}/mutations_spec.js (86%) create mode 100644 spec/lib/gitlab/background_migration/link_lfs_objects_spec.rb create mode 100644 spec/migrations/schedule_link_lfs_objects_spec.rb diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index c18453b778c..7171f94decc 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -203,6 +203,8 @@ - name: postgres:9.6 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:alpine + variables: + POSTGRES_HOST_AUTH_METHOD: trust .use-pg10: image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-10-graphicsmagick-1.3.34" @@ -210,6 +212,8 @@ - name: postgres:10.9 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:alpine + variables: + POSTGRES_HOST_AUTH_METHOD: trust .use-pg9-ee: services: @@ -217,6 +221,8 @@ command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:alpine - name: elasticsearch:6.4.2 + variables: + POSTGRES_HOST_AUTH_METHOD: trust .use-pg10-ee: image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-10-graphicsmagick-1.3.34" @@ -225,6 +231,8 @@ command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:alpine - name: elasticsearch:6.4.2 + variables: + POSTGRES_HOST_AUTH_METHOD: trust .only-ee: only: diff --git a/app/assets/javascripts/monitoring/stores/actions.js b/app/assets/javascripts/monitoring/stores/actions.js index 3a052200ab9..8bb5047ef04 100644 --- a/app/assets/javascripts/monitoring/stores/actions.js +++ b/app/assets/javascripts/monitoring/stores/actions.js @@ -6,7 +6,7 @@ import { gqClient, parseEnvironmentsResponse, removeLeadingSlash } from './utils import trackDashboardLoad from '../monitoring_tracking_helper'; import getEnvironments from '../queries/getEnvironments.query.graphql'; import statusCodes from '../../lib/utils/http_status'; -import { backOff } from '../../lib/utils/common_utils'; +import { backOff, convertObjectPropsToCamelCase } from '../../lib/utils/common_utils'; import { s__, sprintf } from '../../locale'; import { PROMETHEUS_TIMEOUT } from '../constants'; @@ -52,6 +52,8 @@ export const requestMetricsDashboard = ({ commit }) => { export const receiveMetricsDashboardSuccess = ({ commit, dispatch }, { response, params }) => { commit(types.SET_ALL_DASHBOARDS, response.all_dashboards); commit(types.RECEIVE_METRICS_DATA_SUCCESS, response.dashboard); + commit(types.SET_ENDPOINTS, convertObjectPropsToCamelCase(response.metrics_data)); + return dispatch('fetchPrometheusMetrics', params); }; export const receiveMetricsDashboardFailure = ({ commit }, error) => { diff --git a/app/assets/javascripts/monitoring/stores/mutations.js b/app/assets/javascripts/monitoring/stores/mutations.js index 5f559290ff7..8bd53a24b61 100644 --- a/app/assets/javascripts/monitoring/stores/mutations.js +++ b/app/assets/javascripts/monitoring/stores/mutations.js @@ -1,4 +1,5 @@ import Vue from 'vue'; +import pick from 'lodash/pick'; import { slugify } from '~/lib/utils/text_utility'; import * as types from './mutation_types'; import { normalizeMetric, normalizeQueryResult } from './utils'; @@ -174,15 +175,19 @@ export default { state: emptyStateFromError(error), }); }, - - [types.SET_ENDPOINTS](state, endpoints) { - state.metricsEndpoint = endpoints.metricsEndpoint; - state.deploymentsEndpoint = endpoints.deploymentsEndpoint; - state.dashboardEndpoint = endpoints.dashboardEndpoint; - state.dashboardsEndpoint = endpoints.dashboardsEndpoint; - state.currentDashboard = endpoints.currentDashboard; - state.projectPath = endpoints.projectPath; - state.logsPath = endpoints.logsPath || state.logsPath; + [types.SET_ENDPOINTS](state, endpoints = {}) { + const endpointKeys = [ + 'metricsEndpoint', + 'deploymentsEndpoint', + 'dashboardEndpoint', + 'dashboardsEndpoint', + 'currentDashboard', + 'projectPath', + 'logsPath', + ]; + Object.entries(pick(endpoints, endpointKeys)).forEach(([key, value]) => { + state[key] = value; + }); }, [types.SET_TIME_RANGE](state, timeRange) { state.timeRange = timeRange; diff --git a/app/assets/javascripts/pages/projects/releases/edit/index.js b/app/assets/javascripts/pages/projects/releases/edit/index.js index 98ec196fc37..efa059dcd6d 100644 --- a/app/assets/javascripts/pages/projects/releases/edit/index.js +++ b/app/assets/javascripts/pages/projects/releases/edit/index.js @@ -1,5 +1,5 @@ import ZenMode from '~/zen_mode'; -import initEditRelease from '~/releases/detail'; +import initEditRelease from '~/releases/mount_edit'; document.addEventListener('DOMContentLoaded', () => { new ZenMode(); // eslint-disable-line no-new diff --git a/app/assets/javascripts/pages/projects/releases/index/index.js b/app/assets/javascripts/pages/projects/releases/index/index.js index 6402023149f..24c9cd528b3 100644 --- a/app/assets/javascripts/pages/projects/releases/index/index.js +++ b/app/assets/javascripts/pages/projects/releases/index/index.js @@ -1,3 +1,3 @@ -import initReleases from '~/releases/list'; +import initReleases from '~/releases/mount_index'; document.addEventListener('DOMContentLoaded', initReleases); diff --git a/app/assets/javascripts/releases/detail/components/app.vue b/app/assets/javascripts/releases/components/app_edit.vue similarity index 94% rename from app/assets/javascripts/releases/detail/components/app.vue rename to app/assets/javascripts/releases/components/app_edit.vue index 073cfcd7694..bdc2b3abb8c 100644 --- a/app/assets/javascripts/releases/detail/components/app.vue +++ b/app/assets/javascripts/releases/components/app_edit.vue @@ -7,7 +7,7 @@ import MarkdownField from '~/vue_shared/components/markdown/field.vue'; import autofocusonshow from '~/vue_shared/directives/autofocusonshow'; export default { - name: 'ReleaseDetailApp', + name: 'ReleaseEditApp', components: { GlFormInput, GlFormGroup, @@ -18,7 +18,7 @@ export default { autofocusonshow, }, computed: { - ...mapState([ + ...mapState('detail', [ 'isFetchingRelease', 'fetchError', 'markdownDocsPath', @@ -42,7 +42,7 @@ export default { ); }, tagName() { - return this.$store.state.release.tagName; + return this.$store.state.detail.release.tagName; }, tagNameHintText() { return sprintf( @@ -60,7 +60,7 @@ export default { }, releaseTitle: { get() { - return this.$store.state.release.name; + return this.$store.state.detail.release.name; }, set(title) { this.updateReleaseTitle(title); @@ -68,7 +68,7 @@ export default { }, releaseNotes: { get() { - return this.$store.state.release.description; + return this.$store.state.detail.release.description; }, set(notes) { this.updateReleaseNotes(notes); @@ -79,7 +79,7 @@ export default { this.fetchRelease(); }, methods: { - ...mapActions([ + ...mapActions('detail', [ 'fetchRelease', 'updateRelease', 'updateReleaseTitle', diff --git a/app/assets/javascripts/releases/list/components/app.vue b/app/assets/javascripts/releases/components/app_index.vue similarity index 95% rename from app/assets/javascripts/releases/list/components/app.vue rename to app/assets/javascripts/releases/components/app_index.vue index eb63e709ebd..f602c9fdda2 100644 --- a/app/assets/javascripts/releases/list/components/app.vue +++ b/app/assets/javascripts/releases/components/app_index.vue @@ -32,7 +32,7 @@ export default { }, }, computed: { - ...mapState(['isLoading', 'releases', 'hasError', 'pageInfo']), + ...mapState('list', ['isLoading', 'releases', 'hasError', 'pageInfo']), shouldRenderEmptyState() { return !this.releases.length && !this.hasError && !this.isLoading; }, @@ -47,7 +47,7 @@ export default { }); }, methods: { - ...mapActions(['fetchReleases']), + ...mapActions('list', ['fetchReleases']), onChangePage(page) { historyPushState(buildUrlWithCurrentLocation(`?page=${page}`)); this.fetchReleases({ page, projectId: this.projectId }); diff --git a/app/assets/javascripts/releases/list/components/evidence_block.vue b/app/assets/javascripts/releases/components/evidence_block.vue similarity index 100% rename from app/assets/javascripts/releases/list/components/evidence_block.vue rename to app/assets/javascripts/releases/components/evidence_block.vue diff --git a/app/assets/javascripts/releases/list/components/release_block.vue b/app/assets/javascripts/releases/components/release_block.vue similarity index 100% rename from app/assets/javascripts/releases/list/components/release_block.vue rename to app/assets/javascripts/releases/components/release_block.vue diff --git a/app/assets/javascripts/releases/list/components/release_block_assets.vue b/app/assets/javascripts/releases/components/release_block_assets.vue similarity index 100% rename from app/assets/javascripts/releases/list/components/release_block_assets.vue rename to app/assets/javascripts/releases/components/release_block_assets.vue diff --git a/app/assets/javascripts/releases/list/components/release_block_author.vue b/app/assets/javascripts/releases/components/release_block_author.vue similarity index 100% rename from app/assets/javascripts/releases/list/components/release_block_author.vue rename to app/assets/javascripts/releases/components/release_block_author.vue diff --git a/app/assets/javascripts/releases/list/components/release_block_footer.vue b/app/assets/javascripts/releases/components/release_block_footer.vue similarity index 100% rename from app/assets/javascripts/releases/list/components/release_block_footer.vue rename to app/assets/javascripts/releases/components/release_block_footer.vue diff --git a/app/assets/javascripts/releases/list/components/release_block_header.vue b/app/assets/javascripts/releases/components/release_block_header.vue similarity index 100% rename from app/assets/javascripts/releases/list/components/release_block_header.vue rename to app/assets/javascripts/releases/components/release_block_header.vue diff --git a/app/assets/javascripts/releases/list/components/release_block_metadata.vue b/app/assets/javascripts/releases/components/release_block_metadata.vue similarity index 100% rename from app/assets/javascripts/releases/list/components/release_block_metadata.vue rename to app/assets/javascripts/releases/components/release_block_metadata.vue diff --git a/app/assets/javascripts/releases/list/components/release_block_milestone_info.vue b/app/assets/javascripts/releases/components/release_block_milestone_info.vue similarity index 100% rename from app/assets/javascripts/releases/list/components/release_block_milestone_info.vue rename to app/assets/javascripts/releases/components/release_block_milestone_info.vue diff --git a/app/assets/javascripts/releases/list/components/release_block_milestones.vue b/app/assets/javascripts/releases/components/release_block_milestones.vue similarity index 100% rename from app/assets/javascripts/releases/list/components/release_block_milestones.vue rename to app/assets/javascripts/releases/components/release_block_milestones.vue diff --git a/app/assets/javascripts/releases/list/constants.js b/app/assets/javascripts/releases/constants.js similarity index 100% rename from app/assets/javascripts/releases/list/constants.js rename to app/assets/javascripts/releases/constants.js diff --git a/app/assets/javascripts/releases/detail/index.js b/app/assets/javascripts/releases/detail/index.js deleted file mode 100644 index 0dab90a1ede..00000000000 --- a/app/assets/javascripts/releases/detail/index.js +++ /dev/null @@ -1,19 +0,0 @@ -import Vue from 'vue'; -import ReleaseDetailApp from './components/app.vue'; -import createStore from './store'; - -export default () => { - const el = document.getElementById('js-edit-release-page'); - - const store = createStore(); - store.dispatch('setInitialState', el.dataset); - - return new Vue({ - el, - store, - components: { ReleaseDetailApp }, - render(createElement) { - return createElement('release-detail-app'); - }, - }); -}; diff --git a/app/assets/javascripts/releases/detail/store/index.js b/app/assets/javascripts/releases/detail/store/index.js deleted file mode 100644 index e8623a49356..00000000000 --- a/app/assets/javascripts/releases/detail/store/index.js +++ /dev/null @@ -1,14 +0,0 @@ -import Vue from 'vue'; -import Vuex from 'vuex'; -import * as actions from './actions'; -import mutations from './mutations'; -import state from './state'; - -Vue.use(Vuex); - -export default () => - new Vuex.Store({ - actions, - mutations, - state, - }); diff --git a/app/assets/javascripts/releases/list/index.js b/app/assets/javascripts/releases/list/index.js deleted file mode 100644 index adbed3cb8e2..00000000000 --- a/app/assets/javascripts/releases/list/index.js +++ /dev/null @@ -1,24 +0,0 @@ -import Vue from 'vue'; -import App from './components/app.vue'; -import createStore from './store'; - -export default () => { - const element = document.getElementById('js-releases-page'); - - return new Vue({ - el: element, - store: createStore(), - components: { - App, - }, - render(createElement) { - return createElement('app', { - props: { - projectId: element.dataset.projectId, - documentationLink: element.dataset.documentationPath, - illustrationPath: element.dataset.illustrationPath, - }, - }); - }, - }); -}; diff --git a/app/assets/javascripts/releases/list/store/index.js b/app/assets/javascripts/releases/list/store/index.js deleted file mode 100644 index 968b94f0e0d..00000000000 --- a/app/assets/javascripts/releases/list/store/index.js +++ /dev/null @@ -1,14 +0,0 @@ -import Vue from 'vue'; -import Vuex from 'vuex'; -import state from './state'; -import * as actions from './actions'; -import mutations from './mutations'; - -Vue.use(Vuex); - -export default () => - new Vuex.Store({ - actions, - mutations, - state: state(), - }); diff --git a/app/assets/javascripts/releases/mount_edit.js b/app/assets/javascripts/releases/mount_edit.js new file mode 100644 index 00000000000..343de8c56d3 --- /dev/null +++ b/app/assets/javascripts/releases/mount_edit.js @@ -0,0 +1,17 @@ +import Vue from 'vue'; +import ReleaseEditApp from './components/app_edit.vue'; +import createStore from './stores'; +import detailModule from './stores/modules/detail'; + +export default () => { + const el = document.getElementById('js-edit-release-page'); + + const store = createStore({ detail: detailModule }); + store.dispatch('setInitialState', el.dataset); + + return new Vue({ + el, + store, + render: h => h(ReleaseEditApp), + }); +}; diff --git a/app/assets/javascripts/releases/mount_index.js b/app/assets/javascripts/releases/mount_index.js new file mode 100644 index 00000000000..6fcb6d802e4 --- /dev/null +++ b/app/assets/javascripts/releases/mount_index.js @@ -0,0 +1,21 @@ +import Vue from 'vue'; +import ReleaseListApp from './components/app_index.vue'; +import createStore from './stores'; +import listModule from './stores/modules/list'; + +export default () => { + const el = document.getElementById('js-releases-page'); + + return new Vue({ + el, + store: createStore({ list: listModule }), + render: h => + h(ReleaseListApp, { + props: { + projectId: el.dataset.projectId, + documentationLink: el.dataset.documentationPath, + illustrationPath: el.dataset.illustrationPath, + }, + }), + }); +}; diff --git a/app/assets/javascripts/releases/stores/index.js b/app/assets/javascripts/releases/stores/index.js new file mode 100644 index 00000000000..aa607906a0e --- /dev/null +++ b/app/assets/javascripts/releases/stores/index.js @@ -0,0 +1,6 @@ +import Vue from 'vue'; +import Vuex from 'vuex'; + +Vue.use(Vuex); + +export default modules => new Vuex.Store({ modules }); diff --git a/app/assets/javascripts/releases/detail/store/actions.js b/app/assets/javascripts/releases/stores/modules/detail/actions.js similarity index 100% rename from app/assets/javascripts/releases/detail/store/actions.js rename to app/assets/javascripts/releases/stores/modules/detail/actions.js diff --git a/app/assets/javascripts/releases/stores/modules/detail/index.js b/app/assets/javascripts/releases/stores/modules/detail/index.js new file mode 100644 index 00000000000..243c2389d8c --- /dev/null +++ b/app/assets/javascripts/releases/stores/modules/detail/index.js @@ -0,0 +1,10 @@ +import * as actions from './actions'; +import mutations from './mutations'; +import state from './state'; + +export default { + namespaced: true, + actions, + mutations, + state, +}; diff --git a/app/assets/javascripts/releases/detail/store/mutation_types.js b/app/assets/javascripts/releases/stores/modules/detail/mutation_types.js similarity index 100% rename from app/assets/javascripts/releases/detail/store/mutation_types.js rename to app/assets/javascripts/releases/stores/modules/detail/mutation_types.js diff --git a/app/assets/javascripts/releases/detail/store/mutations.js b/app/assets/javascripts/releases/stores/modules/detail/mutations.js similarity index 100% rename from app/assets/javascripts/releases/detail/store/mutations.js rename to app/assets/javascripts/releases/stores/modules/detail/mutations.js diff --git a/app/assets/javascripts/releases/detail/store/state.js b/app/assets/javascripts/releases/stores/modules/detail/state.js similarity index 100% rename from app/assets/javascripts/releases/detail/store/state.js rename to app/assets/javascripts/releases/stores/modules/detail/state.js diff --git a/app/assets/javascripts/releases/list/store/actions.js b/app/assets/javascripts/releases/stores/modules/list/actions.js similarity index 100% rename from app/assets/javascripts/releases/list/store/actions.js rename to app/assets/javascripts/releases/stores/modules/list/actions.js diff --git a/app/assets/javascripts/releases/stores/modules/list/index.js b/app/assets/javascripts/releases/stores/modules/list/index.js new file mode 100644 index 00000000000..e4633b15a0c --- /dev/null +++ b/app/assets/javascripts/releases/stores/modules/list/index.js @@ -0,0 +1,10 @@ +import state from './state'; +import * as actions from './actions'; +import mutations from './mutations'; + +export default { + namespaced: true, + actions, + mutations, + state, +}; diff --git a/app/assets/javascripts/releases/list/store/mutation_types.js b/app/assets/javascripts/releases/stores/modules/list/mutation_types.js similarity index 100% rename from app/assets/javascripts/releases/list/store/mutation_types.js rename to app/assets/javascripts/releases/stores/modules/list/mutation_types.js diff --git a/app/assets/javascripts/releases/list/store/mutations.js b/app/assets/javascripts/releases/stores/modules/list/mutations.js similarity index 100% rename from app/assets/javascripts/releases/list/store/mutations.js rename to app/assets/javascripts/releases/stores/modules/list/mutations.js diff --git a/app/assets/javascripts/releases/list/store/state.js b/app/assets/javascripts/releases/stores/modules/list/state.js similarity index 100% rename from app/assets/javascripts/releases/list/store/state.js rename to app/assets/javascripts/releases/stores/modules/list/state.js diff --git a/app/controllers/admin/application_settings_controller.rb b/app/controllers/admin/application_settings_controller.rb index 8a583e16c0b..54c9bde067d 100644 --- a/app/controllers/admin/application_settings_controller.rb +++ b/app/controllers/admin/application_settings_controller.rb @@ -56,7 +56,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController end def clear_repository_check_states - RepositoryCheck::ClearWorker.perform_async + RepositoryCheck::ClearWorker.perform_async # rubocop:disable CodeReuse/Worker redirect_to( general_admin_application_settings_path, @@ -73,7 +73,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController # Specs are in spec/requests/self_monitoring_project_spec.rb def create_self_monitoring_project - job_id = SelfMonitoringProjectCreateWorker.perform_async + job_id = SelfMonitoringProjectCreateWorker.perform_async # rubocop:disable CodeReuse/Worker render status: :accepted, json: { job_id: job_id, @@ -92,7 +92,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController } end - if SelfMonitoringProjectCreateWorker.in_progress?(job_id) + if SelfMonitoringProjectCreateWorker.in_progress?(job_id) # rubocop:disable CodeReuse/Worker ::Gitlab::PollingInterval.set_header(response, interval: 3_000) return render status: :accepted, json: { @@ -112,7 +112,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController # Specs are in spec/requests/self_monitoring_project_spec.rb def delete_self_monitoring_project - job_id = SelfMonitoringProjectDeleteWorker.perform_async + job_id = SelfMonitoringProjectDeleteWorker.perform_async # rubocop:disable CodeReuse/Worker render status: :accepted, json: { job_id: job_id, @@ -131,7 +131,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController } end - if SelfMonitoringProjectDeleteWorker.in_progress?(job_id) + if SelfMonitoringProjectDeleteWorker.in_progress?(job_id) # rubocop:disable CodeReuse/Worker ::Gitlab::PollingInterval.set_header(response, interval: 3_000) return render status: :accepted, json: { diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb index cdedc34e634..7015da8bd50 100644 --- a/app/controllers/admin/projects_controller.rb +++ b/app/controllers/admin/projects_controller.rb @@ -55,7 +55,7 @@ class Admin::ProjectsController < Admin::ApplicationController # rubocop: enable CodeReuse/ActiveRecord def repository_check - RepositoryCheck::SingleRepositoryWorker.perform_async(@project.id) + RepositoryCheck::SingleRepositoryWorker.perform_async(@project.id) # rubocop:disable CodeReuse/Worker redirect_to( admin_project_path(@project), diff --git a/app/controllers/admin/services_controller.rb b/app/controllers/admin/services_controller.rb index e31e0e09978..50b79cde5c5 100644 --- a/app/controllers/admin/services_controller.rb +++ b/app/controllers/admin/services_controller.rb @@ -19,7 +19,7 @@ class Admin::ServicesController < Admin::ApplicationController def update if service.update(service_params[:service]) - PropagateServiceTemplateWorker.perform_async(service.id) if service.active? + PropagateServiceTemplateWorker.perform_async(service.id) if service.active? # rubocop:disable CodeReuse/Worker redirect_to admin_application_settings_services_path, notice: 'Application settings saved successfully' diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb index 0944d7b47bf..35f803302eb 100644 --- a/app/controllers/projects/issues_controller.rb +++ b/app/controllers/projects/issues_controller.rb @@ -188,7 +188,7 @@ class Projects::IssuesController < Projects::ApplicationController def import_csv if uploader = UploadService.new(project, params[:file]).execute - ImportIssuesCsvWorker.perform_async(current_user.id, project.id, uploader.upload.id) + ImportIssuesCsvWorker.perform_async(current_user.id, project.id, uploader.upload.id) # rubocop:disable CodeReuse/Worker flash[:notice] = _("Your issues are being imported. Once finished, you'll get a confirmation email.") else diff --git a/app/controllers/projects/pipeline_schedules_controller.rb b/app/controllers/projects/pipeline_schedules_controller.rb index 6a7e2b69652..ead839e8441 100644 --- a/app/controllers/projects/pipeline_schedules_controller.rb +++ b/app/controllers/projects/pipeline_schedules_controller.rb @@ -47,7 +47,7 @@ class Projects::PipelineSchedulesController < Projects::ApplicationController end def play - job_id = RunPipelineScheduleWorker.perform_async(schedule.id, current_user.id) + job_id = RunPipelineScheduleWorker.perform_async(schedule.id, current_user.id) # rubocop:disable CodeReuse/Worker if job_id pipelines_link_start = "" diff --git a/app/controllers/projects/registry/repositories_controller.rb b/app/controllers/projects/registry/repositories_controller.rb index b31a74540e2..e524d1c29a2 100644 --- a/app/controllers/projects/registry/repositories_controller.rb +++ b/app/controllers/projects/registry/repositories_controller.rb @@ -32,7 +32,7 @@ module Projects end def destroy - DeleteContainerRepositoryWorker.perform_async(current_user.id, image.id) + DeleteContainerRepositoryWorker.perform_async(current_user.id, image.id) # rubocop:disable CodeReuse/Worker track_event(:delete_repository) respond_to do |format| diff --git a/app/controllers/projects/settings/ci_cd_controller.rb b/app/controllers/projects/settings/ci_cd_controller.rb index 6af815b8daa..bf0c2d885f8 100644 --- a/app/controllers/projects/settings/ci_cd_controller.rb +++ b/app/controllers/projects/settings/ci_cd_controller.rb @@ -69,7 +69,9 @@ module Projects return end + # rubocop:disable CodeReuse/Worker CreatePipelineWorker.perform_async(project.id, current_user.id, project.default_branch, :web, ignore_skip_ci: true, save_on_errors: false) + # rubocop:enable CodeReuse/Worker pipelines_link_start = ''.html_safe % { url: project_pipelines_path(@project) } flash[:toast] = _("A new Auto DevOps pipeline has been created, go to %{pipelines_link_start}Pipelines page%{pipelines_link_end} for details") % { pipelines_link_start: pipelines_link_start, pipelines_link_end: "".html_safe } diff --git a/app/controllers/projects/settings/repository_controller.rb b/app/controllers/projects/settings/repository_controller.rb index 0c634bbea03..63f5d5073a7 100644 --- a/app/controllers/projects/settings/repository_controller.rb +++ b/app/controllers/projects/settings/repository_controller.rb @@ -25,7 +25,7 @@ module Projects result = Projects::UpdateService.new(project, current_user, cleanup_params).execute if result[:status] == :success - RepositoryCleanupWorker.perform_async(project.id, current_user.id) + RepositoryCleanupWorker.perform_async(project.id, current_user.id) # rubocop:disable CodeReuse/Worker flash[:notice] = _('Repository cleanup has started. You will receive an email once the cleanup operation is complete.') else flash[:alert] = _('Failed to upload object map file') diff --git a/app/controllers/repositories/git_http_controller.rb b/app/controllers/repositories/git_http_controller.rb index 82431ae286a..75c79881264 100644 --- a/app/controllers/repositories/git_http_controller.rb +++ b/app/controllers/repositories/git_http_controller.rb @@ -80,7 +80,7 @@ module Repositories return unless repo_type.project? return unless project&.daily_statistics_enabled? - ProjectDailyStatisticsWorker.perform_async(project.id) + ProjectDailyStatisticsWorker.perform_async(project.id) # rubocop:disable CodeReuse/Worker end def access diff --git a/app/helpers/analytics_navbar_helper.rb b/app/helpers/analytics_navbar_helper.rb index bbb7470d1fd..021b9bb10cd 100644 --- a/app/helpers/analytics_navbar_helper.rb +++ b/app/helpers/analytics_navbar_helper.rb @@ -31,7 +31,7 @@ module AnalyticsNavbarHelper end def cycle_analytics_navbar_link(project, current_user) - return unless Feature.enabled?(:analytics_pages_under_project_analytics_sidebar, project) + return unless Feature.enabled?(:analytics_pages_under_project_analytics_sidebar, project, default_enabled: true) return unless project_nav_tab?(:cycle_analytics) navbar_sub_item( @@ -43,7 +43,7 @@ module AnalyticsNavbarHelper end def repository_analytics_navbar_link(project, current_user) - return if Feature.disabled?(:analytics_pages_under_project_analytics_sidebar, project) + return if Feature.disabled?(:analytics_pages_under_project_analytics_sidebar, project, default_enabled: true) return if project.empty_repo? navbar_sub_item( @@ -55,7 +55,7 @@ module AnalyticsNavbarHelper end def ci_cd_analytics_navbar_link(project, current_user) - return unless Feature.enabled?(:analytics_pages_under_project_analytics_sidebar, project) + return unless Feature.enabled?(:analytics_pages_under_project_analytics_sidebar, project, default_enabled: true) return unless project_nav_tab?(:pipelines) return unless project.feature_available?(:builds, current_user) || !project.empty_repo? diff --git a/app/services/ci/process_build_service.rb b/app/services/ci/process_build_service.rb index eb92c7d1a27..12cdca24066 100644 --- a/app/services/ci/process_build_service.rb +++ b/app/services/ci/process_build_service.rb @@ -3,7 +3,7 @@ module Ci class ProcessBuildService < BaseService def execute(build, current_status) - if valid_statuses_for_when(build.when).include?(current_status) + if valid_statuses_for_build(build).include?(current_status) if build.schedulable? build.schedule elsif build.action? @@ -25,10 +25,10 @@ module Ci build.enqueue end - def valid_statuses_for_when(value) - case value + def valid_statuses_for_build(build) + case build.when when 'on_success' - %w[success skipped] + build.scheduling_type_dag? ? %w[success] : %w[success skipped] when 'on_failure' %w[failed] when 'always' diff --git a/app/views/layouts/nav/sidebar/_analytics_links.html.haml b/app/views/layouts/nav/sidebar/_analytics_links.html.haml index b859a1ade66..e87cf92374a 100644 --- a/app/views/layouts/nav/sidebar/_analytics_links.html.haml +++ b/app/views/layouts/nav/sidebar/_analytics_links.html.haml @@ -6,10 +6,10 @@ = link_to navbar_links.first.link do .nav-icon-container = sprite_icon('chart') - %span.nav-item-name + %span.nav-item-name{ data: { qa_selector: 'analytics_link' } } = _('Analytics') - %ul.sidebar-sub-level-items + %ul.sidebar-sub-level-items{ data: { qa_selector: 'analytics_sidebar_submenu' } } - navbar_links.each do |menu_item| = nav_link(path: menu_item.path) do = link_to(menu_item.link, menu_item.link_to_options) do diff --git a/app/views/layouts/nav/sidebar/_group.html.haml b/app/views/layouts/nav/sidebar/_group.html.haml index 60c5ef3877f..c00c48b623c 100644 --- a/app/views/layouts/nav/sidebar/_group.html.haml +++ b/app/views/layouts/nav/sidebar/_group.html.haml @@ -1,4 +1,4 @@ -- should_display_analytics_pages_in_sidebar = Feature.enabled?(:analytics_pages_under_group_analytics_sidebar, @group) +- should_display_analytics_pages_in_sidebar = Feature.enabled?(:analytics_pages_under_group_analytics_sidebar, @group, default_enabled: true) - issues_count = group_issues_count(state: 'opened') - merge_requests_count = group_merge_requests_count(state: 'opened') diff --git a/app/views/layouts/nav/sidebar/_project.html.haml b/app/views/layouts/nav/sidebar/_project.html.haml index c587d0ca053..b9324f0596c 100644 --- a/app/views/layouts/nav/sidebar/_project.html.haml +++ b/app/views/layouts/nav/sidebar/_project.html.haml @@ -1,4 +1,4 @@ -- should_display_analytics_pages_in_sidebar = Feature.enabled?(:analytics_pages_under_project_analytics_sidebar, @project) +- should_display_analytics_pages_in_sidebar = Feature.enabled?(:analytics_pages_under_project_analytics_sidebar, @project, default_enabled: true) .nav-sidebar{ class: ("sidebar-collapsed-desktop" if collapsed_sidebar?) } .nav-sidebar-inner-scroll @@ -9,7 +9,7 @@ = project_icon(@project, alt: @project.name, class: 'avatar s40 avatar-tile', width: 40, height: 40) .sidebar-context-title = @project.name - %ul.sidebar-top-level-items + %ul.sidebar-top-level-items.qa-project-sidebar - paths = sidebar_projects_paths - paths << 'cycle_analytics#show' unless should_display_analytics_pages_in_sidebar = nav_link(path: paths, html_options: { class: 'home' }) do diff --git a/changelogs/unreleased/31526-skip-if-needed-job-skipped.yml b/changelogs/unreleased/31526-skip-if-needed-job-skipped.yml new file mode 100644 index 00000000000..27b2e5f9b8e --- /dev/null +++ b/changelogs/unreleased/31526-skip-if-needed-job-skipped.yml @@ -0,0 +1,5 @@ +--- +title: Prevent DAG builds to run after skipped need build +merge_request: 23405 +author: +type: fixed diff --git a/changelogs/unreleased/55487-backfill-lfs-objects-projects-sql.yml b/changelogs/unreleased/55487-backfill-lfs-objects-projects-sql.yml new file mode 100644 index 00000000000..45dd3c6e9f5 --- /dev/null +++ b/changelogs/unreleased/55487-backfill-lfs-objects-projects-sql.yml @@ -0,0 +1,5 @@ +--- +title: Backfill LfsObjectsProject records of forks +merge_request: 24767 +author: +type: other diff --git a/changelogs/unreleased/georgekoltsov-object_builder_convert_empty_strings.yml b/changelogs/unreleased/georgekoltsov-object_builder_convert_empty_strings.yml new file mode 100644 index 00000000000..31eca8a2653 --- /dev/null +++ b/changelogs/unreleased/georgekoltsov-object_builder_convert_empty_strings.yml @@ -0,0 +1,6 @@ +--- +title: Fix Group Import existing objects lookup when description attribute is an empty + string +merge_request: 25187 +author: +type: fixed diff --git a/changelogs/unreleased/jcunha-update-managed-apps-template.yml b/changelogs/unreleased/jcunha-update-managed-apps-template.yml new file mode 100644 index 00000000000..145a15c6ae0 --- /dev/null +++ b/changelogs/unreleased/jcunha-update-managed-apps-template.yml @@ -0,0 +1,5 @@ +--- +title: Update cluster-applications to v0.8.0 +merge_request: 25138 +author: +type: changed diff --git a/changelogs/unreleased/toggle-analytics-navbar-feature-flags.yml b/changelogs/unreleased/toggle-analytics-navbar-feature-flags.yml new file mode 100644 index 00000000000..506e4fffdbb --- /dev/null +++ b/changelogs/unreleased/toggle-analytics-navbar-feature-flags.yml @@ -0,0 +1,5 @@ +--- +title: Move analytics pages under the sidebar for projects and groups +merge_request: 24470 +author: +type: changed diff --git a/db/post_migrate/20200210062432_schedule_link_lfs_objects.rb b/db/post_migrate/20200210062432_schedule_link_lfs_objects.rb new file mode 100644 index 00000000000..c955639c259 --- /dev/null +++ b/db/post_migrate/20200210062432_schedule_link_lfs_objects.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +class ScheduleLinkLfsObjects < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + MIGRATION = 'LinkLfsObjects' + BATCH_SIZE = 1_000 + + disable_ddl_transaction! + + class Project < ActiveRecord::Base + include EachBatch + + self.table_name = 'projects' + end + + def up + fork_network_members = + Gitlab::BackgroundMigration::LinkLfsObjects::ForkNetworkMember + .select(1) + .with_non_existing_lfs_objects + .where('fork_network_members.project_id = projects.id') + + forks = Project.where('EXISTS (?)', fork_network_members) + + queue_background_migration_jobs_by_range_at_intervals( + forks, + MIGRATION, + BackgroundMigrationWorker.minimum_interval, + batch_size: BATCH_SIZE + ) + end + + def down + # no-op + end +end diff --git a/doc/user/group/contribution_analytics/index.md b/doc/user/group/contribution_analytics/index.md index 4411c7834a4..1bbc40a14a4 100644 --- a/doc/user/group/contribution_analytics/index.md +++ b/doc/user/group/contribution_analytics/index.md @@ -16,7 +16,7 @@ group: - Merge requests - Push events -To view the Contribution Analytics, go to your group's **Overview > Contribution Analytics** +To view the Contribution Analytics, go to your group's **Analytics > Contribution Analytics** page. ## Use cases diff --git a/doc/user/group/insights/img/insights_sidebar_link.png b/doc/user/group/insights/img/insights_sidebar_link.png deleted file mode 100644 index f7b0c2daae3a4c175f47282e0cde52e3057ffdb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12327 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 W`*kCn5Zrh~lYOfoSqL@!^uGW!>LTa> literal 0 HcmV?d00001 diff --git a/doc/user/group/insights/index.md b/doc/user/group/insights/index.md index 7e933c66789..edbb85962ed 100644 --- a/doc/user/group/insights/index.md +++ b/doc/user/group/insights/index.md @@ -14,10 +14,10 @@ requests to be merged and much more. ## View your group's Insights -You can access your group's Insights by clicking the **Overview > Insights** +You can access your group's Insights by clicking the **Analytics > Insights** link in the left sidebar: -![Insights sidebar link](img/insights_sidebar_link.png) +![Insights sidebar link](img/insights_sidebar_link_v12_8.png) ## Configure your Insights diff --git a/doc/user/group/issues_analytics/img/issues_created_per_month.png b/doc/user/group/issues_analytics/img/issues_created_per_month.png deleted file mode 100644 index 96f0d36c91702b16d4ace52c4c5f6ac650a4e8c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28508 zcmbTe1z3~)zc7ya*a9L7DrG!~w1Cto6I42Nq~wUvFgg^K29c83Na-FM(uy>)k%Q5l z8@&-@@NVGqJLmk)dH?Tq{=2xYd-pd!UEj}rk6<+w1=vHYYcSd$;IE%+khQ&A|HH+??=-{;{z!Ma7KxpGyP+;aeO2 z)t4bj$@lZ?dt@?sgz{P1`SRsU-QdPHaXX-V*3#0_!oni{$D)l57>%B69ovFHAU(ak zySuwyUfz?FlQ1ak_r#XJzkfv490Gv|4i0v7bTNR94-5>{*4Cz{r#m=$SAMVj@bS~r zh@tY{wV|OQ-?G{4>@1DAVSxu?_PJ9nEiDld5e-8d4$eU)Y2!}b-xe1aQRuFQhF=~I z4u^+ZyN8F%`{WOZx%KsR(%#kwCx^tu#1~ORj&8B-9UY|I*}VMxC`Sh#{ukJ3{EHXK zg@uJ%d!#LN8kV##$HzCdN4hU)NZ#&^j)_MEIpp{|tP%Gy6AMdg>l650HGbaG($bl# z@VV9PePV-03R+8B+wnuu`q~l&trU~CG z{X$DYDd>TPMRH_%J*vLsXY0UW=eu_AN0mR&_4xh6!(R=hnc0SdUCnh_HSOl5E0S_4 zQZiw+j*^2#3F#r8hli7q`KTK5;b2XsUs&4Y-14u!xs;KEDRfP7>v(@>%Os`~9{QQI zIzE=H)s9<31--IY2>2Q0{7~5zo|zsUUr`Q?T3?*b?!%*oCsp-54hEyuOyaYxKEl!q zgKOrT475yNiuW#&f@8~6gSwINe(OIyM&X~5bl<1iXx7i*R6O9mFCT=NJS*{jy*iIa z{;Zy+xWow;4HZqAM{|P~G&HwpUOs!QEsg)xZXn07Lj(N=r}01BM&10> zGVOSAs{O$NWf5?>;5OrMUtgcm<=5;CdI6LzpTki%)AKD%>The>bOC8-gz*JA;K){a z&E@2t9w5!5A^`8bB69R)`flpvLIIbRd1sF&6_}M9a{D)cvz$W0=TOwm;O*bdtKUSa zGm9>m(eabw6k2YDqdXG}T##)~K__TlRKhXB%OAR^U@=m|1Gm-a0M~gwqKeomh2U

+c4hq{2@*vFw)R6C!q)hl~iwlIf<(in@Hf9IrJBW}psC_sS z6>pMaCv7w=Xa$nf*KjtU_z~Ih95ld6aBc5{ks8JGqUTQf%Sa`)yI_cny1Y=RbW4q( z)*iA$ySz~UqF8lfYV953>AE4IHbAv+@Yjx4EweS4!xU?NEiMIvjzP5(KR!W~Z2?I= zA26mFsDr#m3ty4inugrFHLgWitgYb3Vb};SfE1Y59?_H1Qri$O{&yW*bXQ z*YIyt5tGIP2n488mqgyd0DKRJye;&#wzYl;hpXw_OQfwB2p@l|c$$XfisbG` z5%nb^mJ7an^Eg#pcdeBw$T27v8*!Y%%Xr<3tauLMP4VccU2WWA>c%P<+0_`9DV0Nh z&aOg~NWOyhkCZ?i5gdcPm%HMTt<$MDmww;PXq+vgX?c8t28xHnmzj4X6Sh^ZRVbTi zu(0hhzs9D*hi9|h?+G$G54knH-E&tyFUA~4+}Bs#K*9E-_cdKYIUHnf$#ptE*L>pY zTVLe1S;m`piA`^7FM+e)8I1p3K0QiD@7caO$PXABnsgb zz-6$TukXPFXIU0@iMhAVkBTL);lXP*j`n5}s&sgF!k^A9+K&g&HjTQFFL` zxDX{$`lIFw;PSIS_e8WQ6BCW7dxMXM^T*=DqhpA^a)RuXAPW&|I&XWkqghPikQ!Mb zVn3tQfG`v#hWa~8QNzVtFE!q`dQt*d*N`_rkrHTus|8D?-uGi#{>=G;_={PGefqyr zXmaWXhNdC>EGY81#SGQv$EUmIQ*iq~1SBog$jE@;bgk4RGLr@O5nz*g+kLbL1MJ5; zZbdaysqaPQ!Deh)lH<1TLvxw85Y^r@R-1%uoBrB<4_|PB z=25{zDVsQq?e(S9mTR-?k2j=lK(&sDb_AJQKev&wd#r!s6a2uA3Vs;{xbaUC`;*=t zQ&{>h>5a!$DFAJ27hQ{F}fMn~c)1lTZM?>@3>mQhu)JaXM z|A`DLr_j^?&w+37%2n{YVkGAEBhU$d)SV6}A%b`{(j`Hjc{~Y4SGL91ZvgArB&Eh| zs-E>nWsPHnOv@MxazTNB0=S0&yzEzCN5}liW6*2;5sTX%_J+SZY>Lmxl|9xQB*xDs z*xMHuk2K1$(EySlAg(HXMn>7UAEY1=tQBSOcHQDIwZ-?=*{(Wkw3zarvO*=o8Om$b z?J7oVo*>q|k`2^ZIYbwBqA51;f&jgB2TL*ke(gem)5`SkxeN=?uT$b{DO8%evDxOl zFqN&=q|Tx*Lp2%$CZPmJG7`>sP2P>6~{%oY|DZ|f!r>n`EI3~!7N zH;v>e3ERZWA~*)BJ#-)wcqmQdA~uUsVMt(;ls2|}Ey_%O@^0{C zm(}f@FPsWK<7n-%3LUM3*FMpVxu>Y9q6qczG4H?|>j3g8`PoHm6s2;5A0TA@!2|1T zzbu$iV?w7>qgE#5U5|GgR>h=<++Yij1~;Ma>05GbtJdKPOm=ice^tg8Q$@; z9mMd$VsRs8St&?N@unYcRQ-k4;>jP5@@2oebmnhA8@#m)emt@qk@%VuVY&Fz>#Q@| zSvK|P=d=mx+n>e+uHEruxbo95?87-_onO2G`obKSlwLeBvi^nCD{?Y^DQ=|ez~Nat zz6})th@ifzS4NZl=p~)!ekZ&O@f&xmbLP3y(qZ@8P+$Y4ssu6!37hcrPmlGcdQBrg z&Id5OyPBczZ@bmscG9JlFYPEvV*O6Zx2AU^pJ2AO#e&u5vNx+Fb)AMKIoZW#$GQQ_ za22`*X0(-V5-bU}ffk5lUGZEl?la7}8p$JX2N1c~p)2a_mE;~M(HD!yVrfLbC}Vmt zNUh&Kq(WTEUZpxH`V5&7k^fZBC}MnJndxq8Px3=k^-H((E*a@s8AaJ()@Ea57m29Q zd28m)PSb-Qnl=jkK;R+QsAwJL5oq?44aD(t1Z##Vr`f!~ulve+`|-9)zR1;>(K!N1 zB}KsYn$cX&-Ye26XzbZVcqmzAo=>>^^dpdXFSakH|NJzof$B?I562SW%Po)5*S6Jk zim%6y2~=wfe<20v^k}(1d)SBN39KgUrdJxk?j|nb)G#@EESnFjhnJs+@-A(u?@ld< z)%ilUe+Dc|@ydS`E*FNQtHfE+hQ4MlHEPpOg;w-StJ#C4+q(<#uu?x)I``iTjMbKN zHS6Yx&^~S!ei-aR0w0q7j4LKtoLwXW(qXlD7Oub213zNAXRX9kI{*S&h6QW|SJ42k#QgqKox^wUfFU}U zfW=lrEbE~-u$RFB;nC-&j)2%Ula_mxEl7L;qEEtQZ156(W2D04c0zdh*mpmS{f-6Q zUlyM`>w^1&v(6-PFIhy~(gxY`_&UWiUDIFnwghCjV3aZyiNcxif#2IoKzpmwJM0L! z{`4t-lwBG86MOTy8|X6tUIiqAoSruD(R!lNk6R%j_O-V3YIdOn#I5=-}WR^Pm_3C2<|m zy{1#}pu>a;9pQxKRDn0#kc3@rxv??es&}A-_w*NcR|Am2uR5OfAw{9@_$^X%J#PpG zD0F|t-2qnro@N1O0nq!*o`~IgKe3Mc$S%pj*MGHrccQ_tzaufp+32${_6gR>gMDI zZRVcx_QyDDke_~{gTg|=a#Yn4Q6XWtA`&!Q7%+%qXog3=FCNFIh{9ZwIIi?z>1@_D zdm5fP2S23g!fr3(m_=dx*LL5w-eqPE&D($6P4sRd!~7~1U~C@=N2btyALzMmAP7ev7oT`FjJ3T{fp|CzCocJ_?>`48z|y5 zz=lQhXLYIAPu5a+{x8GjTMPi3;`1um%5|N;%lff;KUZIFw9}91@zYhR;`D!aMxN-x zhD#;IGv~sc)JvUf-g>??%*;RyEOk1aaMCnB_&wmvrGsgPbKb2A$=9{_{x!{d=(#fa zIp1}(KHI6S2~jfR7v)-sEAZv z86xOkHL9`k-ktEl8m+scLfN?D{CstUYimSYb-*}b*msKdb(`!Ic3IB*qvTh?L`M(5 z>1ph;RKDbj4AY4=GTCoVdLu}ZtmkC^2po&2boPJdH(yW6Fvz#cf;^SR`VMt-u0QXcb0JZsa$u^mYrSB!ZcPpB zTWeCGASuT?#s%ZM6j~d>lyLTZ^|{ui0*}8lid(aa>e!4*hxhv9KUcrL)Zur!HJdSh zCe2&K4sh|v#cee1?hnw^vnzq$RFuvP^reXD4!Up?vb)43k*=U|e1$**^5BEPVac4K zZTu85_iT}j*8w|#W0<3&>L*i;q_0s-q=pyv3o)WNz-($n|E* zP2%Vf;oJJVne(q;XKMcjN_I#HS3SqDN)d>EAs)A`on$jGYTBPNXDPN9M6F|GbwHb2 z+8)M&vA?sprxA}AH;6IHK0MITs1g(%MIeLiD2pOjF_9X01;LE_(6g&KWHNY2)deH5 z^jnB3mrPXFlIJH$o8+|R+)1dbJZlv|HVVb0XH`p*kdYzJ_-PMWbm{d6&JGq=1Bc%gEq&29+;i4ZE`htfNlQM+7qav?ipxYNxB2=l1F>Xi+sk<*A zjyvwe@%1N9Q{l`!N%`8K@tK3y_{l=FCjfhS8mjCLv$$lY?5#>MQN2+h|AG7GorQT& zC#8Sjn2$ov8p4Y<64<&rRGQpD)6msvF~rEQFLdT;mSa_0!43D zG931K*~YX4Zr$mqDnd~MnBt2_I-X2;L{@>}<~}$+8(Uj75M=FuD-ze4w_H6)sdbJF zUV1g*P&64ObvH_Gh*r4@uGFg)@ci%FA&SWs!)6adgHWG`8b2#lcVmS{b-DQK;)+b} z+{`ba?H@X48=PZc02ysxi4h2S&cLlT%Es|%t@J5AJtwuWngvlk@4A{SMStDp^xyTW z;m#|P&M4zAZ7r)~&S>&mNem0+5yN#mbe*(bovf79)*kLROMR+z(wi?hd)%OS%KbPG zAk$UHq|= z_m^&wupT;WNXo16p!xiH=&mMe|NaTmA0p}8eJ~4HOYLa|@}}ohus!2i4dvub^J^8` z=)JoK?vs%E3|il(_!i9?cx%39TfhA5d;`VfX(q5|Me!g0zGB_NsT_3R?)higIs5XD6!W0@0jC0@ zac6>^rd-e`kEbtErQi>mJVMU*;lh8pm8P_LX<#2Ivk7_P@<0D(l745;bu`k#8u3Lo zg*+MsYtr)}XWiI=oTQlmx5y|3UcYqV^yp!%jz#@m!+ zNhruDs3iGN@uM5yPg7%dOgeMcaiwlb_s}WwxgfTUA5==Ic(I3E7brwf>2qiDplq1H zsxM;m>R)FoCs&r%`b*A+MqguuleyxeSlz}fD1m;zzRdzo4y(^E$p!F}h-gISYcKPI z#`1!ydD`{j{9I2BT><=K?drs0vu~=SgROgG<@N`SBTp;b^Bd-PHGA)wlZK&*AcH2e z8hKkLE8T16FEw4O>es(_!wot|dwZinW4;>p7S|tZGbgX2Ua4*mSebJokc-=zyf0d2 z%Ufnfs?4iiwM9aapZ)&&Q1+wEgh|RN&s0scKi<3a^;;Rc}?86O1R0YvjMiw_3fGg zq959@PX3^4i?~D%+EVc>0!XB`5uzY=ZxZ#dq7!BH1MRtwQMSRg(u+nGi?{S%7_&sB zke4n3ed-7d($(Qh_djE}gr`p2Jb5a!w1RUG&$jf;tMdYf>y^!d;${Unf9yAz&m)3i zDofS}U&Xq4ahzU|^ZjYOg^|Q^g#MNZSM7%xpzP<@^nJJQKFA-ku^!pewuCfRG_-_w zO6^C$V(0jQI!4Y~?ig)&1OGkdIbd~;7xOsf@ul=dG~E<1QO-|^{_mb7>tIKXS<)=o4YDRa*tVGki-Ww~dty*(O zB&%2aA{!5ai>q+0G#a5t3zLCF!m6{BNkFx4=5vY}AcS-W^Rp=SrwTzUKs@s&TW`-j z8XP=zvtM7g-7hf+#@}>W_ed?x6F}R^FY}ULtYW21npQr!PI?f7^mHFRYbyU}q=itt zXm8b?ul01ZfTu7)c-?V#(XbSWodEh6$GuT*DsUI@g!SXD1D?2`tpkD=7f+R(Du3d< z$l&IJ4*8d0^Y0&C5nukD9(d?&G*YQ4`yCXkJcUW99j1l3%D2MPn655=vmQxBvNAu7xV@-!>_$FS#w9l*+oTLO#N)QxdLg%?ee;59>3O5>g>li-qr!+6B_5zw44CTLeQ_o1h$Scl30%|&P`lb4X;qTl5e|NBa46D|-EfJn7j!(o5 z@sN6FxL1VS#C*W5@PY=!MnNTfx82E6acT7AC>-2rpE^1sWGf{1&71H6JJS8or|?BW z))=u8A=R(}o>22WE90izYteeH)GMw~3pp+`oJ+VG2gE|3XSboZq&JR}LEs$lo@&J) z?p^yYy8%d`r)rhPE5WK2-|$TVeeab91Ts6_ye9 zC>w1a1uT7t(Ji_gw;||PEH52hKUrXG#wG-St(4SB$%$<5L4?`}r6MK|#Ff#YmqVZ^ z51p|ThuRuv69=}KrSB7TD~S7E7zSL}QtgYOQ&FCfwulLf#%i}09pP4^KAM^2@Nc7x z=;zm|@K2S5v;Pv#pYE7YilU_6H9l#nztFHNil6ZB44!3jP9>a#1?;zp)-#xsLIQYd zuU9XgEw&`r0pHHAqV*?g$Az`P&MC75@IvNTH<=wE)}aklk@{E2wq6K*bcZS_c*&~Nu)>N z`pJ+dvLBP--Qz7wT+AQ#pB+b#(l_z~nLMw43%}GpvntpKa+=Q-QswCx-1Ct+753n- zZn_QmbJU_BLg>qsh)Cg0?(@@M*r6Z})jM94VH#;)--AwPabt{StW{ZxeF62lWvYAR#O)d}Uqq1dYGK61KUiEPNyG8QO+g)ANcOC7~)vs8eI2^35@5-Z-@}It+4d@;= zxXP(FX>vI~{Cc#KjhZHK>CNBP(Se4S7#jUmp)(N|rcN{L&79L9>O8>y#qz1W^{MF3 ztNFKrdb-s1103JKVO1}w%elH`KA-I6?5tVF-^sx^HGisd+tcYPBc1mywEnR=$g9CT zFh%yhq3t~vF>y2uKkRWk5%dd1_o17tXP1jQ`9K-!BWw*qf10+w2O#aVI0#(odF%+P z7R-c!(j)!&3dG1$#$x+JTRW(L9Qfq2{ee^3>gfKW8sOrOEf>fZxw(5~D(>lIvZq+= zD;dcI?iH{^BT~QS`hkewbwk@dDZTG8Tm#r1`1-+0%kDSIu5uTMG7n)@9gtMZz~&)y zAly0@O4oIO@G%29!|02}PR(I&fAk=(VYHTFJ(&C#akyOf9Jbji7}#ZMC1Pi0>TGUZ zJ#+I2+t2QjlET=tXJ-IS11D3ac-`1%1=oT>1N#xv)A*157R|0Ql}V3h=dh~+nK1pD&z^+AdGVWoH zJ_zpkh!jyi4;bEXy!^LaW18*xq{Qzxjl{h6eT@+bjwvBi9>^`@t#Kb$sfs=y9vXK8 z=qS*8ylHK@FK6^7U%j_fok{jaMn|M`{EC^)KtbCmy(F}-w#LH9rBamw!C}1V%YH4- ztBm=sxEPE9P{bwBblc#s30GHS#g61j{#>qU+Tk#-h(`xMSDr`WZs<-(o}{TkqQ*Rh z_w{RfK-m@@(;!C9T}R}D0VY{3PXTtC;zIb(nz70G8m{+1)0I{a$j(o9*e2bNWgHG1 zVpD3ct0zeD+d~@*S0;aM%A+OG3bO^F)#vnH#Y%rsTU08|LPH;)s;2RW!8fnGL!C^8 zN8f?E=a-c|K*jw|O4>1Makk~Bw1WGf;^sCd9)Vn$XrTR+M@URi%7cM_Zgl?Bw-a5! zqXjx3>bKL!tN%AQly1;}0QfIAN5c?^n^>*6-u_rg=~VP9mizuFCbL!K67HE#IRuYc z@Nsr>-i@0P(7XSGWgIJ|t?0}_6lb>+Cz_ryO}xWrwUFQHU!9Q+kD zjgmKdyoMwdHUw>lZJIwS5v1TEcCO5=F2^GiJ`J}t0C&GX zy~((#BT)A4B)|qn_5cM;xU_uQQ3P={BH;e0C2${hrqecUjHC`4W;f)n$8ezFTtqP= z`<*^l85%%7oDmN$I8f@tuAmmC+mt@bR7oX(eRJW|sc52pjmu|#tXAT%m-L(A#M1HW z6tlx@QVj0M&Y-7{%?Ju_ zd4l2?|1tN^*MA?uCSb8(`J;W=t=$NtMLvp{aD%RLVBOO6rM)_#Lhq8}X}@;?ZG>TQ zoxhjsDa});`G%Ap8;{=0w}#gQCoRkV5SiosH|MuosBM* zDafmWoi7_eJ|w`x0mF<%TU$uf$%O(`gd>c0i0;`YSkJG_#7AMX=fQV_YkE@AQoqbo zIBhVmS=+X1&W*D~8-s@FwCqO*cZ-gtO~~csK`%ZY97uH6Ib8)OLwQUHa~}(jM8j4j z;vK!I%7TP#;@aBVhw`C>$oJ&%`3BC#-tOVud}ZE52uIrtAc>AKxy=oUe?;iyrM%HV zQ99e^I(F-zBsW`XDx*l%buQgVR+$NRIr<1Zv(U{TcB`dbcEM|mft2Mx9BTk!COmur@EHm_dvmL=~>=+Qhh9<@s-CO}zRl~E~ zR7XQg;G?yZZh+2XX?Q$*Wa?7oNEWXTZSG@%wwZNq<0sX;#B}uyB*rB!+4?DzkF7fU zrFr~Vr`i{`bP(ZSIJq?mZp+$nzH^3d=w;5vuHU4p<|770(@+b(UXZvloPcJOJYy?BKsilG=8(E@S zG9TdLzl~7l`6zVe!;gfQeh6}eN5ku15-Yy7EkTB`Qz4S<9=sc!ynA-u$JKdeM^<1k)KC|G><9mlHVs^m{#aue{*on+4A zOA|1e^G*XW+2`p;3B_k0;1Wq}pv^cg3k5fK@=LOj;RGK818NGFw4_Hz1e5ow(c!P5 z{CNgF^c9z;oA02mFii5H4z_R3-Mcj1Yb0m6p9hE8d~!6Ds}wU%HkCPoNXnYUseUr{ zMiA%cS=i<-21;5VG4qcofi`q z48L~id(H)n%Ng{~+bV-Lf746D9ux^K5pXkR*|P<61hwra==8nCe6Mj=`^h6Vz!uK( zQ>v)l^V5NSxr36wb_P8a8EeQ>lFJzbUy`zvK%&LGZ3gOcZW1iX?8jI~WvxfHqu00j z=LhqIlBAy%;I-yt>6HJzB0mK5nfU(8J8tCctPm8ch}Y6tWeJ9H5+5^AC0&QS*v{i9 z+Y2N+nV1X%(PdFz)jNipwtS~!;PbsUMg$g)KQzsa!osw~nM9HeFo8iW$Ve70H_rM8 z#ml=A&N8H@*5>>6hxR+DYZRSJgu)N$DLshk1j>u;B1?{BZIE1fGC^AW3X~0FXyzlJ zlkx?+p#oe65`r6{w5u*HgPpXSgBur)m2Wpb`qKV3#8cYSfMoRvzPUKvymuyaZ(_}R zqe$I!56N^vs~3pocjlI^mW{8u6GS*xJra&4tWVB-nq*-aM$Hu_%-b@0GH+~rkTnDw zN+-!OdRcZ<`C|6;r<#&?*EX-r|539*igG9^w4z2+lVy%uU)9ju*m$FdgZx-^wr{-GJB7>UNYO9*VvKaz|{@$ok?uzWB*IcgU-QV4-5+H}Mct+1EA!ycQhG&r`t4j&E_EN1 zCLV%(b~1K%msTh$AdHn^5^N{swb12w7T>i>w@UWgExvPQfF=FaR|%>sH)&Nv$v(k| zVTrLHja2XD%NoLi59)YZrruc^Ts(C|nS@O}{27%*i6mvvMVqAW3a6R!}cDr!E|mrm5)^N@@wKE~XC_<|r6_jiRH0ndl7OHxVT9EKM5 zqI61O$MQprV=tW7U;Lu!cpeA(BMJyI=hiL(p8XG+;o@a0VR6DI$+JT_Z>ACHiikJRgf=BurPTDH--C`~d zKfKQRdz7Tb+E1^-z*J6!S*_^L9$$aBr|37_hV77C1t$f?A4wcL>e?^9zjwkUxihDG zKJ?Yd{3aW1(D!3reDpv-w8dO3K0?Ux2#S=Sz7@zIazIya)yEDX1;^}-e%W1ulV)c{ z0=PjftMS=mt=B+uFL+t*+Zs<%6$mL_#4%&z;&jQBxSg# z_*6Upu~*ni$w_sMB>?2S)E5C=2Oo9&h{Wwnx+uEQ^Yc?aJaoQua%sF4$CRL#v887V zn+ln)7R13%;bkU6JJT>2%+$r7v3-uy9~T`^lFK34s4n4SUIz%c(Ws@58&z|*pne`= zQkt59fq~{^+0#@)NVQXA4{^f5OlXTs39Q&obewb|lLI0(fS)OD78+HQdi3=}FSe$tq6KW{;fv3Rka; z;dlToJT@^%JgSQMprES4$#sDww(8T1T~e^6_hVgBFEO;G>nxY4**IIfxzj!GwwkLN zHZ$UhRFq_i&%4J!fA`4Tt6eb#zApPZaL+AQYyJM{CBG#-oo90jTS*|o;_zO#&0cs{ zy%T=FKvgBDK5xhC*wR;o;-|5biNem}j+q5z_Yj4H{jagcwQsINr1M`MeAYz4awTGo zZm6Mr8;-0JjBK)Qt6c`U2C9;ht{?f2%t|Vs1c}{fUFF!>*g$&wjtukf@NzOPdAAhEPGsk<&OPjS>TV4bYs+%b;o6e=w7`b94BE&!)T5 zojKa$h=G9U9dzT4z0C#{7m}oY6p)fThY0X*VKL|n4Wy=(v6U?Nz~n&|ukaTJAo z#dGfnm{7kRsP;I$NF+5aA6u%Um=ucrg&c2#^--V#dO>Z!yh$JwJp1EYp}9za9?v`a z0#NpIl|QUO0K=TQ`5r34eGiU#g#cKXjW&SMFIbLsYnBb~-tr`d{BdSrSuZdp2tjXc zq}15ddKCY#i{RK7HP(K$s*7qt6H-nnSA4fY; zLq6k8WLJpte0aQ?}$ z4w-=CimW>H%+Tm)7R;2qGVy8&!8QP|Tmq|4x9xkcc3U<*J{GrIC9KvfZAuO|>S(Fy zMtQ%KM^ILSh4P!Zg0hvaqTh=p%Hg)riY!txi@+y(zbX?i+eQtU{tl6Jv7rspuY4T& z{s2+jAz+=NfAnSvwjlY65fcJsTy%WKJmnbyK1y+$RBxzz?D?uk4{t1CtiqR zE+${IFt>-lQ^eU>w)*KpP(g+c)g7zcppTbfh4QPk>W1AMhRi9K;&uLNv_c%Z7mORR ztQCu-3r!Yt;M#736f!#udB1&$JI_xwVG88i=%#2`=qJY>x7D=6S0Qj~VioGT-$XUY zg|wOrv^G1aaeO#eeOajP60C&!y*~ zREJ^4<6e$4*ZRoJBhsveny_gHuVhAPBW{+?Ks8>1(e{lE@Uew_JbFNtA#NiJZD7~ug5+!JScX%~$`HbV;s z$m>xIwXRPWL^>p=3!Fn^7@LTU!sAMA@ga${JOcC7R0~#;WWh7RUh#v>L*Vq$pwJ`& zx)R-21CjRqrRD6UHqJTQH6J^T0&KN-kyKxH@D#)P39`qqw1q^MD}k| zHf4Z)i)EAIf-pV3}(VZ(8RY(u9$UG+Ihx-w**>^CEJ>(svkJepbY1WX3F{_ zob|~;^93zRkj-9{AP2ZePVl7fQ)tc ze17eKMVQFDPr1wVds26~QF%~u^x18dRbkInl~{xND9ufvm#fw5_+N(QJfmoP&y38% zrdiz`kLaNLde?BeB*QsdA1f^Tgen#rv4-2n8sp7JfYX#8JnGkz`0jtO{2Jc8_i=4x z%;NfM`<#!c7h9Or%XLZf;aZ?@A%yylz;#pWjJ5e50#-V*j-efMkE;hld`2KPl!eG# z)B(I^WH8T9K(vSyJCVy|>QXicSdiQ$djb#MtbEYx&BcA_0BPW_=6Og9b2>{+RQ9%W zPIyyPWAl{xcFjAbWZUR60VB%m_DosTijQHQR=^#ydR731^3DR8WXBf40wZKg{9V-C zhO>>xJ_(!7U}Y0i#@#6sQnSaZF#H6x85C58sY0-fckGN~;^Xk^lVBA&g|~0m5xgL` z?9~GG`hm*aF8mbT$vacBIVmI`HHjpYH^eO338~ZG{BZlhc3(xZL;t4CHL5~G;c~j6 zF~3~P6#clgsw9aBgccrU`hjXWlq2Jt(|3i{d+$JmL&bz-gQ-O>s8Ui#i&pmJd%r493@P{22zI|Xxsj0Vr z3TRz?fm?Q7mDTC#<61OsHGmqtfyrcUNjbYpP%tg_*C$ql~#{)sG{Y zNnSt7PW?yKR=Aq$y?@bIZPt->Uea5wo%UbUutj~d22}UL1nGs3t7JY1rVxEY^=d&> zS=j9(Zp|pKzjDRE`-wgpMaIWO1IgR)2$|c(qbr5{pg;6(9P1#76Qt}3vC)w|Je;Lf zR;jMVg->2kVWEZtKHv)Y|Xj?Waa9V~?l;(`Z{BHlRN5}c+S zO!ydpz}e!01q8F-Eh#?9&#x&l*SQCqH*~yS(Vi^4i7E10KfAHS!6)&#!uK6qqQgh+ znOQE}ezmp6d=lq*k#1&ydg4)h7Kik;nR5c`v!it1P7EK9NhFDa#E&r@9fSntz>tSb zOkx0xgk#*1fjVML%xU$Eg_9;Jsr~o_$eUoG{O+31r=2SK8!n;+#`e;n^L0D$sGvKHxrpNXp4lkZaQ2*bUf5YFg^_hqL=AWS(5%yZN1kWV0xY()VMNwii|J|bH1?_>wnJ59 z5PX*O_n3Ozh<#F7Skj~Y<>!E5=}4T>`#aLn`{uNN*!v=BqjOQ+Hqqe$Uvf z6Q&2O^|!P8HlVp~Tc2{txl%-xYW?U#9n`0M$jV5X*uaMsw3)*NY*Z#eX(Hc8e82ii zy@bQD4&qTj`zHhV$aoE}g<`rT51hi!B(@7G^Vr8m_|%0Fd-kQvbs-z7oo@Cy+Zx@Q z5grptKj!In1hN3j-u2qGY#{{F=)1Mm{-w0k`~37lopbLxCgl?L2-93r072Tlk(CYl zSoo83=+)s^R-w0a~Z`tzR(Xe@= z{0@DFnNlyd*c}F1k4EioHm_DJal5FWnGcWd#g<~a8yd8oX;1g0NQ`O_}VeYgS97B7lT}&4D_q5EGgfoKF{z_mzeU|d>d*!aB>|Uwp zz(dhPxuKDnv0=3*8`C4jI7T553-bu5uSU}2?n;3p&E~58R!LumMIXJFfVjZ*jM1%i zaC->(*UC5nHU1qQC4^lo`E?28V=ke1lz%?X7o=G^JLKi^{#_*#9}5pubQNcY`am6! zon!>e)dFNvz3#Wa9pIT#$ZWS|?PO35)w^T#bzht*({VvBvfLJvjwIoRD zfZ^UEdQn}C1ixM#o$X>_0zN}h%Au@Ob|GJT# zeiYBmx+v0mGro45?BTSgalVCx@hG6(4hQL-CHxR}Qd<2x9MDW)@7+zYsJgPaiv1rtbO2H54MFhTwdCjU?Y+o=<*jSXTROOhN@mTOljTAQ2Uq5)7 zy$O2mkvc3y=-leYPy&pXaD0cmnC}6&O=|n@e2y2_{2!jipst*P6$|ZEYg4;Fo8YfA zobndbL1%3N-c6Qbv&~Cs(p>1iPj@vZ6xh*o$}E|a+SrE-*VwcM`v=EhlVN?Vv3K&Ehk7eT?) zZW`t9_@GbepdWE{{{J#gS@}P2piXRzf)qL}MNe!_;?8Rxe4#teigy@Ey>a!kV^RIG zeUzD^!h8FidJrmlKGc48ODLKZ!FPAm(3DQ}gGoWk6ADV> zmCEf==k@sV&%pmQ^CuVov*b^5{ZD<`|H}-uQTgA{{Qm_;CG+2*iCmh*&h*pgFfzWApOD3 zVv9(U+4CKL865in>gG10DcsapHMV%N%(u(9VgUKfXQepby7-UfGG)M3PTR&dt$rzc zxa>c@@@d|bw&Iyt=H%`R+fYke`@v#XS0imyUbS_M9@7=_&#~T+z9L)ehzzBm9Mg1_ zk^W!fgUx1$9ATm$Sp43RK+;`w&V^3qH^qtGebD1jEB9Sh9gxQL{Gs;?nY@*zWQ17Y zwalo~qFnOUMw<2pkw5cv_jP)JqHPDqbrrt`h`&EJR@8U0xS#+fap@IV!x4Nz7!}E&v;hh|J3%~QB7^#zQ+!t(gdUn zBE1TP8lnOsT|i0*MQZ51*MkU1Rl2kwy-Nv%8c?bbAan?w(7Q;9^cy&y^L_W;amRh{ zjqw=yBiVD#wdb5`mbH?-e#rX53haNc6~ple8kQR#^BUN=?r|p@i*dSCtF_yqb~m8a z^9}`D=FMQ?5sCnT#|{y%ft8xQG$Du5Qxa0R`yJ2z`l5|g9P-%gs;>7)^ef;d zmCCv_Oj3KFNljZePijFvefv>@8zK*h$Z>sDLJqOmF->o*j*|X8PqNE4kxJ(M*L1%l}Ee$efMoL5GQ| zTuUi6no^JcxW@t=hA!`kTlQ$Fr@p8)BKh!~@Lnw%?O;yjG;hBj>Q47*;^(a%NYK1S z=~;9-A^dfKTc6IG$LJ;Ua;MA)q2A+rQw4*f5C{4?Cl(wcUGI?GG@Ke;9_}u9QAO-d zc5HG)P++FwkvL1=EA1E6{Ybh!a@eaMAv&MAxr2!_{OJ_3SzLy-nG^F~kl9MpYr|}^ zN_IG2))P$RT5%8T4WbJ>Fly-Xg*iqza(a=9%RB$#&Kf3&AK^0Ah!?o=$xU`yS1)SYMW+9LUB3NK#D7Tt&iF6c|2y)f-2bca z?>hYNcl_u5KPLRQ!7ncSL;c%P%E`Jbtm?EfSAlJGxL@hwYk!KQ;j@b=usO>cQb z(odFpZJ#K3uB6;8JWU*_i0@`Smh15)wbfm01ih5AiWP0|*lH`f6pg!_H}DgspXW~4 zi!GLCT=Snw@fNM$F^GA@D%qJ>gk0j$r@5p&l~{Te4Ws?pE0vG(c&qI z7n1+Xs*O2dl;d|h!dLs#r@bSJ;9bAx!U@~$zq=K_LsO(xDX!|S?R-bOZyX2`OQKrde?vGodVT@`r_u0ozKVW6@4bdu_FiF>mR{860TP!|GB z#$ce{a0I6n#O*%nm;H!qemv7UH33Xuen*{^LopQt=yprIuV88MkmNfIk%IaNV1Xn6 z7d~zG+tzgf7Th4hZ}VtSUqN&Z%zOMzZYfM9;^rg~yQmUJRe=8jxqf`aI3y92V zTv{y=_+^fTVv|o<^YI4oI%tcGO3^jg*+_V=u}yYKOyI`6^3Hl488x72UdF7A_St{w zvuP7`WaaBI^4a}n!sAg8m?E6G5#^W|##kmoMYSE}lHiRyiXY?}@sdYjHoc)gj(&?a zV^-Y|(f#bD)Nb0j?t8%WO#K;8mM^D%r{MBI8vtXd$O{Q?&s{8JeR(xv6o!UPbW0tc z*y4Ttmowaw(`G_sx7Dms3Hw1IfRJ^ar@17LpiEN7)zhH{mbKnYc>iA^S+Gh z(J7J0bv+2u=_svuw|8zq&i*V0xn(sWzQTRF-9|Lo^%wG_L|5J+2EZv;%b9Hm?bQ)9WH8e zp`l9*TQ5kwg*qyVz!t<#ig5iMD9xBqFE znMtC2DSuB@QN9tU`-hkv{Y>7*d3e@BYxy6#PCg*08W~9LLg(paIN1jRc0cl$k{wYp z4@n#jG#vni4bS||u`3w?ZT(NNcidR62K)&xeG8X&l*ir>jARIVisz&3Re3nBTN$mr z+$T*+aQ$j;Ge%y?f++JrX+|J33Bh&z*s-BwObvv$1D-y_>n{5ce-Y0GzJ4{}Dc%j? z_(2Hpwq3~Lhj*aFvt5jOA$!3lddwLtQ%0N%|1oysf)9Cp?)tjc17RzY0Jt_&CEQ+6M^u zWIRi-lV;oMs`dZqO`i{Ik1Lh53+mtY9C7*Mv=;EmpEp#uA9Sl^-hLwOZCDc`g)Aq(;xx7_o_oZtOY5vXGbSY)bo0drM9I%Wv<7EeqM`-q7tSnrWJ zzXC$vjbOJMWiG!P%fr&2Ygb7d%TVK!a}lZU-*Xa;yvY|7dvB_L-PN3F1TE64l9@yO z?n5DMZH$71YgPfrolzNBd&23&aS-S7uC0dc#ByS9yw*THR+nP8cJ2Aw^bhW2!aT|z zMqIoI%vf{G0xGw~Y4zJv z3t%r7ciQFxo6tE+_s-m|UW7>@6Hb>rNfGh9#rcPBj@8|u5f|&0U2Ue`q7u;}0z=C_ zRw0536T;($POsd;c4y|4l0+iDI1?R-m|F0NJ!kaJMRcWBgjfa~UUNQ<$48kVKFU_b z*K;p|Ou4`4)*wLEADlm=uI|G6RWjGLi{^<2^4?_0*{|NkJm%KE;#K2FTk@om>gQyJ zq=E-(lk{p{`bF^9)u~g)NY0FRtdb6g3fG`>HvGK|VfLg&cpO$vk+$6XT4Op8vdwkL zjY_^enfI=rG%cFa@@{#LVp2O|T_?be4{x6+ffd(x_*H*qf+_3aMsCg4_dSy6+b5q# zevofi=ce`+wskKHDC4C`E9U-Tl#}gVQRiH%-~_`c_uF=)lChflWwak#5^f^`wTY68 zL+7UMa)3#aZd5bLbdxietF;BHYDV6Drl|XDtBSQ$cwVu^xi5F@W*2?vN5qmVbP+xo z+iMp^JVqzhR?z7c#Z~P~tdMLwCa^fz50CeT?|c znXE|jzXKvkU8|4l}lxzbjS37MvIgI#DL7`-MAp;|^Ff_1JL z#ly=`OA2MnO84K!?H#Yk+p}_~%O|_GU?Ob`a_(d@ok)hMAO$OXYLfElIJyI0nLJe( zdDo5q@$B_xQ0Pk@lh^q{Q#OI=RsdS6y!O-krh}hNR*xQF*P{l+#U1AlTsya7H0(WO zZfgRJ+r9^m(rIA7TmQ*cSE(Ek?-_9y(feS+)ORZOj`l0J8Gl;T7P?r*%#f6Aub9!e zjXH+AwU{9Q%4O3ql;KxVFRGq4Uh=kEvz|Yoh?Z45CQQi1&{$*YHP6V)7eXn}+HTjl z??W-~ptrQ(8d2W1Rlf5I_iy4)le;f~-I5D^>JaQrn*(2d5=l9+={S{}XdrGn(<7Ee}D6f%q_Wpv$l3bDZ6A{~!E`NJv5yK6fAFNuRx?`$cLp^dkZ!RoL zsC+DS5|?Yyo>G|sP2-hcz*NAxR==2mgA#n5%#lahexw^^@*@-wS- zS{8}lS@by!(`;AwlQ4g{HXidbEy2XxSX*q7pSXOchQfss6rDSo+bXy7wVxq*VTh(< zm;4+${%BJ58Q^Z6s80WbObWmzHwQ)9r%0q#9BPr5Q9t@^`wQ+3wSj^ut{nioclbTm zlm}e950Qi%?;az+Y{>^(TLSAdHkhARRFvwY!$?rjm(3(_uj{b=UQ)5WjVSC(cNzdt zH}&gyaA$lr^PI4eG8%VUW!nnR%#z7XXoAuA-&4y|SPG`q&g91*iLK{CSFA7j0`!9p z!+>Wx<_PTfYI?tc{4dGHE;W8G_dDioUanms|Fy zk@v?O-R4UeO@Rijd@uW)&mHxz(Q1Lhy5aQW+m%C%0w3Zgl)UY|`6A*(+q)!nQczRr zAMd(;0O>u$l;Tlg$8wPAJ>sqN?{T-5pz7z=O8DO0$$x z{IxMkvtF}9p>1DEa1FaYOW>v~nY@G_#fbspIBzGB{u;8N06e@!nx~d6@r1Bb?hYRh z;ssDG>aFcnt5P-wjF@KVOJV6SkAsLpLP;+98G3Z689s)=l zUxdJfb$5*8HYKBj?@2&0hu%<2poDNmIFk&6aFC&z1R;=i=^4BKz~G+t@-t>vAg#^x zoz`zNO5MJ7`poqjvP*uq;Ypruni21>tqTArGN)(2D-}B=9Al*Dt?=XG)`b?fP)gW^ zGhU913U(0{a1R5|9B!E54&oKat(`Hl?@TYNhYgAG>K%DXW?f=HyJb$NmEF&jr)>4% zv8%&K!#~Rl!^y{{FMRT5*ed0u+*;N;nj2?r=|kcLSYeMYSS*EllZS5aiPz7y$FtwT zA6nk(hA+I-uxb@bt{Cs*JUJnoI0q)WsYlR3g7^cOQxH|g$_QqaBb?B-Dt+Hm{QGc<0) z4lDWs#I`*(x)x6EQD@}zIO%J)^hBE8Qui#IPkEaBhxmZvWB*B(4fbzCG3o^geywEI zeNo8_gGgFCz0l?h>=hMBROt<{#Ly>@I08#EjnTcUI-a@Y*p7cRuo6XMI^q3|L{$ds zm2i69cDIR7W{B6dz`0Ar{?*$1PQUCM9o)3ZBeZ4atOiDaQj4HZA_qsoFH)YM+p0bd z)raV2&mmf`6v0W17#>MG#@Be4JVyt6_GwM@dF2Gjs9@$cvtBY&glsc%w(S=uy173= z8xmG^cyZ(Ratcj{%3q} zq4&nzZ4|7k;7I|-R2tJl5PFe-vJ!d(d*%;s#`nQ?P4$|3(5hLI#4ePR+e&df* zYpQ+4D07Y%99;IKZvk3)vyAFfvJqeg3Le_Lt@02qb_tB3ge$CmBV`^x(U4y5O!L+N z7J1gdMST)9g&fUB{1WRA*J1xgLT)H7&>#loam;^nslDJabeAvF(U$(ArCu3}p{irc zUU)5l-T6*^SDuEe7V_G+j0?^1cKxf(6+?G4Al~iXBZk;uV`{r|N=?Q$K=1jl@Y(a2 z=Ckl{SFiWyhW0+)LjgW1g~WJ_ip%r#zp;O=TpSp`0D<{WAVL4-;{|5Wf04Vy4Ek?! z|EG*!FCmNmvnEspcUqUdxOw86iP3FHl`qTo zz9p(gG|4vY&TgsBUZ59M_rsNC%TLj5vV3Q!?zTm^PIqQLB#u&}7-vM}=f`k188|P7 zKD&Pbf8@XgMD1COGw{H-SQR)9 z#&F(O@$20me-JHQ{Eq;sUq>x@+8vv_^B{-Y-ps_aJ<}h-0pue{edru#J@B3kScdk1Z`;cmbaYI z0pyqFKL{Z)Y-poH`BQw~-3a7zD-O@=hIcP8cH$UP{lh&EeoZ7wemxEkY4bI~PYz!Z z^j28rkC~*BlTxH}WF)qsxokAK(jD2EI<2ofco5x#QdjKggHE+3pMTQJlqu@ zsfMfdjS6*!M1@&zwmxPBxLG+<1lNqUx77qcK;6E7m9XYv)uc4-ebaI)i#t{|H<^^i zoqI(DCAiE}AL12cv8YUcI%H z1QUjj!4JV=4e{yBarg~QgFyKuAjI4n2Aul_`j~8UQt^Q9%}#ouP{2xC*;KaEz=U_o2)mq)!B_GX3pHyRB)8_G|O|4lvwBW^iyu zlabcnsc~5nRQegm_=SC7H2%RbYKQu&bT>RO4AHYK_A%)wPZd$Co9rBwv$asq8uP3g z$w@4H7J;jCtnvqoTTS|IA}IR0VWT?X|ApU*EnN2+kGl+$5EW4=901I^r+1x>FW zQhbB(09cuYN^3fwfAum0mT(o+iFSHNXx+FxiB2CFdG*hqa1FG)$e8cps$q)qg8w3z*qRLnd6+nFW1E~0u=ZNRI4|); z_-AQ#J=|Q(W8*Drw=x@+A#|>X8Uoz2gYvq2N^~aONhL9`O}niPcGR2``Z&>=-VA16 zPS--tI{A7Xl-Q-Rw|AsYny22KFPv`bny_yVamMN{TZ_0jsh;TeVQ4>=HgeX|4K^_K zGZq=V3Ra#U9YtEo@&RrNM?T`c= zd)ykOJFHA!<5kI`e$yc1s%EwfZ`iBDfG?#hRpW(=Nb~a%s9ZF(OdX_guP`xny!d5U3KhQLOg4+W@+6zgh(+G##l-88afWQZYt;)mgL>XKWeVLq3!(+r zE66jaYedq~&wM#*ujKsLI5t*p&}cg}Cw={l7%0&l0R7fi3>DUJ zzmc=>k=WEse(!bWd#F78MV6TAA+vT;_Gga5b{_p^P21H!sKX?R^M(uacfemLa@dZ; zfWt|Xy|xx)vqIusxf0yZ<;XS-^wA+`gm6l8=0wTR1e9jrz{aywACq86BWT`TW2ggD ze!wR+1$<~yecOp+xJ6(m7pjTmgO?ebhh4bi!-W797$sdXyE@Z}7m|z#y|XzR zJ-d=U3k#3-iq-4@TESa^bn{>-jdklkY?+lEQ1DRf;=2`}Vnn%Hh{8yT<4zYm%c6rn z{#(P9bT@#M?Bx>9qYQdz6;CZ_DhhBB2~s*%81PEC1)$xOf6)c!E_j5+Jjbk*4Z>&M zC)rQ-!uEL=1R$DX66;_Fns{pMD3%zLVMU}HvNJiJ9@CWPS}M$IJqo9KL^T;Vv-!{< z%mbh%*#vL={+?GG4w;{ihiZnW9Ct|-T;NV#ctY|WwDVbY1rqs0sj!5DcfroKQnuJD zfrlyyg@^CfdaQ6|ZLc_NfDV@PS#Y#AuX|(KLf=79c{z$Vyf3t0igz-@MxNx#zcqLS`O$4Ix()b=)SM46!?YyU>o72@Z9~#HXTJqN>fGS>}w$tM;RCMeCslGM)#oGFn-7ZQgnm z=9PS@T-vPKW}~2=v75?k=2u_nMvf?%UM}SSyyc-~=%L@BtzV{cLT=Z$-*=jS%#{p_ zFM4H*ZXbcy!O+jymUTjhRzyH0_*|9ewg`b2F9X+_XnY^ru%$MhH-u?#; CGXE+7 diff --git a/doc/user/group/issues_analytics/img/issues_created_per_month_v12_8.png b/doc/user/group/issues_analytics/img/issues_created_per_month_v12_8.png new file mode 100644 index 0000000000000000000000000000000000000000..b7dc2d3da8df73377a4eb1aca8d1d21678aa87ab GIT binary patch literal 66854 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 Analytics**. +To access the chart, navigate to a group's sidebar and select **Analytics > Issues Analytics**. Hover over each bar to see the total number of issues. @@ -28,7 +28,7 @@ You can change the total number of months displayed by setting a URL parameter. For example, `https://gitlab.com/groups/gitlab-org/-/issues_analytics?months_back=15` shows a total of 15 months for the chart in the GitLab.org group. -![Issues created per month](img/issues_created_per_month.png) +![Issues created per month](img/issues_created_per_month_v12_8.png)