Skip to content

Instantly share code, notes, and snippets.

@M1nified
Created January 30, 2021 00:30
Show Gist options
  • Save M1nified/c702877f718e8970cab62e9e68bd2ea8 to your computer and use it in GitHub Desktop.
Save M1nified/c702877f718e8970cab62e9e68bd2ea8 to your computer and use it in GitHub Desktop.
#include <iostream>
using namespace std;
class Pasazer
{
private:
string imie;
string nazwisko;
int rok_urodzenia;
static int licznik;
public:
Pasazer()
{
cout << "Konstruktor domyslny, Klasa: Pasazer" << endl;
licznik++;
cout << "Pasazer::licznik " << licznik << endl;
}
Pasazer(const Pasazer &obj)
{
cout << "Konstruktor kopiujacy, Klasa: Pasazer" << endl;
imie = obj.imie;
nazwisko = obj.nazwisko;
rok_urodzenia = obj.rok_urodzenia;
licznik++;
cout << "Pasazer::licznik " << licznik << endl;
}
Pasazer(const Pasazer &obj, string _nazwisko)
{
cout << "Konstruktor kopiujacy z nazwiskiem, Klasa: Pasazer" << endl;
imie = obj.imie;
nazwisko = _nazwisko;
rok_urodzenia = obj.rok_urodzenia;
licznik++;
cout << "Pasazer::licznik " << licznik << endl;
}
Pasazer(string _imie, string _nazwisko, int _rok_urodzenia)
{
cout << "Konstruktor parametryzujacy, Klasa: Pasazer" << endl;
imie = _imie;
nazwisko = _nazwisko;
rok_urodzenia = _rok_urodzenia;
licznik++;
cout << "Pasazer::licznik " << licznik << endl;
}
~Pasazer()
{
licznik--;
cout << "Destruktor, Klasa: Pasazer" << endl;
cout << "Pasazer::licznik " << licznik << endl;
}
string get_imie()
{
return this->imie;
}
void set_imie(string _imie)
{
imie = _imie;
}
string get_nazwisko()
{
return this->nazwisko;
}
void set_nazwisko(string _nazwisko)
{
nazwisko = _nazwisko;
}
int get_rok_urodzenia()
{
return this->rok_urodzenia;
}
void set_rok_urodzenia(int _rok_urodzenia)
{
rok_urodzenia = _rok_urodzenia;
}
void wypisz()
{
cout << "Pasazer(" << imie << ", " << nazwisko << ", " << rok_urodzenia << ")" << endl;
}
friend void sortuj(Pasazer[], int);
};
int Pasazer::licznik = 0;
void sortuj(Pasazer posortowana[], int rozmiar)
{
Pasazer kopia[rozmiar]{};
for (int i = 0; i < rozmiar; i++)
{
kopia[i] = posortowana[i];
}
int last_min = INT32_MIN;
for (int i = 0; i < rozmiar;)
{
int next_min_rok = INT32_MAX;
for (int j = 0; j < rozmiar; j++)
{
if (kopia[j].rok_urodzenia > last_min)
{
next_min_rok = min(kopia[j].rok_urodzenia, next_min_rok);
}
}
cout << last_min << " " << next_min_rok << endl;
for (int j = 0; j < rozmiar; j++)
{
if (kopia[j].rok_urodzenia == next_min_rok)
{
posortowana[i++] = kopia[j];
}
}
last_min = next_min_rok;
}
}
std::ostream &operator<<(std::ostream &os, Pasazer &pasazer)
{
os << pasazer.get_imie() << " " << pasazer.get_nazwisko() << " " << pasazer.get_rok_urodzenia();
return os;
}
class Autokar
{
private:
string nazwa_autokaru;
string cel_podrozy;
double cena_biletu;
int limit_miejsc;
Pasazer *lista_pasazerow;
int liczba_pasazerow = 0;
public:
Autokar()
{
cout << "Konstruktor domyslny, Klasa: Autokar" << endl;
}
Autokar(string _nazwa_autokaru, string _cel_podrozy, double _cena_biletu, int _limit_miejsc)
{
cout << "Konstruktor parametryzujacy, Klasa: Autokar" << endl;
nazwa_autokaru = _nazwa_autokaru;
cel_podrozy = _cel_podrozy;
cena_biletu = _cena_biletu;
limit_miejsc = _limit_miejsc;
lista_pasazerow = new Pasazer[limit_miejsc];
}
void dodaj_pasazera(const Pasazer pasazer)
{
if (liczba_pasazerow == limit_miejsc)
{
return; // bo nie mozna dodaj juz wiecej pasazerow
}
lista_pasazerow[liczba_pasazerow] = pasazer;
liczba_pasazerow++;
}
void operator++() // ++autokar
{
cena_biletu += 1;
}
Autokar operator++(int) // autokar++
{
cena_biletu += 1;
return *this;
}
void wypisz()
{
cout << "Autokar(" << nazwa_autokaru << ", " << cel_podrozy << ", " << cena_biletu << ", " << limit_miejsc << ", " << liczba_pasazerow << ")" << endl;
}
void wypisz_z_pasazerami()
{
wypisz();
cout << "Pasazerowie:" << endl;
for (int i = 0; i < liczba_pasazerow; i++)
{
cout << lista_pasazerow[i] << endl;
}
}
void friend usun_pasazera_w_wozu(Pasazer, Autokar&);
};
void usun_pasazera_w_wozu(Pasazer pasazer, Autokar &autokar)
{
int index_pasazera;
for (index_pasazera = 0; index_pasazera < autokar.liczba_pasazerow &&
(autokar.lista_pasazerow[index_pasazera].get_imie() != pasazer.get_imie() ||
autokar.lista_pasazerow[index_pasazera].get_nazwisko() != pasazer.get_nazwisko() ||
autokar.lista_pasazerow[index_pasazera].get_rok_urodzenia() != pasazer.get_rok_urodzenia());
index_pasazera++)
;
if (index_pasazera >= autokar.liczba_pasazerow)
{
return; // bo nie ma takiego pasazera w tym autobusie
}
for (int i = index_pasazera + 1; i < autokar.liczba_pasazerow; i++)
{
autokar.lista_pasazerow[i - 1] = autokar.lista_pasazerow[i];
}
autokar.liczba_pasazerow--;
}
int main()
{
cout << endl
<< "a)" << endl;
Pasazer pasazer_1;
pasazer_1.wypisz();
pasazer_1.set_imie("Pawel");
pasazer_1.set_nazwisko("Ek");
pasazer_1.set_rok_urodzenia(997);
cout << "pasazer_1: " << pasazer_1.get_imie() << ", " << pasazer_1.get_nazwisko() << ", " << pasazer_1.get_rok_urodzenia() << endl;
pasazer_1.wypisz();
cout << endl
<< "b)" << endl;
Pasazer pasazer_2("Wojtus", "Smigly", 39);
pasazer_2.wypisz();
cout << endl
<< "c)" << endl;
Pasazer pasazer_skopiowany(pasazer_1);
pasazer_skopiowany.wypisz();
cout << endl
<< "d)" << endl;
Pasazer pasazer_skopiowany_nazwany(pasazer_1, "Skopiowany");
pasazer_skopiowany_nazwany.wypisz();
cout << endl
<< "e)" << endl;
int rozmiar = 4;
Pasazer *lista_pasazerow = new Pasazer[rozmiar]{{"Janek", "Zapalka", 84}, {"Janek", "Zapalka", 44}, {"Janek", "Zapalka", 104}, {"Janek", "Zapalka", 64}};
lista_pasazerow[0].wypisz();
lista_pasazerow[1].wypisz();
lista_pasazerow[2].wypisz();
lista_pasazerow[3].wypisz();
cout << endl
<< "f)" << endl;
sortuj(lista_pasazerow, rozmiar);
for (int i = 0; i < rozmiar; i++)
{
cout << lista_pasazerow[i] << endl;
}
cout << endl
<< "g)" << endl;
delete[] lista_pasazerow;
cout << endl
<< "h)" << endl;
Autokar autokar_1("Flix baus", "Kapsztad", 1499.99, 10);
autokar_1.wypisz();
cout << endl
<< "i)" << endl;
autokar_1.wypisz();
autokar_1++;
++autokar_1;
autokar_1.wypisz();
cout << endl
<< "j)" << endl;
Pasazer *lista_pasazerow_2 = new Pasazer[rozmiar]{{"Janek", "Zapalka", 84}, {"Janek", "Zapalka", 44}, {"Janek", "Zapalka", 104}, {"Janek", "Zapalka", 64}};
for (int i = 0; i < rozmiar; i++)
{
autokar_1.dodaj_pasazera(lista_pasazerow_2[i]);
}
autokar_1.wypisz_z_pasazerami();
cout << endl
<< "k)" << endl;
autokar_1.wypisz_z_pasazerami();
usun_pasazera_w_wozu(lista_pasazerow_2[2], autokar_1);
autokar_1.wypisz_z_pasazerami();
cout << endl
<< endl;
}
#include <iostream>
#define NOW 2020
using namespace std;
class Osoba
{
protected:
string imie;
string nazwisko;
int rok_urodzenia;
static int licznik;
public:
Osoba()
{
licznik++;
cout << "Konstruktor domyslny, Klasa: Osoba" << endl;
cout << "Osoba::licznik " << licznik << endl;
}
Osoba(string _imie, string _nazwisko, int _rok_urodzenia)
{
imie = _imie;
nazwisko = _nazwisko;
rok_urodzenia = _rok_urodzenia;
licznik++;
cout << "Konstruktor domyslny, Klasa: Osoba" << endl;
cout << "Osoba::licznik " << licznik << endl;
}
Osoba(Osoba &osoba)
{
imie = osoba.imie;
nazwisko = osoba.nazwisko;
rok_urodzenia = osoba.rok_urodzenia;
licznik++;
cout << "Konstruktor kopiujacy, Klasa: Osoba" << endl;
cout << "Osoba::licznik " << licznik << endl;
}
~Osoba()
{
licznik--;
cout << "Destruktor, Klasa: Osoba" << endl;
cout << "Osoba::licznik " << licznik << endl;
}
void wypisz()
{
cout << imie << ", " << nazwisko << ", " << rok_urodzenia << endl;
}
int wiek()
{
return NOW - rok_urodzenia;
}
};
int Osoba::licznik = 0;
class Pracownik : public Osoba
{
protected:
string wojewodztwo;
static double placa_minimalna;
public:
Pracownik(string _imie, string _nazwisko, int _rok_urodzenia, string _wojewodztwo) : Osoba(_imie, _nazwisko, _rok_urodzenia)
{
wojewodztwo = _wojewodztwo;
cout << "Konstruktor sparametryzowany, Klasa: Pracownik" << endl;
}
Pracownik(Pracownik &pracownik) : Osoba(pracownik)
{
wojewodztwo = pracownik.wojewodztwo;
cout << "Konstruktor kopiujacy, Klasa: Pracownik" << endl;
}
~Pracownik()
{
cout << "Destruktor, Klasa: Pracownik" << endl;
}
};
double Pracownik::placa_minimalna = 2800;
class Informatyk : public Pracownik
{
private:
string specjalizacja;
double mnoznik;
double pensja;
public:
Informatyk(string _imie, string _nazwisko, int _rok_urodzenia, string _wojewodztwo, string _specjalizacja, double _mnoznik) : Pracownik(_imie, _nazwisko, _rok_urodzenia, _wojewodztwo)
{
specjalizacja = _specjalizacja;
mnoznik = _mnoznik;
pensja = 1.0 * mnoznik * Pracownik::placa_minimalna;
cout << "Konstruktor domyslny, Klasa: Informatyk" << endl;
}
Informatyk(Informatyk &informatyk, string _imie, string _nazwisko, int _rok_urodzenia) : Pracownik(_imie, _nazwisko, _rok_urodzenia, informatyk.wojewodztwo)
{
specjalizacja = informatyk.specjalizacja;
mnoznik = informatyk.mnoznik;
pensja = informatyk.pensja;
cout << "Konstruktor kopiujacy z imie, nazwisko, rok_urodzenia, Klasa: Informatyk" << endl;
}
~Informatyk()
{
cout << "Destruktor, Klasa: Informatyk" << endl;
}
void wypisz()
{
cout << imie << ", " << nazwisko << ", " << rok_urodzenia << ", " << wojewodztwo << ", " << specjalizacja << ", " << mnoznik << ", " << pensja << endl;
}
};
class Emeryt : public Osoba
{
private:
double emerytura;
public:
Emeryt()
{
cout << "Konstruktor domyslny, Klasa: Emeryt" << endl;
}
Emeryt(Osoba osoba, double _emerytura) : Osoba(osoba)
{
emerytura = _emerytura;
cout << "Konstruktor kopiujacy z Osoba + emerytura, Klasa: Emeryt" << endl;
}
~Emeryt()
{
cout << "Destruktor, Klasa: Emeryt" << endl;
}
void wypisz()
{
cout << imie << ", " << nazwisko << ", " << rok_urodzenia << ", " << emerytura << endl;
}
};
Emeryt *generuj_emerytow(Osoba osoby[], int &osoby_rozmiar, int &liczba_emerytow)
{
liczba_emerytow = 0;
for (int i = 0; i < osoby_rozmiar; i++)
{
if (osoby[i].wiek() > 65)
{
liczba_emerytow++;
}
}
Emeryt *emeryci = new Emeryt[liczba_emerytow];
int emeryci_index = 0;
for (int i = 0; i < osoby_rozmiar; i++)
{
if (osoby[i].wiek() > 65)
{
emeryci[emeryci_index++] = Emeryt(osoby[i], 24000);
copy(osoby + i + 1, osoby + osoby_rozmiar, osoby + i);
osoby_rozmiar--;
}
}
return emeryci;
}
int main()
{
cout << endl
<< "a)" << endl;
Osoba osoba_1("Michal", "Piotrowski", 1990);
osoba_1.wypisz();
cout << "osoba 1 wiek: " << osoba_1.wiek() << endl;
cout << endl
<< "b)" << endl;
Informatyk *informatyk = new Informatyk("Piotr", "Michalowski", 1991, "malopolskie", "skok o tyczce", 3.1); // dynamiczny
informatyk->wypisz();
cout << endl
<< "c)" << endl;
Informatyk informatyk_2(*informatyk, "Pawel", "Malecki", 1945);
informatyk_2.wypisz();
cout << "Informatyk 2 wiek: " << informatyk_2.wiek() << endl;
cout << endl
<< "d)" << endl;
int rozmiar = 3;
Osoba *osoby = new Osoba[rozmiar];
osoby[0] = osoba_1;
osoby[1] = *informatyk;
osoby[2] = informatyk_2;
for (int i = 0; i < rozmiar; i++)
{
osoby[i].wypisz();
}
cout << endl
<< "e)" << endl;
int liczba_emerytow;
Emeryt *emeryci = generuj_emerytow(osoby, rozmiar, liczba_emerytow);
cout << "Emeryci " << liczba_emerytow << " :" << endl;
for (int i = 0; i < liczba_emerytow; i++)
{
emeryci[i].wypisz();
}
cout << "Osoby " << rozmiar << " :" << endl;
for (int i = 0; i < rozmiar; i++)
{
osoby[i].wypisz();
}
cout << endl
<< "f)" << endl;
delete informatyk;
delete[] osoby;
delete[] emeryci;
cout << endl
<< endl;
}
#include <iostream>
#define NOW 2020
using namespace std;
class Osoba
{
protected:
string imie;
string nazwisko;
int rok_urodzenia;
static int licznik;
public:
Osoba()
{
licznik++;
cout << "Konstruktor domyslny, Klasa: Osoba" << endl;
cout << "Osoba::licznik " << licznik << endl;
}
Osoba(string _imie, string _nazwisko, int _rok_urodzenia)
{
imie = _imie;
nazwisko = _nazwisko;
rok_urodzenia = _rok_urodzenia;
licznik++;
cout << "Konstruktor domyslny, Klasa: Osoba" << endl;
cout << "Osoba::licznik " << licznik << endl;
}
Osoba(Osoba &osoba)
{
imie = osoba.imie;
nazwisko = osoba.nazwisko;
rok_urodzenia = osoba.rok_urodzenia;
licznik++;
cout << "Konstruktor kopiujacy, Klasa: Osoba" << endl;
cout << "Osoba::licznik " << licznik << endl;
}
~Osoba()
{
licznik--;
cout << "Destruktor, Klasa: Osoba" << endl;
cout << "Osoba::licznik " << licznik << endl;
}
void wypisz()
{
cout << imie << ", " << nazwisko << ", " << rok_urodzenia << endl;
}
int wiek()
{
return NOW - rok_urodzenia;
}
friend std::ostream &operator<<(std::ostream &os, Osoba &osoba);
};
int Osoba::licznik = 0;
class Pracownik : public Osoba
{
protected:
string wojewodztwo;
static double placa_minimalna;
public:
Pracownik(string _imie, string _nazwisko, int _rok_urodzenia, string _wojewodztwo) : Osoba(_imie, _nazwisko, _rok_urodzenia)
{
wojewodztwo = _wojewodztwo;
cout << "Konstruktor sparametryzowany, Klasa: Pracownik" << endl;
}
Pracownik(Pracownik &pracownik) : Osoba(pracownik)
{
wojewodztwo = pracownik.wojewodztwo;
cout << "Konstruktor kopiujacy, Klasa: Pracownik" << endl;
}
~Pracownik()
{
cout << "Destruktor, Klasa: Pracownik" << endl;
}
};
double Pracownik::placa_minimalna = 2800;
class Informatyk : public Pracownik
{
private:
string specjalizacja;
double mnoznik;
double pensja;
public:
Informatyk(string _imie, string _nazwisko, int _rok_urodzenia, string _wojewodztwo, string _specjalizacja, double _mnoznik) : Pracownik(_imie, _nazwisko, _rok_urodzenia, _wojewodztwo)
{
specjalizacja = _specjalizacja;
mnoznik = _mnoznik;
pensja = 1.0 * mnoznik * Pracownik::placa_minimalna;
cout << "Konstruktor domyslny, Klasa: Informatyk" << endl;
}
Informatyk(Informatyk &informatyk, string _imie, string _nazwisko, int _rok_urodzenia) : Pracownik(_imie, _nazwisko, _rok_urodzenia, informatyk.wojewodztwo)
{
specjalizacja = informatyk.specjalizacja;
mnoznik = informatyk.mnoznik;
pensja = informatyk.pensja;
cout << "Konstruktor kopiujacy z imie, nazwisko, rok_urodzenia, Klasa: Informatyk" << endl;
}
~Informatyk()
{
cout << "Destruktor, Klasa: Informatyk" << endl;
}
void wypisz()
{
cout << imie << ", " << nazwisko << ", " << rok_urodzenia << ", " << wojewodztwo << ", " << specjalizacja << ", " << mnoznik << ", " << pensja << endl;
}
};
class Emeryt : public Osoba
{
private:
double emerytura;
public:
Emeryt()
{
cout << "Konstruktor domyslny, Klasa: Emeryt" << endl;
}
Emeryt(Osoba osoba, double _emerytura) : Osoba(osoba)
{
emerytura = _emerytura;
cout << "Konstruktor kopiujacy z Osoba + emerytura, Klasa: Emeryt" << endl;
}
Emeryt(string _imie, string _nazwisko, int _rok_urodzenia, double _emerytura) : Osoba(_imie, _nazwisko, _rok_urodzenia)
{
emerytura = _emerytura;
cout << "Konstruktor kopiujacy z Osoba + emerytura, Klasa: Emeryt" << endl;
}
~Emeryt()
{
cout << "Destruktor, Klasa: Emeryt" << endl;
}
void wypisz()
{
cout << imie << ", " << nazwisko << ", " << rok_urodzenia << ", " << emerytura << endl;
}
};
Emeryt *generuj_emerytow(Osoba osoby[], int &osoby_rozmiar, int &liczba_emerytow)
{
liczba_emerytow = 0;
for (int i = 0; i < osoby_rozmiar; i++)
{
if (osoby[i].wiek() > 65)
{
liczba_emerytow++;
}
}
Emeryt *emeryci = new Emeryt[liczba_emerytow];
int emeryci_index = 0;
for (int i = 0; i < osoby_rozmiar; i++)
{
if (osoby[i].wiek() > 65)
{
emeryci[emeryci_index++] = Emeryt(osoby[i], 24000);
copy(osoby + i + 1, osoby + osoby_rozmiar, osoby + i);
osoby_rozmiar--;
}
}
return emeryci;
}
std::ostream &operator<<(std::ostream &os, Osoba &osoba)
{
os << osoba.imie << " " << osoba.nazwisko << " " << osoba.rok_urodzenia;
return os;
}
int main()
{
cout << endl
<< "a)" << endl;
Pracownik *pracownik = new Pracownik("Zbig", "Gniew", 1974, "malopolskie");
Informatyk *informatyk = new Informatyk("Roman", "Pierce", 1980, "podkarpackie", "wysokie napiecia", 11.5);
Emeryt *emeryt = new Emeryt("Boleslaw", "Chrobry", 967, 50000);
pracownik->wypisz();
informatyk->wypisz();
emeryt->wypisz();
cout << endl
<< "b)" << endl;
cout << "Pracownik wiek: " << pracownik->wiek() << endl;
cout << "Informatyk wiek: " << informatyk->wiek() << endl;
cout << "Emeryt wiek: " << emeryt->wiek() << endl;
cout << endl
<< "c)" << endl;
int rozmiar = 3;
Osoba osoby[rozmiar];
osoby[0] = *pracownik;
osoby[1] = *informatyk;
osoby[2] = *emeryt;
for (int i = 0; i < rozmiar; i++)
{
cout << osoby[i] << endl;
}
cout << endl
<< "d)" << endl;
delete pracownik;
delete informatyk;
delete emeryt;
cout << endl
<< endl;
}
#include <iostream>
using namespace std;
struct Film
{
public:
string tytul_filmu;
string glowni_aktorzy[2];
int rok_produkcji;
double czas_trwania;
void wypisz()
{
cout << tytul_filmu << ", " << glowni_aktorzy[0] << ", " << glowni_aktorzy[1] << ", " << rok_produkcji << ", " << czas_trwania << endl;
}
};
class Klient
{
private:
string imie;
string nazwisko;
Film wypozyczone_filmy[3];
int liczba_filmow_na_koncie = 0;
static int limit_wypozyczonych_filmow;
public:
Klient()
{
cout << "Konstruktor domyslny, Klasa: Klient" << endl;
}
Klient(string _imie, string _nazwisko)
{
imie = _imie;
nazwisko = _nazwisko;
cout << "Konstruktor domyslny, Klasa: Klient" << endl;
}
~Klient()
{
cout << "Destruktor, Klasa: Klient" << endl;
}
void wypozycz_film(Film film)
{
if (liczba_filmow_na_koncie < limit_wypozyczonych_filmow)
{
wypozyczone_filmy[liczba_filmow_na_koncie++] = film;
}
}
void zwroc_film(Film film)
{
for (int i = 0; i < liczba_filmow_na_koncie; i++)
{
if (wypozyczone_filmy[i].tytul_filmu == film.tytul_filmu)
{
copy(wypozyczone_filmy + i + 1, wypozyczone_filmy + liczba_filmow_na_koncie, wypozyczone_filmy + i);
liczba_filmow_na_koncie--;
break;
}
}
}
void wypisz()
{
cout << imie << ", " << nazwisko << endl;
cout << "Wypozyczone filmy (" << liczba_filmow_na_koncie << "): " << endl;
for (int i = 0; i < liczba_filmow_na_koncie; i++)
{
wypozyczone_filmy[i].wypisz();
}
}
};
int Klient::limit_wypozyczonych_filmow = 3;
int main()
{
cout << endl
<< "a)" << endl;
Film film{"BB Mountain", {"Micelo Anhelllo", "Don Mazurrro"}, 1990, 1.5};
film.wypisz();
cout << endl
<< "b)" << endl;
string *tytul_filmu = &(film.tytul_filmu);
cout << "tytul filmu: " << *tytul_filmu << endl;
cout << endl
<< "c)" << endl;
int rozmiar = 3;
Film films[rozmiar]{{"Matrix Visa", {"Him", "Him"}, 1990, 1.5},
{"Matrix Master Card", {"Him", "Her"}, 1991, 2.5},
{"Matrix Revolut-ion", {"Her", "Her"}, 1992, 3.5}};
for (int i = 0; i < rozmiar; i++)
{
films[i].wypisz();
}
cout << endl
<< "d)" << endl;
Klient klient("Mikolajek", "Bezbrodnicki");
klient.wypisz();
cout << endl
<< "e)" << endl;
klient.wypozycz_film(films[0]);
klient.wypozycz_film(films[2]);
klient.wypisz();
cout << endl
<< "f)" << endl;
void (Klient::*zwroc_film_wsk)(Film film);
zwroc_film_wsk = &Klient::zwroc_film;
(klient.*zwroc_film_wsk)(films[0]);
klient.wypisz();
cout << endl
<< endl;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment