Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client
1 result
Show changes
Showing
with 613 additions and 544 deletions
......@@ -5,7 +5,7 @@
<div (click)="closeModal()" class="ico-close-details"></div>
</div>
<!-- Filter with single category -->
<div class="contentModal" fxLayout="row wrap" fxLayoutAlign="flex-start" *ngIf="categories.length === 1">
<div class="contentModal max-height" fxLayout="row wrap" fxLayoutAlign="flex-start" *ngIf="categories.length === 1">
<div class="blockFiltre" *ngFor="let c of categories">
<ul class="blockLigne">
<div fxLayout="row" fxLayoutAlign="start center" class="ligneFiltre" *ngFor="let module of c.modules">
......@@ -16,10 +16,10 @@
type="checkbox"
[checked]="searchService.getIndex(checkedModules, module.id, c.id) > -1"
[value]="module.id"
(change)="onCheckboxChange($event, c.id, module.text)"
(change)="onCheckboxChange($event, c.id, module.name)"
/>
<span class="customCheck customCheckPrimary"></span>
<div class="label">{{ module.text }}</div>
<div class="label">{{ module.name }}</div>
</label>
</div>
</li>
......@@ -62,10 +62,10 @@
type="checkbox"
[checked]="searchService.getIndex(checkedModules, module.id, c.id) > -1"
[value]="module.id"
(change)="onCheckboxChange($event, c.id, module.displayText)"
(change)="onCheckboxChange($event, c.id, module.name)"
/>
<span class="customCheck customCheckPrimary"></span>
<div class="label">{{ module.text }}</div>
<div class="label">{{ module.name }}</div>
</label>
</div>
</li>
......@@ -140,10 +140,10 @@
type="checkbox"
[checked]="searchService.getIndex(checkedModules, module.id, c.id) > -1"
[value]="module.id"
(change)="onCheckboxChange($event, c.id, module.text)"
(change)="onCheckboxChange($event, c.id, module.name)"
/>
<span class="customCheck customCheckPrimary"></span>
<div class="label">{{ module.text }}</div>
<div class="label">{{ module.name }}</div>
</label>
</div>
</li>
......
......@@ -113,7 +113,7 @@ export class ModalFilterComponent implements OnInit, OnChanges {
}
public getCategoryCheckboxStatus(c: Category): string {
const selectedModule: Module[] = this.checkedModules.filter((m) => m.text === c.id);
const selectedModule: Module[] = this.checkedModules.filter((m) => m.name === c.id);
if (selectedModule.length === c.modules.length) {
return 'checked';
} else if (selectedModule.length === 0) {
......
......@@ -8,11 +8,16 @@
<div (click)="close()" class="ico-close-details"></div>
</div>
</div>
<div class="structure-details-content" fxLayout="row" fxLayoutAlign="center center" *ngIf="isLoading">
<div
class="structure-details-content"
fxLayout="row"
fxLayoutAlign="center center"
*ngIf="isLoading || structure['categories'] == undefined || structure['categoriesDisplay'] == undefined"
>
<img class="loader-gif" src="/assets/gif/loader_circle.gif" alt />
</div>
<!-- Content -->
<div class="structure-details-content" *ngIf="!isLoading">
<div class="structure-details-content" *ngIf="!isLoading && structure.categories && structure.categoriesDisplay">
<!-- Action buttons bar -->
<div class="structure-buttons hide-on-print" fxLayout="row" fxLayoutAlign="space-evenly">
<!-- Voir le conseiller numérique - Hidden until functionnality is developed -->
......@@ -169,13 +174,15 @@
</div>
<div
*ngIf="structure.accessModality.length > 0 || structure.hours.hasData() || structure.remoteAccompaniment"
*ngIf="
structure.categories.accessModality.length > 0 || structure.hours.hasData() || structure.remoteAccompaniment
"
class="structure-details-block"
fxLayout="column"
>
<div class="hours-services-block">
<!-- Opening Hours -->
<div *ngIf="structure.hours.hasData()" fxLayout="column">
<div fxLayout="column" *ngIf="structure.hours.hasData()">
<h2>Horaires</h2>
<div fxLayout="column" class="opening-hours">
<div *ngFor="let day of structure.hours | keyvalue: keepOriginalOrder">
......@@ -193,35 +200,23 @@
</div>
</div>
<!-- services -->
<div *ngIf="structure.accessModality.length > 0" fxLayout="column">
<h2>Services</h2>
<div
*ngIf="structure.categoriesDisplay.accessModality && structure.categoriesDisplay.accessModality.length > 0"
fxLayout="column"
>
<h2>Modalités d'accès</h2>
<div fxLayout="column" fxLayoutGap="10px" class="services-block">
<div fxLayout="column" fxLayoutGap="8px">
<div
fxLayout="row"
fxLayoutAlign="none flex-end"
fxLayoutGap="8px"
*ngFor="let acces of structure.accessModality"
*ngFor="let acces of structure.categoriesDisplay.accessModality"
>
<p>{{ getAccessLabel(acces) }}</p>
<p>{{ acces }}</p>
</div>
<p *ngIf="structure.pmrAccess">Accessible aux personnes à mobilité réduite</p>
</div>
<div
*ngFor="let public of structure.publics"
fxLayout="row"
fxLayoutAlign="none flex-end"
fxLayoutGap="8px"
>
<p>{{ getPublicLabel(public) }}</p>
</div>
<div
*ngFor="let accompaniment of structure.publicsAccompaniment"
fxLayout="row"
fxLayoutAlign="none flex-end"
fxLayoutGap="8px"
>
<p>{{ accompaniment }}</p>
<p *ngIf="structure.remoteAccompaniment">Accompagnement à distance</p>
</div>
</div>
</div>
......@@ -229,14 +224,64 @@
<div *ngIf="structure.exceptionalClosures" class="bold-info">
<p class="description">{{ structure.exceptionalClosures }}</p>
</div>
<div *ngIf="structure.remoteAccompaniment" class="bold-info">
<h3>Cette structure propose un accompagnement à distance.</h3>
</div>
<!-- Publics -->
<div
*ngIf="displayTrainings()"
fxLayout="column"
class="structure-details-block"
fxLayoutAlign="baseline baseline"
fxLayoutGap="8px"
>
<h2>Publics Accueillis</h2>
<div fxLayout="column" fxLayoutGap="8px" class="services-block">
<div
*ngIf="structure.categoriesDisplay.age && structure.categoriesDisplay.age.length"
fxLayout="column"
fxLayoutGap="8px"
>
<p *ngFor="let label of structure.categoriesDisplay.age.sort()" class="no-margin-bottom">
<span>{{ label }}</span>
</p>
</div>
<div
*ngIf="
structure.categoriesDisplay.languageAndIlliteracy &&
structure.categoriesDisplay.languageAndIlliteracy.length
"
fxLayout="column"
fxLayoutGap="8px"
>
<p *ngFor="let label of structure.categoriesDisplay.languageAndIlliteracy.sort()" class="no-margin-bottom">
{{ label }}
</p>
</div>
<div
*ngIf="structure.categoriesDisplay.handicaps && structure.categoriesDisplay.handicaps.length"
fxLayout="column"
fxLayoutGap="8px"
>
<p *ngFor="let label of structure.categoriesDisplay.handicaps.sort()" class="no-margin-bottom">
{{ label }}
</p>
</div>
<div
*ngIf="structure.categoriesDisplay.publicOthers && structure.categoriesDisplay.publicOthers.length"
fxLayout="column"
fxLayoutGap="8px"
>
<p *ngFor="let label of structure.categoriesDisplay.publicOthers.sort()" class="no-margin-bottom">
{{ label }}
</p>
</div>
</div>
</div>
<!-- Labellisation -->
<div
*ngIf="structure.labelsQualifications.length"
*ngIf="structure.categories.labelsQualifications.length"
fxLayout="column"
class="structure-details-block"
fxLayoutAlign="baseline baseline"
......@@ -244,8 +289,8 @@
>
<h2>Labellisations</h2>
<div class="wrapper">
<div *ngFor="let labels of structure.labelsQualifications">
<app-logo-card [name]="labels"></app-logo-card>
<div *ngFor="let label of structure.categories.labelsQualifications.sort()">
<app-logo-card [name]="label"></app-logo-card>
</div>
</div>
</div>
......@@ -275,18 +320,21 @@
</div>
</div>
<!-- Aides numérique -->
<!-- Démarches en lignes -->
<div
*ngIf="structure.proceduresAccompaniment.length || structure.otherDescription"
*ngIf="
(structure.categories.onlineProcedures && structure.categories.onlineProcedures.length) ||
structure.otherDescription
"
fxLayout="column"
class="structure-details-block"
fxLayoutAlign="baseline baseline"
fxLayoutGap="12px"
>
<h2>Aides au numérique</h2>
<h2>Démarches en ligne</h2>
<div fxLayout="column">
<div class="wrapper">
<div *ngFor="let accompagnement of structure.proceduresAccompaniment.sort()">
<div *ngFor="let accompagnement of structure.categoriesDisplay.onlineProcedures.sort()">
<app-logo-card *ngIf="accompagnement != 'autres'" [name]="accompagnement"></app-logo-card>
</div>
</div>
......@@ -298,21 +346,20 @@
<!-- Formation -->
<div
*ngIf="
isBaseSkills() || isAccessRights() || isParentingHelp() || isSocialAndProfessional() || isDigitalSecurity()
"
*ngIf="hasBaseSkills() || hasAdvancedSkills()"
fxLayout="column"
class="structure-details-block noSeparator"
fxLayoutAlign="baseline baseline"
fxLayoutGap="8px"
>
<h2>Formations</h2>
<h2>Compétences numériques</h2>
<div *ngIf="structure.freeWorkShop">
<span *ngIf="multipleWorkshop()" class="bold-info">L'accès à ces formations est gratuit</span>
<span *ngIf="!multipleWorkshop()" class="bold-info">L'accès à cette formation est gratuit</span>
</div>
<div class="formationDetails">
<!--Toggle BaseSkills-->
<div *ngIf="isBaseSkills()" class="collapse" [ngClass]="{ notCollapsed: !showBaseSkills }">
<div *ngIf="hasBaseSkills()" class="collapse" [ngClass]="{ notCollapsed: !showBaseSkills }">
<div fxLayout="column">
<div
class="collapseHeader"
......@@ -321,7 +368,7 @@
fxLayoutAlign=" center"
(click)="toggleBaseSkills()"
>
<div class="titleCollapse">Compétences de base</div>
<div class="titleCollapse">Compétences numériques de base</div>
<div class="logo">
<svg class="show" aria-hidden="true">
<use [attr.xlink:href]="'assets/form/sprite.svg#unfold'"></use>
......@@ -332,46 +379,23 @@
</div>
</div>
<div class="detailsContainer" [@show]="showBaseSkills">
<div class="details" *ngFor="let skill of baseSkills">{{ skill.text }}</div>
</div>
</div>
</div>
<!--Toggle accessRights-->
<div *ngIf="isAccessRights()" class="collapse" [ngClass]="{ notCollapsed: !showAccessRights }">
<div fxLayout="column">
<div
class="collapseHeader"
fxLayout="row"
fxLayoutGap="20px"
fxLayoutAlign=" center"
(click)="toggleAccessRights()"
>
<div class="titleCollapse">Accès aux droits</div>
<div class="logo">
<svg class="show" aria-hidden="true">
<use [attr.xlink:href]="'assets/form/sprite.svg#unfold'"></use>
</svg>
<svg class="hide" aria-hidden="true">
<use [attr.xlink:href]="'assets/form/sprite.svg#fold'"></use>
</svg>
</div>
</div>
<div class="detailsContainer" [@show]="showAccessRights">
<div class="details" *ngFor="let rights of accessRights">{{ rights.text }}</div>
<ul>
<li class="details" *ngFor="let skill of structure.categoriesDisplay.baseSkills">{{ skill }}</li>
</ul>
</div>
</div>
</div>
<!--Toggle parentingHelp-->
<div *ngIf="isParentingHelp()" class="collapse" [ngClass]="{ notCollapsed: !showParentingHelp }">
<!--Toggle advancedSkills-->
<div *ngIf="hasAdvancedSkills()" class="collapse" [ngClass]="{ notCollapsed: !showAdvancedSkills }">
<div fxLayout="column">
<div
class="collapseHeader"
fxLayout="row"
fxLayoutGap="20px"
fxLayoutAlign=" center"
(click)="toggleParentingHelp()"
(click)="toggleAdvancedSkills()"
>
<div class="titleCollapse">Aide à la parentalité</div>
<div class="titleCollapse">Culture Numérique</div>
<div class="logo">
<svg class="show" aria-hidden="true">
<use [attr.xlink:href]="'assets/form/sprite.svg#unfold'"></use>
......@@ -381,62 +405,10 @@
</svg>
</div>
</div>
<div class="detailsContainer" [@show]="showParentingHelp">
<div class="details" *ngFor="let help of parentingHelp">{{ help.text }}</div>
</div>
</div>
</div>
<!--Toggle socialAndProfessional-->
<div
*ngIf="isSocialAndProfessional()"
class="collapse"
[ngClass]="{ notCollapsed: !showSocialAndProfessional }"
>
<div fxLayout="column">
<div
class="collapseHeader"
fxLayout="row"
fxLayoutGap="20px"
fxLayoutAlign=" center"
(click)="toggleSocialAndProfessional()"
>
<div class="titleCollapse">Insertion sociale et professionnelle</div>
<div class="logo">
<svg class="show" aria-hidden="true">
<use [attr.xlink:href]="'assets/form/sprite.svg#unfold'"></use>
</svg>
<svg class="hide" aria-hidden="true">
<use [attr.xlink:href]="'assets/form/sprite.svg#fold'"></use>
</svg>
</div>
</div>
<div class="detailsContainer" [@show]="showSocialAndProfessional">
<div class="details" *ngFor="let skill of socialAndProfessional">{{ skill.text }}</div>
</div>
</div>
</div>
<!--Toggle digitalSecurity-->
<div *ngIf="isDigitalSecurity()" class="collapse" [ngClass]="{ notCollapsed: !showDigitalSecurity }">
<div fxLayout="column">
<div
class="collapseHeader"
fxLayout="row"
fxLayoutGap="20px"
fxLayoutAlign=" center"
(click)="toggleDigitalSecurity()"
>
<div class="titleCollapse">Culture et sécurité numérique</div>
<div class="logo">
<svg class="show" aria-hidden="true">
<use [attr.xlink:href]="'assets/form/sprite.svg#unfold'"></use>
</svg>
<svg class="hide" aria-hidden="true">
<use [attr.xlink:href]="'assets/form/sprite.svg#fold'"></use>
</svg>
</div>
</div>
<div class="detailsContainer" [@show]="showDigitalSecurity">
<div class="details" *ngFor="let skill of digitalCultureSecurity">{{ skill.text }}</div>
<div class="detailsContainer" [@show]="showAdvancedSkills">
<ul>
<li class="details" *ngFor="let skill of structure.categoriesDisplay.advancedSkills">{{ skill }}</li>
</ul>
</div>
</div>
</div>
......@@ -452,29 +424,53 @@
>
<h2>Matériel et wifi</h2>
<div fxLayout="column">
<div *ngIf="filterOnlyEquipments(structure.equipmentsAndServices).includes('wifiEnAccesLibre')">
<div *ngIf="structure.categories.selfServiceMaterial.includes('wifiEnAccesLibre')">
{{ getEquipmentsLabel('wifiEnAccesLibre') }}
</div>
<p *ngFor="let equipement of filterOnlyEquipments(structure.equipmentsAndServices)" class="no-margin-bottom">
<span *ngIf="equipement == 'ordinateurs' && structure.nbComputers"
<p *ngFor="let equipement of structure.categories.selfServiceMaterial" class="no-margin-bottom">
<span *ngIf="equipement == 'computer' && structure.nbComputers"
>{{ getEquipmentsLabel(equipement) }} : {{ structure.nbComputers }}</span
>
<span *ngIf="equipement == 'tablettes' && structure.nbTablets"
>{{ getEquipmentsLabel(equipement) }} : {{ structure.nbTablets }}</span
>
<span *ngIf="equipement == 'bornesNumeriques' && structure.nbNumericTerminal">
{{ getEquipmentsLabel(equipement) }} : {{ structure.nbNumericTerminal }}</span
>
<span *ngIf="equipement == 'imprimantes' && structure.nbPrinters"
<span *ngIf="equipement == 'printer' && structure.nbPrinters"
>{{ getEquipmentsLabel(equipement) }} : {{ structure.nbPrinters }}</span
>
<span *ngIf="equipement == 'scanners' && structure.nbScanners"
<span *ngIf="equipement == 'scanner' && structure.nbScanners"
>{{ getEquipmentsLabel(equipement) }} : {{ structure.nbScanners }}</span
>
</p>
</div>
</div>
<!-- Vente de matériel -->
<div
*ngIf="structure.categories.solidarityMaterial && structure.categories.solidarityMaterial.length"
fxLayout="column"
class="structure-details-block"
fxLayoutAlign="baseline baseline"
>
<h2>Vente de matériel a prix solidaire</h2>
<div fxLayout="column">
<p *ngFor="let equipement of structure.categoriesDisplay.solidarityMaterial" class="no-margin-bottom">
<span>{{ equipement }}</span>
</p>
</div>
</div>
<!-- Autres services -->
<div
*ngIf="structure.categories.equipmentsServices && structure.categories.equipmentsServices.length"
fxLayout="column"
class="structure-details-block"
fxLayoutAlign="baseline baseline"
>
<h2>Autres services</h2>
<div fxLayout="column">
<p *ngFor="let equipement of structure.categoriesDisplay.equipmentsServices" class="no-margin-bottom">
<span>{{ equipement }}</span>
</p>
</div>
</div>
<!-- Transport -->
<div
*ngIf="tclStopPoints.length"
......
......@@ -31,6 +31,9 @@ h3 {
margin: 0 0 8px 0;
}
ul {
margin: 5px 0;
}
.structure-details-container {
position: absolute;
z-index: $structure-details-z-index;
......@@ -177,8 +180,10 @@ h3 {
.services-block {
margin-bottom: 8px;
p {
display: list-item;
margin: 0 0 0 25px;
margin: 0;
}
p:last-child {
margin: 0;
}
}
......
import { animate, AUTO_STYLE, state, style, transition, trigger } from '@angular/animations';
import { Location } from '@angular/common';
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Location } from '@angular/common';
import * as _ from 'lodash';
import { ParametersService } from '../../../admin/services/parameters.service';
import { Owner } from '../../../models/owner.model';
import { Structure } from '../../../models/structure.model';
......@@ -16,9 +15,7 @@ import { PrintService } from '../../../shared/service/print.service';
import { Utils } from '../../../utils/utils';
import { AccessModality } from '../../enum/access-modality.enum';
import { Equipment } from '../../enum/equipment.enum';
import { PublicCategorie } from '../../enum/public.enum';
import { Category } from '../../models/category.model';
import { Module } from '../../models/module.model';
import { SearchService } from '../../services/search.service';
@Component({
selector: 'app-structure-details',
......@@ -48,22 +45,9 @@ export class StructureDetailsComponent implements OnInit {
@Input() public structure: Structure;
@Output() public closeDetails: EventEmitter<boolean> = new EventEmitter<boolean>();
public accessModality = AccessModality;
public baseSkillssReferentiel: Category;
public accessRightsReferentiel: Category;
public digitalCultureSecuritysReferentiel: Category;
public socialAndProfessionalsReferentiel: Category;
public parentingHelpsReferentiel: Category;
public baseSkills: Module[];
public accessRights: Module[];
public parentingHelp: Module[];
public socialAndProfessional: Module[];
public digitalCultureSecurity: Module[];
public categories: Category[] = [];
public showBaseSkills = false;
public showAccessRights = false;
public showParentingHelp = false;
public showSocialAndProfessional = false;
public showDigitalSecurity = false;
public showAdvancedSkills = false;
public tclStopPoints: TclStopPoint[] = [];
public printMode = false;
public isLoading = true;
......@@ -94,11 +78,8 @@ export class StructureDetailsComponent implements OnInit {
this.structure = new Structure(this.printService.structure);
this.printMode = true;
// Display formations for printing
this.toggleAccessRights();
this.toggleAdvancedSkills();
this.toggleBaseSkills();
this.toggleDigitalSecurity();
this.toggleParentingHelp();
this.toggleSocialAndProfessional();
this.initForm();
}
});
......@@ -138,30 +119,14 @@ export class StructureDetailsComponent implements OnInit {
// GetTclStopPoints
this.getTclStopPoints();
this.searchService.getCategoriesTraining().subscribe((referentiels) => {
referentiels.forEach((referentiel) => {
if (referentiel.isBaseSkills()) {
this.baseSkillssReferentiel = referentiel;
} else if (referentiel.isRigthtsAccess()) {
this.accessRightsReferentiel = referentiel;
} else if (referentiel.isDigitalCultureSecurity()) {
this.digitalCultureSecuritysReferentiel = referentiel;
} else if (referentiel.isParentingHelp()) {
this.parentingHelpsReferentiel = referentiel;
} else if (referentiel.isSocialAndProfessional()) {
this.socialAndProfessionalsReferentiel = referentiel;
}
});
this.searchService.getCategories().subscribe((categories) => {
this.categories = categories;
this.setServiceCategories();
if (this.printMode) {
this.printService.onDataReady();
}
this.isLoading = false;
});
const index = this.structure.proceduresAccompaniment.indexOf('autres');
if (index > -1) {
this.structure.proceduresAccompaniment.splice(index, 1);
}
}
public userIsLoggedIn(): boolean {
......@@ -172,12 +137,8 @@ export class StructureDetailsComponent implements OnInit {
switch (equipment) {
case Equipment.wifi:
return 'Wifi en accès libre';
case Equipment.bornes:
return this.structure.nbNumericTerminal > 1 ? 'Bornes numériques' : 'Borne numérique';
case Equipment.printer:
return this.structure.nbPrinters > 1 ? 'Imprimantes' : 'Imprimante';
case Equipment.tablet:
return this.structure.nbTablets > 1 ? 'Tablettes' : 'Tablette';
case Equipment.computer:
return this.structure.nbComputers > 1 ? 'Ordinateurs' : 'Ordinateur';
case Equipment.scanner:
......@@ -280,74 +241,35 @@ export class StructureDetailsComponent implements OnInit {
}
}
public getAccessLabel(accessModality: AccessModality): string {
switch (accessModality) {
case AccessModality.free:
return 'Accès libre';
case AccessModality.meeting:
return 'Sur rendez-vous';
case AccessModality.meetingOnly:
return 'Uniquement sur RDV';
case AccessModality.numeric:
return 'Téléphone / Visio';
default:
return null;
}
}
public getPublicLabel(tagetPublic: PublicCategorie): string {
switch (tagetPublic) {
case PublicCategorie.young:
return 'Jeunes (16 - 25 ans)';
case PublicCategorie.adult:
return 'Adultes';
case PublicCategorie.elderly:
return 'Séniors (+ de 65 ans)';
case PublicCategorie.all:
return 'Tout public';
case PublicCategorie.under16Years:
return 'Moins de 16 ans';
case PublicCategorie.women:
return 'Uniquement femmes';
default:
return null;
}
}
/**
* Map categories ids to there real names
*/
public setServiceCategories(): void {
this.baseSkills = this.structure.baseSkills.map((skill) =>
_.find(this.baseSkillssReferentiel.modules, { id: skill })
);
this.accessRights = this.structure.accessRight.map((rights) =>
_.find(this.accessRightsReferentiel.modules, { id: rights })
);
this.parentingHelp = this.structure.parentingHelp.map((help) =>
_.find(this.parentingHelpsReferentiel.modules, { id: help })
);
this.socialAndProfessional = this.structure.socialAndProfessional.map((skill) =>
_.find(this.socialAndProfessionalsReferentiel.modules, { id: skill })
);
this.digitalCultureSecurity = this.structure.digitalCultureSecurity.map((skill) =>
_.find(this.digitalCultureSecuritysReferentiel.modules, { id: skill })
);
this.categories.forEach((category) => {
const structureModuleIds = this.structure.categories[category.id];
if (structureModuleIds) {
const moduleNames = category.modules
.map((module) => {
if (structureModuleIds.includes(module.id)) {
return module.name;
}
})
.filter((value) => value !== undefined);
this.structure.categoriesDisplay = {
...this.structure.categoriesDisplay,
[category.id]: moduleNames,
};
}
});
}
public keepOriginalOrder = (a, b) => a.key;
public isBaseSkills(): boolean {
return this.baseSkills && this.baseSkills[0] !== undefined;
}
public isAccessRights(): boolean {
return this.accessRights && this.accessRights[0] !== undefined;
public hasBaseSkills(): boolean {
return this.structure.categories.baseSkills?.length > 0;
}
public isParentingHelp(): boolean {
return this.parentingHelp && this.parentingHelp[0] !== undefined;
}
public isSocialAndProfessional(): boolean {
return this.socialAndProfessional && this.socialAndProfessional[0] !== undefined;
}
public isDigitalSecurity(): boolean {
return this.digitalCultureSecurity && this.digitalCultureSecurity[0] !== undefined;
public hasAdvancedSkills(): boolean {
return this.structure.categories.advancedSkills?.length > 0;
}
public getTclStopPoints(): void {
......@@ -356,12 +278,6 @@ export class StructureDetailsComponent implements OnInit {
});
}
public filterOnlyEquipments(equipmentsAndServices: string[]): string[] {
return equipmentsAndServices.filter((eqpt) =>
['ordinateurs', 'tablettes', 'bornesNumeriques', 'imprimantes', 'scanners', 'wifiEnAccesLibre'].includes(eqpt)
);
}
public displayModalError(): void {
this.structureErrorModalOpenned = !this.structureErrorModalOpenned;
}
......@@ -374,14 +290,7 @@ export class StructureDetailsComponent implements OnInit {
}
public multipleWorkshop(): boolean {
if (
this.structure.baseSkills.length +
this.structure.accessRight.length +
this.structure.parentingHelp.length +
this.structure.socialAndProfessional.length +
this.structure.digitalCultureSecurity.length >
1
) {
if (this.structure.categories.baseSkills.length + this.structure.categories.advancedSkills.length > 1) {
return true;
}
return false;
......@@ -390,17 +299,9 @@ export class StructureDetailsComponent implements OnInit {
public toggleBaseSkills(): void {
this.showBaseSkills = !this.showBaseSkills;
}
public toggleAccessRights(): void {
this.showAccessRights = !this.showAccessRights;
}
public toggleParentingHelp(): void {
this.showParentingHelp = !this.showParentingHelp;
}
public toggleSocialAndProfessional(): void {
this.showSocialAndProfessional = !this.showSocialAndProfessional;
}
public toggleDigitalSecurity(): void {
this.showDigitalSecurity = !this.showDigitalSecurity;
public toggleAdvancedSkills(): void {
this.showAdvancedSkills = !this.showAdvancedSkills;
}
public goToWebsite(): void {
......@@ -414,6 +315,18 @@ export class StructureDetailsComponent implements OnInit {
public displayJobEmployer(profile: User): string {
return new Utils().getJobEmployer(profile);
}
public displayTrainings(): boolean {
if (this.structure.categoriesDisplay === undefined) return false;
return (
(this.structure.categoriesDisplay.age && this.structure.categoriesDisplay.age.length !== 0) ||
(this.structure.categoriesDisplay.languageAndIlliteracy &&
this.structure.categoriesDisplay.languageAndIlliteracy.length !== 0) ||
(this.structure.categoriesDisplay.handicaps && this.structure.categoriesDisplay.handicaps.length !== 0) ||
(this.structure.categoriesDisplay.publicOther && this.structure.categoriesDisplay.publicOther.length !== 0)
);
}
public getStructureTypeIcon(): string {
return this.structure.getTypeStructureIcon();
}
......
......@@ -35,7 +35,7 @@
fxLayoutAlign="space-between center"
(click)="openModal(TypeModal.accompaniment)"
>
<span>Aide numérique</span>
<span>Démarches en ligne</span>
<div class="arrow"></div>
</button>
<button
......@@ -49,7 +49,7 @@
fxLayoutAlign="space-between center"
(click)="openModal(TypeModal.training)"
>
<span>Ateliers</span>
<span>Compétences numériques</span>
<div class="arrow"></div>
</button>
<button
......
......@@ -2,6 +2,7 @@ import { Component, EventEmitter, OnInit, Output } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
import { ButtonType } from '../../../shared/components/button/buttonType.enum';
import { Theme } from '../../enum/themes.enum';
import { TypeModal } from '../../enum/typeModal.enum';
import { Category } from '../../models/category.model';
import { Filter } from '../../models/filter.model';
......@@ -40,10 +41,6 @@ export class StructureListSearchComponent implements OnInit {
public categoriesMoreFilters: Category[] = [];
public queryString: string;
// Modal confirmation variable
public isConfirmationModalOpen = false;
public confirmationModalContent =
'Afin d’ajouter votre structure,vous allez être redirigé vers le formulaire Grand Lyon à remplir.';
constructor(
public searchService: SearchService,
......@@ -60,7 +57,7 @@ export class StructureListSearchComponent implements OnInit {
}
ngOnInit(): void {
// Will store the different categories
this.getData();
this.getModalCategories();
this.queryString = this.activatedRoute.snapshot.queryParamMap.get('search');
this.checkedModulesFilter = new Array();
if (this.queryString) {
......@@ -77,7 +74,7 @@ export class StructureListSearchComponent implements OnInit {
}
// Add checked box filter
modules.forEach((cm) => {
filters.push(new Filter(cm.text, cm.id, cm.displayText));
filters.push(new Filter(cm.name, cm.id, cm.name));
});
return filters;
}
......@@ -129,21 +126,25 @@ export class StructureListSearchComponent implements OnInit {
// Check if some modules is checked on filter and store number of modules checked
public countCheckFiltersOnModules(checkedModules: Module[]): void {
this.numberAccompanimentChecked = checkedModules.filter(
(module) => module.text === 'proceduresAccompaniment'
).length;
this.numberAccompanimentChecked = checkedModules.filter((module) => module.name === 'onlineProcedures').length;
this.numberTrainingChecked = checkedModules.filter(
(module) => module.name === 'baseSkills' || module.name === 'advancedSkills'
).length;
this.numberPublicChecked = checkedModules.filter(
(module) =>
module.text === 'baseSkills' ||
module.text === 'socialAndProfessional' ||
module.text === 'parentingHelp' ||
module.text === 'accessRight' ||
module.text === 'digitalCultureSecurity'
module.name === 'age' ||
module.name === 'languageAndIlliteracy' ||
module.name === 'handicaps' ||
module.name === 'publicOthers'
).length;
this.numberEquipmentChecked = checkedModules.filter(
(module) =>
module.name === 'solidarityMaterial' ||
module.name === 'selfServiceMaterial' ||
module.name === 'equipmentsServices'
).length;
this.numberPublicChecked = checkedModules.filter((module) => module.text === 'publicsAccompaniment').length;
this.numberEquipmentChecked = checkedModules.filter((module) => module.text === 'equipmentsAndServices').length;
this.numberMoreFiltersChecked = checkedModules.filter(
(module) => module.text === 'labelsQualifications' || module.text === 'accessModality'
(module) => module.name === 'labelsQualifications' || module.name === 'accessModality'
).length;
}
......@@ -190,7 +191,7 @@ export class StructureListSearchComponent implements OnInit {
this.numberMoreFiltersChecked++;
} else {
// Check if the module is present in the list and remove it
const index = this.checkedModulesFilter.findIndex((m: Module) => m.id === checkValue && m.text === categ);
const index = this.checkedModulesFilter.findIndex((m: Module) => m.id === checkValue && m.name === categ);
if (index > -1) {
this.checkedModulesFilter.splice(index, 1);
this.countCheckFiltersOnModules(this.checkedModulesFilter);
......@@ -200,28 +201,26 @@ export class StructureListSearchComponent implements OnInit {
}
// Get the categories for each modal type
private getData(): void {
this.searchService.getCategoriesAccompaniment().subscribe((res) => {
const categories: Category[] = res;
categories.forEach((category) => {
this.categoriesAccompaniment.push(category);
});
});
this.searchService.getCategoriesTraining().subscribe((res) => {
const categories: Category[] = res;
categories.forEach((category) => {
this.categoriesTraining.push(category);
});
});
this.searchService.getCategoriesOthers().subscribe((res) => {
private getModalCategories(): void {
this.searchService.getCategories().subscribe((res) => {
const categories: Category[] = res;
categories.forEach((category) => {
if (category.id === 'publicsAccompaniment') {
this.categoriesPublic.push(category);
} else if (category.id === 'equipmentsAndServices') {
this.categoriesEquipment.push(category);
} else if (category.id === 'labelsQualifications' || category.id === 'accessModality') {
this.categoriesMoreFilters.push(category);
categories.forEach((category: Category) => {
switch (category.theme) {
case Theme.onlineProcedure:
this.categoriesAccompaniment.push(category);
break;
case Theme.skills:
this.categoriesTraining.push(category);
break;
case Theme.materialAndWifi:
this.categoriesEquipment.push(category);
break;
case Theme.public:
this.categoriesPublic.push(category);
break;
default:
this.categoriesMoreFilters.push(category);
break;
}
});
});
......
export enum Equipment {
wifi = 'wifiEnAccesLibre',
bornes = 'bornesNumeriques',
printer = 'imprimantes',
tablet = 'tablettes',
computer = 'ordinateurs',
scanner = 'scanners',
printer = 'printer',
computer = 'computer',
scanner = 'scanner',
}
export enum PublicCategorie {
under16Years = 'moinsDe16Ans',
young = 'jeunes1625Ans',
adult = 'adultes',
elderly = 'seniorsPlusDe65Ans',
all = 'toutPublic',
women = 'uniquementFemmes',
age = 'age',
handicaps = 'handicaps',
languageAndIlliteracy = 'languageAndIlliteracy',
other = 'publicOthers',
}
export enum Theme {
onlineProcedure = 'Démarches en ligne',
skills = 'Compétences numériques',
public = 'Public',
materialAndWifi = 'Matériel et wifi',
}
......@@ -2,7 +2,7 @@ import { Module } from './module.model';
export class Category {
name: string;
surname: string;
theme: string;
id: string;
modules: Module[];
......@@ -10,30 +10,8 @@ export class Category {
Object.assign(this, obj, {
modules:
obj && obj.modules
? obj.modules.map(
(module) => new Module(module.display_id ? module.display_id : module.id, module.text, module.text)
)
? obj.modules.map((module: Module) => new Module(module.id, module.name, module.displayText, module.apticIds))
: null,
});
}
public isBaseSkills(): boolean {
return this.id === 'baseSkills';
}
public isRigthtsAccess(): boolean {
return this.id === 'accessRight';
}
public isParentingHelp(): boolean {
return this.id === 'parentingHelp';
}
public isDigitalCultureSecurity(): boolean {
return this.id === 'digitalCultureSecurity';
}
public isSocialAndProfessional(): boolean {
return this.id === 'socialAndProfessional';
}
}
export class Module {
id: string;
text: string;
count: number;
name: string;
displayText?: string;
apticIds?: string[];
constructor(id: string, text: string, displayText?: string) {
constructor(id: string, name: string, displayText?: string, apticIds?: string[]) {
this.id = id;
this.text = text;
this.displayText = displayText;
this.name = name;
this.displayText = displayText || name;
this.apticIds = apticIds;
}
}
......@@ -15,21 +15,14 @@ export class SearchService {
constructor(private http: HttpClient) {}
public getCategoriesTraining(): Observable<Category[]> {
return this.http
.get('/api/categories/categoriesFormations')
.pipe(map((data: any[]) => data.map((item) => new Category(item))));
}
public getCategoriesAccompaniment(): Observable<Category[]> {
return this.http
.get('/api/categories/categoriesAccompagnement')
.pipe(map((data: any[]) => data.map((item) => new Category(item))));
}
public getCategoriesOthers(): Observable<Category[]> {
return this.http
.get('/api/categories/categoriesOthers')
.pipe(map((data: any[]) => data.map((item) => new Category(item))));
/**
* Return repository data for search
* @returns {Category[]}
*/
public getCategories(): Observable<Category[]> {
return this.http.get('/api/categories').pipe(map((data: any[]) => data.map((item) => new Category(item))));
}
public getJobs(): Observable<string[]> {
return this.http.get('/api/jobs').pipe(map((data: any[]) => data.map((item) => item.name)));
}
......@@ -50,6 +43,6 @@ export class SearchService {
return this.http.get<any>(`/api/userRegistry/count`).pipe();
}
public getIndex(array: Module[], id: string, categ: string): number {
return array.findIndex((m: Module) => m.id === id && m.text === categ);
return array.findIndex((m: Module) => m.id === id && m.name === categ);
}
}
import { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
import { structureFormStep } from '../form/form-view/structure-form/structureFormStep.enum';
import { Day } from '../models/day.model';
import { Time } from '../models/time.model';
import { Structure } from '../models/structure.model';
import { Time } from '../models/time.model';
import { CustomRegExp } from './CustomRegExp';
export interface IStructureSummary {
......@@ -33,7 +33,7 @@ export class formUtils {
{
step: structureFormStep.structureDigitalHelpingAccompaniment,
name: 'Aides au numérique',
inputs: ['proceduresAccompaniment'],
inputs: ['onlineProcedures'],
},
{ step: structureFormStep.structureTrainingType, name: 'Ateliers au numérique proposés', inputs: null },
{ step: structureFormStep.structureTrainingPrice, name: 'Gratuité des ateliers', inputs: ['freeWorkShop'] },
......@@ -117,22 +117,26 @@ export class formUtils {
placeOfReception: new UntypedFormControl(structure.placeOfReception, !isEditMode && Validators.required),
choiceCompletion: new UntypedFormControl(structure.choiceCompletion, !isEditMode && Validators.required),
exceptionalClosures: new UntypedFormControl(structure.exceptionalClosures),
labelsQualifications: this.loadArrayForCheckbox(structure.labelsQualifications, false),
accessModality: this.loadArrayForCheckbox(structure.accessModality, true),
publicsAccompaniment: this.loadArrayForCheckbox(structure.publicsAccompaniment, false),
proceduresAccompaniment: this.loadArrayForCheckbox(structure.proceduresAccompaniment, false),
categories: new UntypedFormGroup({
labelsQualifications: this.loadArrayForCheckbox(structure.categories?.labelsQualifications, false),
accessModality: this.loadArrayForCheckbox(structure.categories.accessModality, true),
publicsAccompaniment: this.loadArrayForCheckbox(structure.categories.age, false),
onlineProcedures: this.loadArrayForCheckbox(structure.categories.onlineProcedures, false),
handicaps: this.loadArrayForCheckbox(structure.categories.handicaps, false),
age: this.loadArrayForCheckbox(structure.categories.age, true),
languageAndIlliteracy: this.loadArrayForCheckbox(structure.categories.languageAndIlliteracy, false),
selfServiceMaterial: this.loadArrayForCheckbox(structure.categories.selfServiceMaterial, true),
publicOthers: this.loadArrayForCheckbox(structure.categories.publicOthers, false),
equipmentsAndServices: this.loadArrayForCheckbox(structure.categories.equipmentsServices, false),
baseSkills: new UntypedFormControl(structure.categories.baseSkills),
advancedSkills: new UntypedFormControl(structure.categories.advancedSkills),
// solidarityMaterial: this.loadArrayForCheckbox(structure.categories.solidarityMaterial, false),
}),
//TODO: remettre ou migrer les données de accompagnements à distance
remoteAccompaniment: new UntypedFormControl(false),
otherDescription: new UntypedFormControl(structure.otherDescription),
equipmentsAndServices: this.loadArrayForCheckbox(structure.equipmentsAndServices, false),
publics: this.loadArrayForCheckbox(structure.publics, true),
baseSkills: new UntypedFormControl(structure.baseSkills),
accessRight: new UntypedFormControl(structure.accessRight),
parentingHelp: new UntypedFormControl(structure.parentingHelp),
socialAndProfessional: new UntypedFormControl(structure.socialAndProfessional),
digitalCultureSecurity: new UntypedFormControl(structure.digitalCultureSecurity),
nbComputers: new UntypedFormControl(
structure.equipmentsAndServices.includes('ordinateurs') ? structure.nbComputers : 0,
structure.categories.selfServiceMaterial.includes('computer') ? structure.nbComputers : 0,
[
Validators.required,
Validators.pattern(CustomRegExp.NO_NEGATIVE_NUMBER),
......@@ -141,25 +145,7 @@ export class formUtils {
]
),
nbPrinters: new UntypedFormControl(
structure.equipmentsAndServices.includes('imprimantes') ? structure.nbPrinters : 0,
[
Validators.required,
Validators.pattern(CustomRegExp.NO_NEGATIVE_NUMBER),
Validators.min(0),
Validators.max(1000),
]
),
nbTablets: new UntypedFormControl(
structure.equipmentsAndServices.includes('tablettes') ? structure.nbTablets : 0,
[
Validators.required,
Validators.pattern(CustomRegExp.NO_NEGATIVE_NUMBER),
Validators.min(0),
Validators.max(1000),
]
),
nbNumericTerminal: new UntypedFormControl(
structure.equipmentsAndServices.includes('bornesNumeriques') ? structure.nbNumericTerminal : 0,
structure.categories.selfServiceMaterial.includes('printer') ? structure.nbPrinters : 0,
[
Validators.required,
Validators.pattern(CustomRegExp.NO_NEGATIVE_NUMBER),
......@@ -168,7 +154,7 @@ export class formUtils {
]
),
nbScanners: new UntypedFormControl(
structure.equipmentsAndServices.includes('scanners') ? structure.nbScanners : 0,
structure.categories.selfServiceMaterial.includes('scanner') ? structure.nbScanners : 0,
[
Validators.required,
Validators.pattern(CustomRegExp.NO_NEGATIVE_NUMBER),
......@@ -212,4 +198,11 @@ export class formUtils {
sunday: this.createDay(structure.hours.sunday),
});
}
public isInCategoryArray(term: string, formControlName: string, form: UntypedFormGroup): boolean {
if (form.get('categories').get(formControlName).value) {
return form.get('categories').get(formControlName).value.includes(term);
}
return false;
}
}
......@@ -7,7 +7,6 @@ import { FreeWorkshop } from '../shared/enum/freeWorkshop.enum';
import { OtherServices } from '../shared/enum/otherServices.enum';
import { AccessModality } from '../structure-list/enum/access-modality.enum';
import { Equipment } from '../structure-list/enum/equipment.enum';
import { PublicCategorie } from '../structure-list/enum/public.enum';
@Injectable({
providedIn: 'root',
......@@ -77,25 +76,6 @@ export class Utils {
return structure.website !== null && structure.website !== '';
}
public getPublicLabel(tagetPublic: PublicCategorie): string {
switch (tagetPublic) {
case PublicCategorie.young:
return 'Jeunes (16 - 25 ans)';
case PublicCategorie.adult:
return 'Adultes';
case PublicCategorie.elderly:
return 'Séniors (+ de 65 ans)';
case PublicCategorie.all:
return 'Tout public';
case PublicCategorie.under16Years:
return 'Moins de 16 ans';
case PublicCategorie.women:
return 'Uniquement femmes';
default:
return null;
}
}
public getDigitalHelpLabel(digitalHelp: Demarches) {
return Demarches[digitalHelp];
}
......@@ -112,32 +92,24 @@ export class Utils {
* Verify that a structure has equipments and checks that their value is > 0
*/
public hasEquipments(
equipmentsAndServices: string[],
equipmentsServices: string[],
nbComputers: number,
nbNumericTerminal: number,
nbPrinters: number,
nbScanners: number,
nbTablets: number
nbScanners: number
): boolean {
return equipmentsAndServices.length && nbComputers + nbPrinters + nbTablets + nbNumericTerminal + nbScanners > 0;
return equipmentsServices.length && nbComputers + nbPrinters + nbScanners > 0;
}
public filterOnlyEquipments(equipmentsAndServices: string[]): string[] {
return equipmentsAndServices.filter((equipment) =>
['ordinateurs', 'tablettes', 'bornesNumeriques', 'imprimantes', 'scanners'].includes(equipment)
);
return equipmentsAndServices.filter((equipment) => ['ordinateurs', 'imprimantes', 'scanners'].includes(equipment));
}
public getEquipmentsLabelAndValue(equipment: Equipment, number: number): string {
switch (equipment) {
case Equipment.wifi:
return 'Wifi en accès libre';
case Equipment.bornes:
return number > 1 ? `Bornes numériques : ${number}` : `Borne numérique : 1`;
case Equipment.printer:
return number > 1 ? `Imprimantes : ${number}` : `Imprimante : 1`;
case Equipment.tablet:
return number > 1 ? `Tablettes : ${number}` : `Tablette : 1`;
case Equipment.computer:
return number > 1 ? `Ordinateurs : ${number}` : `Ordinateur : 1`;
case Equipment.scanner:
......
This diff is collapsed.
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="16" height="16" rx="2" fill="white" />
<mask id="path-2-inside-1_2994_57" fill="white">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M8.1222 3.73563C8.40285 3.97446 8.63725 4.2761 8.81588 4.63336C8.82048 4.64484 8.82737 4.65879 8.83442 4.67043C9.09409 5.22945 8.66267 5.86507 8.04805 5.85801L7.94587 5.85572C7.61191 5.85113 7.33355 5.63067 7.20593 5.32213C7.14573 5.17385 7.05272 5.05082 6.93216 4.95568C6.70022 4.75622 6.41021 4.66108 6.08559 4.65649C5.76098 4.65419 5.48262 4.75409 5.24133 4.93731C5.00004 5.12054 4.88162 5.41989 4.88408 5.82111L4.89801 12.1139C4.89801 12.6034 4.50353 13 4.01423 13C3.5246 13 3.13026 12.6055 3.13026 12.1162C3.13026 11.3825 3.13223 10.4301 3.13264 10.2274C3.13269 10.2033 3.13272 10.1898 3.13272 10.1885L3.11924 5.95291C3.0831 5.74321 3.00099 5.5522 2.868 5.38731C2.77664 5.26379 2.65656 5.16718 2.51025 5.10222C2.20597 4.96493 1.99437 4.68001 2.00011 4.34605L2.0011 4.24386C2.01356 3.6294 2.66248 3.21817 3.21296 3.49522C3.22428 3.5026 3.23789 3.50998 3.2492 3.5149C3.45847 3.62788 3.64738 3.75993 3.81453 3.90907C3.88865 3.82924 3.96816 3.7551 4.05359 3.68691C4.32966 3.45727 4.64509 3.28339 5.00694 3.16496C5.36895 3.04899 5.72146 2.99568 6.08331 3.00027C6.44516 3.00487 6.807 3.06523 7.16196 3.19055C7.51692 3.31801 7.83219 3.4991 8.1222 3.73563Z" />
</mask>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M8.1222 3.73563C8.40285 3.97446 8.63725 4.2761 8.81588 4.63336C8.82048 4.64484 8.82737 4.65879 8.83442 4.67043C9.09409 5.22945 8.66267 5.86507 8.04805 5.85801L7.94587 5.85572C7.61191 5.85113 7.33355 5.63067 7.20593 5.32213C7.14573 5.17385 7.05272 5.05082 6.93216 4.95568C6.70022 4.75622 6.41021 4.66108 6.08559 4.65649C5.76098 4.65419 5.48262 4.75409 5.24133 4.93731C5.00004 5.12054 4.88162 5.41989 4.88408 5.82111L4.89801 12.1139C4.89801 12.6034 4.50353 13 4.01423 13C3.5246 13 3.13026 12.6055 3.13026 12.1162C3.13026 11.3825 3.13223 10.4301 3.13264 10.2274C3.13269 10.2033 3.13272 10.1898 3.13272 10.1885L3.11924 5.95291C3.0831 5.74321 3.00099 5.5522 2.868 5.38731C2.77664 5.26379 2.65656 5.16718 2.51025 5.10222C2.20597 4.96493 1.99437 4.68001 2.00011 4.34605L2.0011 4.24386C2.01356 3.6294 2.66248 3.21817 3.21296 3.49522C3.22428 3.5026 3.23789 3.50998 3.2492 3.5149C3.45847 3.62788 3.64738 3.75993 3.81453 3.90907C3.88865 3.82924 3.96816 3.7551 4.05359 3.68691C4.32966 3.45727 4.64509 3.28339 5.00694 3.16496C5.36895 3.04899 5.72146 2.99568 6.08331 3.00027C6.44516 3.00487 6.807 3.06523 7.16196 3.19055C7.51692 3.31801 7.83219 3.4991 8.1222 3.73563Z"
fill="black" />
<path
d="M8.81588 4.63336L9.74436 4.26197L9.72891 4.22335L9.71031 4.18615L8.81588 4.63336ZM8.1222 3.73563L8.77027 2.97405L8.76233 2.96729L8.75424 2.96069L8.1222 3.73563ZM8.83442 4.67043L9.74136 4.24916L9.71823 4.19936L9.68978 4.15239L8.83442 4.67043ZM8.04805 5.85801L8.02562 6.85782L8.03658 6.85795L8.04805 5.85801ZM7.94587 5.85572L7.96831 4.85593L7.95962 4.85581L7.94587 5.85572ZM7.20593 5.32213L6.27936 5.6983L6.28186 5.70434L7.20593 5.32213ZM6.93216 4.95568L6.28013 5.71388L6.29612 5.72764L6.31269 5.7407L6.93216 4.95568ZM6.08559 4.65649L6.09974 3.65656L6.09267 3.65651L6.08559 4.65649ZM4.88408 5.82111L5.88408 5.81889L5.88406 5.81498L4.88408 5.82111ZM4.89801 12.1139H5.89802L5.89801 12.1117L4.89801 12.1139ZM3.13264 10.2274L4.13264 10.2295V10.2295L3.13264 10.2274ZM3.13272 10.1885H4.13273L4.13272 10.1853L3.13272 10.1885ZM3.11924 5.95291L4.11924 5.94973L4.11897 5.86579L4.10472 5.78308L3.11924 5.95291ZM2.868 5.38731L2.06405 5.982L2.07648 5.9988L2.0896 6.01507L2.868 5.38731ZM2.51025 5.10222L2.09896 6.01375L2.10449 6.0162L2.51025 5.10222ZM2.00011 4.34605L3 4.36323L3.00007 4.35565L2.00011 4.34605ZM2.0011 4.24386L1.00124 4.22357L1.00114 4.23426L2.0011 4.24386ZM3.21296 3.49522L3.75923 2.65761L3.71243 2.62708L3.66252 2.60196L3.21296 3.49522ZM3.2492 3.5149L3.72428 2.63496L3.6869 2.61477L3.64793 2.59783L3.2492 3.5149ZM3.81453 3.90907L3.14877 4.65523L3.8803 5.30794L4.54736 4.58948L3.81453 3.90907ZM4.05359 3.68691L4.67742 4.46847L4.68532 4.46216L4.6931 4.45569L4.05359 3.68691ZM5.00694 3.16496L4.70186 2.21262L4.69589 2.21457L5.00694 3.16496ZM6.08331 3.00027L6.07062 4.00019L6.08331 3.00027ZM7.16196 3.19055L7.4999 2.24937L7.49487 2.2476L7.16196 3.19055ZM9.71031 4.18615C9.47533 3.71618 9.15961 3.30536 8.77027 2.97405L7.47412 4.4972C7.6461 4.64355 7.79918 4.83603 7.92146 5.08057L9.71031 4.18615ZM9.68978 4.15239C9.70227 4.17301 9.71184 4.19094 9.71917 4.20564C9.72642 4.22018 9.73513 4.23889 9.74436 4.26197L7.88741 5.00475C7.91231 5.067 7.94365 5.13 7.97907 5.18847L9.68978 4.15239ZM8.03658 6.85795C9.34886 6.87301 10.3269 5.50977 9.74136 4.24916L7.92749 5.0917C7.91553 5.06596 7.9088 5.03098 7.9123 4.99528C7.91551 4.96255 7.92626 4.93795 7.93753 4.92107C7.95921 4.88862 8.00447 4.85745 8.05953 4.85808L8.03658 6.85795ZM7.92344 6.85547L8.02562 6.85776L8.07048 4.85826L7.96831 4.85597L7.92344 6.85547ZM6.28186 5.70434C6.5363 6.3195 7.13483 6.84466 7.93212 6.85563L7.95962 4.85581C8.01532 4.85658 8.06334 4.87683 8.09362 4.89925C8.12074 4.91933 8.12861 4.93654 8.13001 4.93992L6.28186 5.70434ZM6.31269 5.7407C6.30608 5.73549 6.29843 5.72798 6.29144 5.71865C6.28446 5.70934 6.28078 5.70174 6.27938 5.69829L8.13249 4.94597C8.00766 4.63849 7.80943 4.3741 7.55163 4.17066L6.31269 5.7407ZM6.07144 5.65639C6.20328 5.65825 6.2551 5.69236 6.28013 5.71388L7.58418 4.19749C7.14533 3.82009 6.61714 3.66391 6.09974 3.65659L6.07144 5.65639ZM5.84609 5.73373C5.91804 5.67909 5.9828 5.65578 6.07852 5.65646L6.09267 3.65651C5.53916 3.6526 5.0472 3.82909 4.63658 4.1409L5.84609 5.73373ZM5.88406 5.81498C5.88342 5.71075 5.8992 5.67028 5.89912 5.67049C5.89865 5.67167 5.89442 5.68152 5.88388 5.69561C5.87309 5.71001 5.85984 5.72328 5.84609 5.73373L4.63658 4.1409C4.06194 4.57725 3.88044 5.23186 3.8841 5.82724L5.88406 5.81498ZM5.89801 12.1117L5.88407 5.81889L3.88408 5.82332L3.89802 12.1161L5.89801 12.1117ZM4.01423 14C5.0591 14 5.89801 13.1524 5.89801 12.1139H3.89801C3.89801 12.0544 3.94796 12 4.01423 12V14ZM2.13026 12.1162C2.13026 13.1578 2.97232 14 4.01423 14V12C4.07687 12 4.13026 12.0532 4.13026 12.1162H2.13026ZM2.13265 10.2253C2.13223 10.4279 2.13026 11.3813 2.13026 12.1162H4.13026C4.13026 11.3836 4.13222 10.4323 4.13264 10.2295L2.13265 10.2253ZM2.13272 10.1885C2.13272 10.1876 2.13272 10.1874 2.13272 10.1899C2.13272 10.1916 2.13271 10.1941 2.1327 10.1974C2.13269 10.2039 2.13267 10.2133 2.13265 10.2253L4.13264 10.2295C4.13269 10.2066 4.13272 10.1911 4.13272 10.1885H2.13272ZM2.11925 5.9561L2.13273 10.1917L4.13272 10.1853L4.11924 5.94973L2.11925 5.9561ZM2.0896 6.01507C2.1075 6.03727 2.12424 6.06745 2.13377 6.12275L4.10472 5.78308C4.04196 5.41896 3.89448 5.06714 3.64641 4.75954L2.0896 6.01507ZM2.10449 6.0162C2.10176 6.01499 2.09461 6.01133 2.08561 6.00413C2.07657 5.99691 2.06921 5.98897 2.06405 5.982L3.67196 4.79261C3.4762 4.52797 3.21809 4.32235 2.91601 4.18824L2.10449 6.0162ZM1.00026 4.32886C0.986559 5.12597 1.49261 5.74014 2.09896 6.01373L2.92153 4.19072C2.92467 4.19213 2.94155 4.20046 2.96076 4.22816C2.98222 4.25911 3.00092 4.30768 2.99997 4.36323L1.00026 4.32886ZM1.00114 4.23426L1.00016 4.33644L3.00007 4.35565L3.00105 4.25346L1.00114 4.23426ZM3.66252 2.60196C2.42094 1.97711 1.02791 2.91194 1.0013 4.22357L3.00089 4.26414C2.99977 4.31919 2.96721 4.36331 2.93425 4.38386C2.91708 4.39456 2.89219 4.40453 2.85939 4.40671C2.82361 4.40908 2.78882 4.40126 2.76341 4.38847L3.66252 2.60196ZM3.64793 2.59783C3.67351 2.60895 3.69365 2.61924 3.70822 2.62715C3.72321 2.63529 3.74026 2.64523 3.75923 2.65761L2.66669 4.33283C2.72103 4.36826 2.78379 4.40297 2.85048 4.43197L3.64793 2.59783ZM4.4803 3.16291C4.25241 2.95958 3.99897 2.78326 3.72428 2.63496L2.77413 4.39484C2.91797 4.4725 3.04235 4.56028 3.14877 4.65523L4.4803 3.16291ZM3.42977 2.90535C3.30435 3.00545 3.18855 3.11358 3.0817 3.22866L4.54736 4.58948C4.58875 4.5449 4.63196 4.50476 4.67742 4.46847L3.42977 2.90535ZM4.69589 2.21457C4.21857 2.37079 3.79076 2.60479 3.41408 2.91813L4.6931 4.45569C4.86855 4.30975 5.07161 4.19599 5.31799 4.11536L4.69589 2.21457ZM6.096 2.00035C5.62268 1.99435 5.16299 2.06492 4.70187 2.21264L5.31201 4.11729C5.57492 4.03307 5.82023 3.99701 6.07062 4.00019L6.096 2.00035ZM7.49487 2.2476C7.03226 2.08427 6.56184 2.00627 6.096 2.00035L6.07062 4.00019C6.32848 4.00347 6.58174 4.0462 6.82905 4.13351L7.49487 2.2476ZM8.75424 2.96069C8.37961 2.65514 7.96552 2.41657 7.4999 2.24938L6.82403 4.13172C7.06833 4.21944 7.28477 4.34305 7.49016 4.51056L8.75424 2.96069Z"
fill="black" mask="url(#path-2-inside-1_2994_57)" />
<path
d="M14.0811 4.54053C14.0811 3.69022 13.3907 3 12.5405 3C11.6904 3 11 3.69022 11 4.54053V6.08088H12.5633V6.07836C13.4036 6.06562 14.0811 5.38312 14.0811 4.54053Z"
fill="#F35453" />
</svg>
<svg id="lyon" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.09413 20.5586C2.75675 20.9278 2.26844 21.1405 1.7511 21.1405C1.27064 21.1405 0.811351 20.9564 0.473971 20.6221C0.0075125 20.1608 0 19.7135 0 18.5705C0 17.4273 0.0075125 16.9799 0.473971 16.5183C0.811351 16.1843 1.27064 16.0002 1.7511 16.0002C2.6485 16.0002 3.3376 16.5818 3.49571 17.4768H3.10847C2.95754 16.7809 2.44088 16.3404 1.7511 16.3404C1.38503 16.3404 1.04082 16.4756 0.783008 16.7313C0.416944 17.0933 0.387919 17.484 0.387919 18.5705C0.387919 19.6568 0.416603 20.0471 0.782667 20.4094C1.04048 20.6648 1.38503 20.7997 1.75076 20.7997C2.15336 20.7997 2.54776 20.6297 2.81378 20.31C3.03642 20.0403 3.12247 19.7418 3.12247 19.3085V18.854H1.7511V18.5132H3.51005V19.3372C3.51005 19.8627 3.39531 20.2387 3.09413 20.5586" fill="#E30613"/>
<path d="M6.76769 16.3834H5.26006V18.4282H6.76769C7.42127 18.4282 7.89422 18.1017 7.89422 17.4058C7.89422 16.7095 7.42093 16.3834 6.76769 16.3834V16.3834ZM7.88739 21.0982L6.66763 18.7693H5.26006V21.0982H4.87317V16.043H6.81788C7.65075 16.043 8.28248 16.5183 8.28248 17.399C8.28248 18.1513 7.82251 18.6416 7.10541 18.7622L8.33951 21.0982H7.88739Z" fill="#E30613"/>
<path d="M10.959 16.5538L9.88983 19.5288H12.0285L10.959 16.5538ZM12.5957 21.0982L12.1508 19.8696H9.76758L9.32229 21.0982H8.90637L10.7872 16.043H11.1318L13.012 21.0982H12.5957Z" fill="#E30613"/>
<path d="M17.2454 21.0982L14.296 16.7034V21.0982H13.9084V16.043H14.296L17.2454 20.4234V16.043H17.6336V21.0982H17.2454Z" fill="#E30613"/>
<path d="M21.9307 16.7742C21.6367 16.4761 21.2416 16.3839 20.8328 16.3839H19.5977V20.7575H20.8328C21.2416 20.7575 21.6367 20.6653 21.9307 20.3662C22.3394 19.9547 22.3114 19.0604 22.3114 18.4993C22.3114 17.9383 22.3394 17.186 21.9307 16.7742V16.7742ZM22.2035 20.6366C21.902 20.9344 21.4574 21.098 20.9257 21.098H19.2108V16.0427H20.9257C21.4577 16.0427 21.902 16.2063 22.2035 16.5041C22.7205 17.0156 22.699 17.8177 22.699 18.4997C22.699 19.1806 22.7205 20.1254 22.2035 20.6366Z" fill="#E30613"/>
<path d="M23.8826 21.0982V16.043H24.8807V20.2182H27.199V21.0982H23.8826Z" fill="#020203"/>
<path d="M29.3876 19.0242V21.0983H28.3969V19.0242L26.861 16.0427H27.9445L28.8989 18.081L29.8393 16.0427H30.9225L29.3876 19.0242Z" fill="#020203"/>
<path d="M33.822 17.1501C33.6775 16.9865 33.4562 16.8803 33.1827 16.8803C32.9095 16.8803 32.6797 16.9869 32.5363 17.1501C32.3423 17.3632 32.2921 17.5981 32.2921 18.5703C32.2921 19.5425 32.342 19.7774 32.5363 19.9902C32.6797 20.1534 32.9095 20.2603 33.1827 20.2603C33.4562 20.2603 33.6775 20.1534 33.822 19.9902C34.0149 19.7774 34.0723 19.5425 34.0723 18.5703C34.0723 17.5981 34.0152 17.3632 33.822 17.1501ZM34.5606 20.5874C34.202 20.9422 33.7643 21.1406 33.1827 21.1406C32.6012 21.1406 32.1559 20.9422 31.7973 20.5874C31.2807 20.0759 31.2943 19.4435 31.2943 18.5706C31.2943 17.6965 31.2807 17.0654 31.7973 16.5542C32.1559 16.1987 32.6012 16 33.1827 16C33.7643 16 34.202 16.1987 34.5606 16.5539C35.0776 17.0651 35.0704 17.6965 35.0704 18.5703C35.0707 19.4435 35.0776 20.0759 34.5606 20.5874Z" fill="#020203"/>
<path d="M39.1101 21.0982L37.0859 17.9955V21.0982H36.0887V16.043H36.9786L39.0022 19.1381V16.043H40V21.0982H39.1101Z" fill="#020203"/>
<path d="M33.9138 22.6936H33.9193C33.9821 22.5887 34.0606 22.5378 34.1808 22.5378C34.3635 22.5378 34.5486 22.6092 34.5486 23.104C34.5486 23.3854 34.5394 23.7088 34.1716 23.7088C34.0637 23.7088 33.9841 23.6616 33.9213 23.5732H33.9141V24.1127H33.7297V22.56H33.9141V22.6936H33.9138ZM34.3546 23.104C34.3546 22.9346 34.3546 22.6871 34.1218 22.6871C33.894 22.6871 33.9138 22.9988 33.9138 23.1709C33.9138 23.3205 33.9237 23.5595 34.1286 23.5595C34.3273 23.5595 34.3546 23.4055 34.3546 23.104Z" fill="black"/>
<path d="M21.1631 23.5238H21.1583C21.1023 23.6532 21.0135 23.7085 20.8715 23.7085C20.6301 23.7085 20.5601 23.5552 20.5601 23.3384C20.5601 22.9969 20.8988 22.9815 21.1583 22.9883C21.1631 22.8388 21.1652 22.6756 20.9664 22.6756C20.8428 22.6756 20.7769 22.7585 20.7885 22.877H20.5874C20.5969 22.6247 20.7318 22.5376 20.9739 22.5376C21.2673 22.5376 21.3438 22.6872 21.3438 22.877V23.419C21.3438 23.5084 21.3526 23.5999 21.3663 23.6863H21.1631V23.5238ZM20.7455 23.3517C20.7455 23.4613 20.7994 23.5593 20.9234 23.5593C21.0361 23.5593 21.1761 23.49 21.1583 23.126C20.9825 23.1287 20.7455 23.113 20.7455 23.3517Z" fill="black"/>
<path d="M24.4922 23.6867V22.9057C24.4922 22.7917 24.4608 22.6872 24.3119 22.6872C24.2552 22.6872 24.1784 22.7203 24.1517 22.7626C24.1179 22.8186 24.1087 22.8856 24.1087 22.9279V23.6867H23.9236V22.794C23.9236 22.7158 23.9188 22.638 23.9124 22.5601H24.1087V22.7001H24.1135C24.1678 22.5793 24.2644 22.5376 24.3973 22.5376C24.5017 22.5376 24.6213 22.5793 24.6633 22.6824C24.7271 22.5618 24.8306 22.5376 24.9347 22.5376C25.0546 22.5376 25.2462 22.5639 25.2462 22.8296V23.6863H25.0611V22.9054C25.0611 22.7913 25.0293 22.6868 24.8801 22.6868C24.8104 22.6868 24.7906 22.6889 24.7408 22.7292C24.6861 22.7739 24.6773 22.8852 24.6773 22.9276V23.6863H24.4922V23.6867Z" fill="black"/>
<path d="M26.5946 23.1819C26.5946 23.4968 26.6803 23.5589 26.8248 23.5589C26.9508 23.5589 27.0167 23.4589 27.0232 23.3448H27.2263C27.224 23.5948 27.0682 23.7085 26.8296 23.7085C26.5881 23.7085 26.3959 23.6371 26.3959 23.1392C26.3959 22.809 26.4338 22.5369 26.8296 22.5369C27.154 22.5369 27.2356 22.7134 27.2356 23.0853V23.1812H26.5946V23.1819ZM27.0389 23.0436C27.0389 22.7158 26.9467 22.6755 26.8111 22.6755C26.6933 22.6755 26.5967 22.7319 26.5946 23.0436H27.0389ZM27.084 22.0752L26.7886 22.3897H26.6376L26.8384 22.0752H27.084Z" fill="black"/>
<path d="M28.4868 22.5599V22.343L28.6719 22.2607V22.5599H28.9201V22.6978H28.6719V23.388C28.6719 23.4593 28.6719 23.5512 28.8412 23.5512C28.8542 23.5512 28.8836 23.5461 28.9242 23.542V23.6827C28.8634 23.6871 28.8027 23.7008 28.7415 23.7008C28.5653 23.7008 28.4868 23.629 28.4868 23.4993V22.6982H28.2993V22.5599H28.4868Z" fill="black"/>
<path d="M30.3044 22.7295H30.3089C30.3854 22.5571 30.4803 22.5376 30.6613 22.5376V22.7271C30.6449 22.7244 30.6268 22.7223 30.6114 22.7199C30.5954 22.7179 30.5797 22.7155 30.5619 22.7155C30.3563 22.7155 30.3044 22.8699 30.3044 23.0211V23.6863H30.119V22.5598H30.3044V22.7295Z" fill="black"/>
<path d="M31.7151 23.1394C31.7151 22.8099 31.7533 22.5374 32.1484 22.5374C32.5435 22.5374 32.5821 22.8099 32.5821 23.1394C32.5821 23.6376 32.3902 23.7086 32.1484 23.7086C31.9067 23.7086 31.7151 23.6376 31.7151 23.1394ZM32.3878 23.0619C32.3878 22.7542 32.2905 22.6869 32.1484 22.6869C32.0064 22.6869 31.9097 22.7538 31.9097 23.0619C31.9097 23.4276 31.9572 23.5597 32.1484 23.5597C32.3407 23.5597 32.3878 23.4276 32.3878 23.0619Z" fill="black"/>
<path d="M35.6803 23.1394C35.6803 22.8099 35.7182 22.5374 36.1136 22.5374C36.5084 22.5374 36.547 22.8099 36.547 23.1394C36.547 23.6376 36.3551 23.7086 36.1136 23.7086C35.8722 23.7086 35.6803 23.6376 35.6803 23.1394ZM36.353 23.0619C36.353 22.7542 36.2557 22.6869 36.1136 22.6869C35.9716 22.6869 35.8746 22.7538 35.8746 23.0619C35.8746 23.4276 35.9221 23.5597 36.1136 23.5597C36.3055 23.5597 36.353 23.4276 36.353 23.0619Z" fill="black"/>
<path d="M37.931 22.0752H37.7456V23.6866H37.931V22.0752Z" fill="black"/>
<path d="M39.2969 23.1821C39.2969 23.4969 39.383 23.5594 39.5271 23.5594C39.6534 23.5594 39.719 23.459 39.7258 23.3449H39.9286C39.9266 23.5952 39.7709 23.7086 39.5318 23.7086C39.2904 23.7086 39.0985 23.6373 39.0985 23.1394C39.0985 22.8092 39.1361 22.5374 39.5318 22.5374C39.8566 22.5374 39.9379 22.7132 39.9379 23.0854V23.1814H39.2969V23.1821ZM39.7408 23.0438C39.7408 22.7159 39.6486 22.6757 39.5131 22.6757C39.3956 22.6757 39.299 22.732 39.2966 23.0438H39.7408Z" fill="black"/>
<path d="M19.497 22.0752H19.3119V23.6866H19.497V22.0752Z" fill="black"/>
</svg>
\ No newline at end of file
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M36.8181 24.6159L37.1508 24.1342H36.0482L35.7303 24.6159H33.9224V31.1375H37.9853V30.308H34.7767V27.5961H38.0002V26.7666H34.7767V25.4454H38.0002V24.6159H36.8181Z"
fill="#E83182" />
<path d="M28.1162 25.4454H30.2669V31.1375H31.141V25.4454H33.3414V24.616H28.1162V25.4454Z" fill="#E83182" />
<path
d="M25.3146 24.447C23.7947 24.447 22.5083 25.7632 22.5083 27.3179V31.1374H23.3626V27.3179C23.3626 26.1805 24.2169 25.2914 25.3096 25.2914C26.4123 25.2914 27.207 26.1755 27.207 27.3924V31.1374H28.0712V27.3924C28.0812 25.7682 26.8394 24.447 25.3146 24.447Z"
fill="#E83182" />
<path
d="M18.7238 24.447C17.2039 24.447 15.9175 25.7632 15.9175 27.3179V31.1374H16.7718V28.6689H20.6211V31.1374H21.4854V27.3924C21.4854 25.7682 20.2436 24.447 18.7238 24.447ZM20.6211 27.8444H16.7718V27.3179C16.7718 26.1805 17.6261 25.2914 18.7188 25.2914C19.8215 25.2914 20.6162 26.1755 20.6162 27.3924V27.8444H20.6211Z"
fill="#E83182" />
<path
d="M15.0478 29.1556C15.0478 28.202 14.5114 27.4967 13.4534 27.0646C12.2614 26.5579 12.162 26.3791 12.162 25.9718C12.162 25.6788 12.2813 25.3261 12.8624 25.3261C13.3293 25.3261 13.5329 25.505 13.6074 25.9917L13.6422 26.2301L14.4766 26.0761L14.4369 25.8477C14.2829 24.9785 13.7117 24.4768 12.8723 24.4768C11.9584 24.4768 11.3177 25.1175 11.3177 26.0364C11.3177 26.4735 11.4816 26.8758 11.7746 27.1689C12.018 27.4073 12.2663 27.5513 12.8673 27.8295C13.3988 28.0629 13.6322 28.197 13.8309 28.3808C14.0693 28.6242 14.1885 28.9023 14.1885 29.2351C14.1885 29.9454 13.6322 30.4768 12.8922 30.4768C12.167 30.4768 11.6207 30.0099 11.6207 29.394V28.6838H10.7812V29.399C10.7812 30.447 11.7399 31.3311 12.8723 31.3311C14.0743 31.3311 15.0478 30.3576 15.0478 29.1556Z"
fill="#E83182" />
<path
d="M36.0429 22.5149H32.8343V19.798H36.0628V18.9685H32.8343V17.6473H36.0429V16.8179H31.98V23.3444H36.0429V22.5149Z"
fill="#E83182" />
<path
d="M30.5747 21.9537C29.8049 22.505 29.3728 22.6838 28.7817 22.6838C27.6641 22.6838 26.7403 21.9835 26.3976 20.9851C26.3877 20.9503 26.3728 20.9205 26.3628 20.8858V20.8808C26.2933 20.6424 26.2536 20.3841 26.2536 20.1209C26.2536 19.8527 26.2933 19.5993 26.3628 19.3609V19.356C26.3728 19.3212 26.3877 19.2864 26.3976 19.2517C26.7403 18.2533 27.6641 17.558 28.7817 17.558C29.3728 17.558 29.8098 17.7368 30.5747 18.2881L30.7685 18.4272L31.2403 17.7268L31.0565 17.5927C30.1675 16.947 29.5516 16.7086 28.7767 16.7086C28.7718 16.7086 28.7718 16.7086 28.7668 16.7086C27.8777 16.7086 27.0383 17.0662 26.3976 17.7169C25.7569 18.3626 25.4092 19.2169 25.4092 20.1109C25.4092 20.1159 25.4092 20.1209 25.4092 20.1258C25.4092 20.1308 25.4092 20.1358 25.4092 20.1407C25.4092 21.0348 25.7618 21.8841 26.3976 22.5348C27.0383 23.1854 27.8777 23.5431 28.7668 23.5431C28.7718 23.5431 28.7718 23.5431 28.7767 23.5431C29.5516 23.5431 30.1675 23.3046 31.0565 22.659L31.2403 22.5248L30.7685 21.8245L30.5747 21.9537Z"
fill="#E83182" />
<path
d="M21.9865 16.649C20.4666 16.649 19.1802 17.9653 19.1802 19.5199V23.3394H20.0345V20.8709H23.8838V23.3394H24.7481V19.5944C24.7481 17.9702 23.5113 16.649 21.9865 16.649ZM20.0345 20.0514V19.5249C20.0345 18.3875 20.8888 17.4984 21.9815 17.4984C23.0842 17.4984 23.8789 18.3825 23.8789 19.5994V20.0514H20.0345Z"
fill="#E83182" />
<path
d="M14.8095 21.4173H16.3293C17.5264 21.4173 18.6538 20.3196 18.6538 19.1574C18.6538 18.611 18.3608 17.9603 17.9237 17.5332C17.7101 17.3295 17.4568 17.1656 17.1687 17.0415C16.836 16.8875 16.528 16.813 16.2499 16.813H13.9502V23.3395H14.8045V21.4173H14.8095ZM14.8095 17.6474H16.2399C17.124 17.6474 17.7946 18.2931 17.7946 19.1524C17.7946 19.9719 17.1588 20.5878 16.3144 20.5878H14.8095V17.6474Z"
fill="#E83182" />
<path
d="M13.0761 21.3626C13.0761 20.409 12.5397 19.7037 11.4818 19.2716C10.2897 18.765 10.1904 18.5862 10.1904 18.1789C10.1904 17.8858 10.3096 17.5332 10.8907 17.5332C11.3576 17.5332 11.5612 17.712 11.6357 18.1987L11.6705 18.4371L12.5049 18.2832L12.4652 18.0547C12.3112 17.1855 11.74 16.6838 10.9006 16.6838C9.98672 16.6838 9.34599 17.3246 9.34599 18.2434C9.34599 18.6805 9.5099 19.0828 9.80295 19.3759C10.0463 19.6143 10.2947 19.7583 10.8957 20.0365C11.4271 20.2699 11.6606 20.404 11.8592 20.5878C12.0977 20.8312 12.2169 21.1093 12.2169 21.4421C12.2169 22.1524 11.6606 22.6838 10.9205 22.6838C10.1953 22.6838 9.64898 22.217 9.64898 21.6011V20.8908H8.80957V21.6011C8.80957 22.6491 9.76818 23.5332 10.9006 23.5332C12.0977 23.5381 13.0761 22.5597 13.0761 21.3626Z"
fill="#E83182" />
<path
d="M4.95538 17.697H8.16399V16.8676H4.10107V23.394H8.16399V22.5646H4.95538V19.8477H8.18386V19.0182H4.95538V17.697Z"
fill="#E83182" />
<path
d="M37.9946 16.654C37.9946 15.6904 37.2098 14.9007 36.2413 14.9007L24.5939 14.8808V11.9504C24.5939 10.3262 22.8853 9.005 21.3605 9.005C19.8406 9.005 18.5542 10.3212 18.5542 11.8759V15.6954H19.4085V11.8759C19.4085 10.7384 20.2628 9.84938 21.3555 9.84938C22.4582 9.84938 23.7247 10.7335 23.7247 11.9504V15.7153L36.2363 15.7053C36.738 15.7053 37.1304 16.1524 37.1304 16.654V23.3444H37.9847V16.654H37.9946Z"
fill="#0C419A" />
<path
d="M14.4125 15.909C15.3115 15.909 16.1609 15.5464 16.8065 14.8958C17.4522 14.2451 17.8049 13.3858 17.8049 12.4769C17.8049 11.5779 17.4473 10.7286 16.8016 10.0829C16.1509 9.4322 15.2966 9.07458 14.3877 9.07458C12.545 9.07458 10.9854 10.6491 10.9854 12.5117C10.9903 14.3494 12.5599 15.909 14.4125 15.909ZM14.3976 9.91896C15.838 9.91896 16.9705 11.0464 16.9705 12.4819C16.9705 13.9322 15.8479 15.0696 14.4175 15.0696C12.9721 15.0696 11.8397 13.9421 11.8397 12.5067C11.8347 11.0564 12.9622 9.91896 14.3976 9.91896Z"
fill="#0C419A" />
<path
d="M3.74338 30.3129C3.24172 30.3129 2.84934 29.8907 2.84934 29.3891V11.2152C2.84934 10.4205 3.39073 9.86424 4.1606 9.86424C5.02484 9.86424 5.6755 10.5 5.6755 11.3444V15.7053H6.53974V11.3394C6.53974 10.8079 6.62914 10.5596 6.92219 10.2765C7.21027 10.0033 7.59272 9.85431 7.99504 9.85431C8.79471 9.85431 9.40067 10.495 9.40067 11.3394V15.7053H10.255V11.2649C10.255 10.0579 9.20199 9 8.00497 9C7.41888 9 6.80298 9.25828 6.3659 9.68543C6.25166 9.7947 6.17219 9.88907 6.09272 10.0132C6.02815 9.92384 5.96358 9.84934 5.87417 9.75497L5.86424 9.74503C5.65067 9.54139 5.41225 9.36755 5.17384 9.24338L5.16391 9.23841C4.8659 9.1043 4.53311 9.03477 4.18543 9.03477C2.93874 9.03477 2 10.0331 2 11.3593V21.9387V29.399C2 30.3626 2.78477 31.1523 3.75331 31.1523H10.255V30.3229L3.74338 30.3129Z"
fill="#0C419A" />
</svg>
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M4.93262 8C4.93262 6.89543 5.82805 6 6.93262 6H23.7433C24.8478 6 25.7433 6.89543 25.7433 8V15.3513C25.7433 16.4558 24.8478 17.3513 23.7433 17.3513H10.766L9.18549 19.2479C8.53254 20.0314 7.2632 19.4494 7.43088 18.4433L7.61288 17.3513H6.93262C5.82805 17.3513 4.93262 16.4558 4.93262 15.3513V8ZM11.5543 12.6215C12.0768 12.6215 12.5003 12.198 12.5003 11.6756C12.5003 11.1532 12.0768 10.7296 11.5543 10.7296C11.0319 10.7296 10.6084 11.1532 10.6084 11.6756C10.6084 12.198 11.0319 12.6215 11.5543 12.6215ZM16.2839 11.6756C16.2839 12.1981 15.8604 12.6216 15.338 12.6216C14.8156 12.6216 14.392 12.1981 14.392 11.6756C14.392 11.1532 14.8156 10.7297 15.338 10.7297C15.8604 10.7297 16.2839 11.1532 16.2839 11.6756ZM19.1217 12.6216C19.6441 12.6216 20.0676 12.1981 20.0676 11.6756C20.0676 11.1532 19.6441 10.7297 19.1217 10.7297C18.5993 10.7297 18.1758 11.1532 18.1758 11.6756C18.1758 12.1981 18.5993 12.6216 19.1217 12.6216Z"
fill="#0F5282" />
<path fill-rule="evenodd" clip-rule="evenodd"
d="M34.0677 22.1989C34.0677 21.0943 33.1723 20.1989 32.0677 20.1989H12.7598C11.6552 20.1989 10.7598 21.0943 10.7598 22.1989V30.9123C10.7598 32.0168 11.6552 32.9123 12.7598 32.9123H27.6148L29.6006 35.0966C30.2767 35.8403 31.5042 35.2339 31.3244 34.2451L31.0821 32.9123H32.0677C33.1723 32.9123 34.0677 32.0168 34.0677 30.9123V22.1989ZM16.444 23.512C16.3373 23.584 16.2387 23.66 16.148 23.74L16.408 24.152C16.4507 24.232 16.52 24.272 16.616 24.272C16.656 24.272 16.7013 24.256 16.752 24.224C16.8027 24.1893 16.864 24.152 16.936 24.112C17.0107 24.0693 17.1 24.032 17.204 24C17.3107 23.9653 17.44 23.948 17.592 23.948C17.696 23.948 17.792 23.9627 17.88 23.992C17.9707 24.0213 18.048 24.064 18.112 24.12C18.176 24.1733 18.2253 24.2387 18.26 24.316C18.2973 24.3907 18.316 24.476 18.316 24.572C18.316 24.716 18.2867 24.8413 18.228 24.948C18.1693 25.0547 18.096 25.1507 18.008 25.236C17.92 25.3187 17.8253 25.396 17.724 25.468C17.6227 25.54 17.528 25.6147 17.44 25.692C17.352 25.7667 17.2787 25.848 17.22 25.936C17.1613 26.0213 17.132 26.1227 17.132 26.24V26.276C17.132 26.284 17.1333 26.2947 17.136 26.308L17.204 26.96H17.88L17.972 26.376C17.9853 26.2907 18.0253 26.2147 18.092 26.148C18.1613 26.0787 18.2427 26.0093 18.336 25.94L18.632 25.712C18.736 25.632 18.832 25.5373 18.92 25.428C19.0107 25.3187 19.0853 25.1907 19.144 25.044C19.2027 24.8947 19.232 24.7187 19.232 24.516C19.232 24.308 19.1947 24.12 19.12 23.952C19.0453 23.784 18.94 23.6413 18.804 23.524C18.668 23.404 18.504 23.312 18.312 23.248C18.1227 23.184 17.912 23.152 17.68 23.152C17.5093 23.152 17.3507 23.168 17.204 23.2C17.0573 23.2293 16.9213 23.2707 16.796 23.324C16.6707 23.3773 16.5533 23.44 16.444 23.512ZM16.948 28.22C16.9187 28.2947 16.904 28.3733 16.904 28.456C16.904 28.5413 16.9187 28.6213 16.948 28.696C16.98 28.768 17.0227 28.8307 17.076 28.884C17.132 28.9373 17.1973 28.9787 17.272 29.008C17.3467 29.04 17.4267 29.056 17.512 29.056C17.5947 29.056 17.6733 29.04 17.748 29.008C17.8227 28.9787 17.8867 28.9373 17.94 28.884C17.9933 28.8307 18.036 28.768 18.068 28.696C18.1 28.6213 18.116 28.5413 18.116 28.456C18.116 28.3733 18.1 28.2947 18.068 28.22C18.036 28.1453 17.9933 28.0813 17.94 28.028C17.8867 27.9747 17.8227 27.932 17.748 27.9C17.6733 27.868 17.5947 27.852 17.512 27.852C17.4267 27.852 17.3467 27.868 17.272 27.9C17.1973 27.932 17.132 27.9747 17.076 28.028C17.0227 28.0813 16.98 28.1453 16.948 28.22ZM21.0912 23.512C20.9845 23.584 20.8859 23.66 20.7952 23.74L21.0552 24.152C21.0979 24.232 21.1672 24.272 21.2632 24.272C21.3032 24.272 21.3485 24.256 21.3992 24.224C21.4499 24.1893 21.5112 24.152 21.5832 24.112C21.6579 24.0693 21.7472 24.032 21.8512 24C21.9579 23.9653 22.0872 23.948 22.2392 23.948C22.3432 23.948 22.4392 23.9627 22.5272 23.992C22.6179 24.0213 22.6952 24.064 22.7592 24.12C22.8232 24.1733 22.8725 24.2387 22.9072 24.316C22.9445 24.3907 22.9632 24.476 22.9632 24.572C22.9632 24.716 22.9339 24.8413 22.8752 24.948C22.8165 25.0547 22.7432 25.1507 22.6552 25.236C22.5672 25.3187 22.4725 25.396 22.3712 25.468C22.2699 25.54 22.1752 25.6147 22.0872 25.692C21.9992 25.7667 21.9259 25.848 21.8672 25.936C21.8085 26.0213 21.7792 26.1227 21.7792 26.24V26.276C21.7792 26.284 21.7805 26.2947 21.7832 26.308L21.8512 26.96H22.5272L22.6192 26.376C22.6325 26.2907 22.6725 26.2147 22.7392 26.148C22.8085 26.0787 22.8899 26.0093 22.9832 25.94L23.2792 25.712C23.3832 25.632 23.4792 25.5373 23.5672 25.428C23.6579 25.3187 23.7325 25.1907 23.7912 25.044C23.8499 24.8947 23.8792 24.7187 23.8792 24.516C23.8792 24.308 23.8419 24.12 23.7672 23.952C23.6925 23.784 23.5872 23.6413 23.4512 23.524C23.3152 23.404 23.1512 23.312 22.9592 23.248C22.7699 23.184 22.5592 23.152 22.3272 23.152C22.1565 23.152 21.9979 23.168 21.8512 23.2C21.7045 23.2293 21.5685 23.2707 21.4432 23.324C21.3179 23.3773 21.2005 23.44 21.0912 23.512ZM21.5952 28.22C21.5659 28.2947 21.5512 28.3733 21.5512 28.456C21.5512 28.5413 21.5659 28.6213 21.5952 28.696C21.6272 28.768 21.6699 28.8307 21.7232 28.884C21.7792 28.9373 21.8445 28.9787 21.9192 29.008C21.9939 29.04 22.0739 29.056 22.1592 29.056C22.2419 29.056 22.3205 29.04 22.3952 29.008C22.4699 28.9787 22.5339 28.9373 22.5872 28.884C22.6405 28.8307 22.6832 28.768 22.7152 28.696C22.7472 28.6213 22.7632 28.5413 22.7632 28.456C22.7632 28.3733 22.7472 28.2947 22.7152 28.22C22.6832 28.1453 22.6405 28.0813 22.5872 28.028C22.5339 27.9747 22.4699 27.932 22.3952 27.9C22.3205 27.868 22.2419 27.852 22.1592 27.852C22.0739 27.852 21.9939 27.868 21.9192 27.9C21.8445 27.932 21.7792 27.9747 21.7232 28.028C21.6699 28.0813 21.6272 28.1453 21.5952 28.22ZM25.7384 23.512C25.6317 23.584 25.533 23.66 25.4424 23.74L25.7024 24.152C25.745 24.232 25.8144 24.272 25.9104 24.272C25.9504 24.272 25.9957 24.256 26.0464 24.224C26.097 24.1893 26.1584 24.152 26.2304 24.112C26.305 24.0693 26.3944 24.032 26.4984 24C26.605 23.9653 26.7344 23.948 26.8864 23.948C26.9904 23.948 27.0864 23.9627 27.1744 23.992C27.265 24.0213 27.3424 24.064 27.4064 24.12C27.4704 24.1733 27.5197 24.2387 27.5544 24.316C27.5917 24.3907 27.6104 24.476 27.6104 24.572C27.6104 24.716 27.581 24.8413 27.5224 24.948C27.4637 25.0547 27.3904 25.1507 27.3024 25.236C27.2144 25.3187 27.1197 25.396 27.0184 25.468C26.917 25.54 26.8224 25.6147 26.7344 25.692C26.6464 25.7667 26.573 25.848 26.5144 25.936C26.4557 26.0213 26.4264 26.1227 26.4264 26.24V26.276C26.4264 26.284 26.4277 26.2947 26.4304 26.308L26.4984 26.96H27.1744L27.2664 26.376C27.2797 26.2907 27.3197 26.2147 27.3864 26.148C27.4557 26.0787 27.537 26.0093 27.6304 25.94L27.9264 25.712C28.0304 25.632 28.1264 25.5373 28.2144 25.428C28.305 25.3187 28.3797 25.1907 28.4384 25.044C28.497 24.8947 28.5264 24.7187 28.5264 24.516C28.5264 24.308 28.489 24.12 28.4144 23.952C28.3397 23.784 28.2344 23.6413 28.0984 23.524C27.9624 23.404 27.7984 23.312 27.6064 23.248C27.417 23.184 27.2064 23.152 26.9744 23.152C26.8037 23.152 26.645 23.168 26.4984 23.2C26.3517 23.2293 26.2157 23.2707 26.0904 23.324C25.965 23.3773 25.8477 23.44 25.7384 23.512ZM26.2424 28.22C26.213 28.2947 26.1984 28.3733 26.1984 28.456C26.1984 28.5413 26.213 28.6213 26.2424 28.696C26.2744 28.768 26.317 28.8307 26.3704 28.884C26.4264 28.9373 26.4917 28.9787 26.5664 29.008C26.641 29.04 26.721 29.056 26.8064 29.056C26.889 29.056 26.9677 29.04 27.0424 29.008C27.117 28.9787 27.181 28.9373 27.2344 28.884C27.2877 28.8307 27.3304 28.768 27.3624 28.696C27.3944 28.6213 27.4104 28.5413 27.4104 28.456C27.4104 28.3733 27.3944 28.2947 27.3624 28.22C27.3304 28.1453 27.2877 28.0813 27.2344 28.028C27.181 27.9747 27.117 27.932 27.0424 27.9C26.9677 27.868 26.889 27.852 26.8064 27.852C26.721 27.852 26.641 27.868 26.5664 27.9C26.4917 27.932 26.4264 27.9747 26.3704 28.028C26.317 28.0813 26.2744 28.1453 26.2424 28.22Z"
fill="#0F5282" />
</svg>