From efb1e0f748d4a3dc36fd2997795d3ae6937575a6 Mon Sep 17 00:00:00 2001
From: Pedro Folloni Pesserl <fpesserl7@gmail.com>
Date: Mon, 9 Jan 2023 01:33:09 -0300
Subject: [PATCH] t1: add libs for sets and queues

---
 t1/libconjunto.c | 233 +++++++++++++++++++++++++++++++++++++++++++++++
 t1/libfila.c     |  80 ++++++++++++++++
 t1/libfila.o     | Bin 0 -> 9248 bytes
 t1/liblef.c      |  26 ++++++
 t1/makefile      |  14 ++-
 t1/mundo.c       |   0
 t1/teste         | Bin 0 -> 22288 bytes
 t1/teste.c       |  10 ++
 t1/teste.o       | Bin 0 -> 7624 bytes
 9 files changed, 358 insertions(+), 5 deletions(-)
 create mode 100644 t1/libconjunto.c
 create mode 100644 t1/libfila.c
 create mode 100644 t1/libfila.o
 create mode 100644 t1/liblef.c
 create mode 100644 t1/mundo.c
 create mode 100755 t1/teste
 create mode 100644 t1/teste.c
 create mode 100644 t1/teste.o

diff --git a/t1/libconjunto.c b/t1/libconjunto.c
new file mode 100644
index 0000000..ce75e6b
--- /dev/null
+++ b/t1/libconjunto.c
@@ -0,0 +1,233 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "libconjunto.h"
+
+/* retorna a posicao de um elemento em um conjunto ([0..card-1]).
+ * como estamos trabalhando com conjuntos ordenados, eh uma busca binaria.
+ * se o elemento nao esta no conjunto, retorna -1. */
+int busca_cjt(conjunto_t *c, int elemento) {
+	int inicio = 0;
+	int fim = cardinalidade_cjt(c) - 1;
+	int meio = fim / 2;
+
+	while (inicio <= fim && c->v[meio] != elemento) {
+		if (elemento > c->v[meio]) {
+			inicio = meio + 1;
+		} else {
+			fim = meio - 1;
+		}
+		meio = (inicio + fim) / 2;
+	}
+
+	return inicio > fim ? -1 : meio;
+}
+
+conjunto_t *cria_cjt(int max) {
+	conjunto_t *c;
+	if ( !(c = malloc(sizeof(conjunto_t))) )
+		return NULL;
+	c->max = max;
+	c->card = 0;
+	c->ptr = 0;
+	if ( !(c->v = malloc(sizeof(int) * max)) ) {
+		free(c);
+		return NULL;
+	}
+	return c;
+}
+
+conjunto_t *destroi_cjt(conjunto_t *c) {
+	free(c->v);
+	c->v = NULL;
+	free(c);
+	return NULL;
+}
+
+int vazio_cjt(conjunto_t *c) {
+	return cardinalidade_cjt(c) == 0;	
+}
+
+int cardinalidade_cjt(conjunto_t *c) {
+	return c->card;
+}
+
+int insere_cjt(conjunto_t *c, int elemento) {
+	if (cardinalidade_cjt(c) == c->max)
+		return 0;
+
+	if (pertence_cjt(c, elemento))
+		return 1;
+
+	int i = cardinalidade_cjt(c);
+	while (i > 0 && c->v[i - 1] > elemento) {
+		c->v[i] = c->v[i - 1];
+		i--;
+	}
+	
+	c->v[i] = elemento;
+	c->card++;
+	return 1;
+}
+
+int retira_cjt(conjunto_t *c, int elemento) {
+	if (!(pertence_cjt(c, elemento)))
+		return 0;
+
+	int i;
+	for(i = busca_cjt(c, elemento); i < cardinalidade_cjt(c)-1; i++) {
+		c->v[i] = c->v[i + 1];
+	}
+
+	c->card--;
+	return 1;
+}
+
+int pertence_cjt(conjunto_t *c, int elemento) {
+	return busca_cjt(c, elemento) != -1;
+}
+
+int contido_cjt(conjunto_t *c1, conjunto_t *c2) {
+	int i;
+	for (i = 0; i < cardinalidade_cjt(c1); i++) {
+		if (!(pertence_cjt(c2, c1->v[i])))
+			return 0;
+	}
+	return 1;
+}
+
+int sao_iguais_cjt(conjunto_t *c1, conjunto_t *c2) {
+	return cardinalidade_cjt(c1) == cardinalidade_cjt(c2) && contido_cjt(c1, c2);
+}
+
+conjunto_t *diferenca_cjt(conjunto_t *c1, conjunto_t *c2) {
+	conjunto_t *dif;
+	if ( !(dif = cria_cjt(c1->max)) )
+		return NULL;
+
+	int i;
+	for (i = 0; i < cardinalidade_cjt(c1); i++) {
+		if (!(pertence_cjt(c2, c1->v[i])))
+			insere_cjt(dif, c1->v[i]);
+	}
+
+	return dif;
+}
+
+conjunto_t *interseccao_cjt(conjunto_t *c1, conjunto_t *c2) {
+	conjunto_t *inter;
+	if ( !(inter = cria_cjt(c1->max)) )
+		return NULL;
+	
+	conjunto_t **menor_cjt = cardinalidade_cjt(c1) < cardinalidade_cjt(c2) ? &c1 : &c2;
+	conjunto_t **maior_cjt = cardinalidade_cjt(c1) > cardinalidade_cjt(c2) ? &c1 : &c2;
+
+	int i;
+	for (i = 0; i < cardinalidade_cjt(*menor_cjt); i++) {
+		if (pertence_cjt(*maior_cjt, (*menor_cjt)->v[i]))
+			insere_cjt(inter, (*menor_cjt)->v[i]);
+	}
+
+	return inter;
+}
+
+conjunto_t *uniao_cjt(conjunto_t *c1, conjunto_t *c2) {
+	conjunto_t *uniao;
+	if ( !(uniao = cria_cjt(c1->max)) )
+		return NULL;
+
+	inicia_iterador_cjt(c1);
+	inicia_iterador_cjt(c2);
+
+	while (c1->ptr < cardinalidade_cjt(c1) && c2->ptr < cardinalidade_cjt(c2)) {
+		if (c1->v[c1->ptr] < c2->v[c2->ptr]) {
+			insere_cjt(uniao, c1->v[c1->ptr]);
+			c1->ptr++;
+		} else {
+			insere_cjt(uniao, c2->v[c2->ptr]);
+			c2->ptr++;
+		}
+	}
+
+	conjunto_t **ainda_falta = c1->ptr == cardinalidade_cjt(c1) ? &c2 : &c1;
+
+	int i;
+	for (i = (*ainda_falta)->ptr; i < cardinalidade_cjt(*ainda_falta); i++) {
+		insere_cjt(uniao, (*ainda_falta)->v[i]);
+	}
+
+	inicia_iterador_cjt(c1);
+	inicia_iterador_cjt(c2);
+
+	return uniao;
+}
+
+conjunto_t *copia_cjt(conjunto_t *c) {
+	conjunto_t *copia;
+	if ( !(copia = cria_cjt(c->max)) )
+		return NULL;
+
+	int i;
+	for (i = 0; i < cardinalidade_cjt(c); i++) {
+		insere_cjt(copia, c->v[i]);
+	}
+
+	return copia;
+}
+
+conjunto_t *cria_subcjt_cjt(conjunto_t *c, int n) {
+	if (n >= cardinalidade_cjt(c))
+		return copia_cjt(c);
+
+	conjunto_t *sub;
+	if ( !(sub = cria_cjt(c->max)) )
+		return NULL;
+
+	conjunto_t *disponiveis;
+	if ( !(disponiveis = copia_cjt(c)) )
+		return NULL;
+
+	int i;
+	int aleat;
+	for (i = 0; i < n; i++) {
+		aleat = rand() % cardinalidade_cjt(disponiveis);
+		insere_cjt(sub, disponiveis->v[aleat]);
+		retira_cjt(disponiveis, disponiveis->v[aleat]);
+	}
+	
+	destroi_cjt(disponiveis);
+	return sub;
+}
+
+void imprime_cjt(conjunto_t *c) {
+	if (vazio_cjt(c)) {
+		printf("Conjunto vazio.\n");
+		return;
+	}
+
+	int i;
+	for (i = 0; i < cardinalidade_cjt(c)-1; i++)
+		printf("%d ", c->v[i]);
+	printf("%d\n", c->v[cardinalidade_cjt(c)-1]);
+}
+
+void inicia_iterador_cjt(conjunto_t *c) {
+	c->ptr = 0;
+}
+
+int incrementa_iterador_cjt(conjunto_t *c, int *ret_iterador) {
+	*ret_iterador = c->v[c->ptr];
+	c->ptr++;
+	if (c->ptr > cardinalidade_cjt(c))
+		return 0;
+	return 1;
+}
+
+int retira_um_elemento_cjt(conjunto_t *c) {
+	int aleat = rand() % cardinalidade_cjt(c);
+	int retirar = c->v[aleat];
+	int i;
+	for (i = aleat; i < cardinalidade_cjt(c)-1; i++)
+		c->v[i] = c->v[i + 1];
+	c->card--;
+	return retirar;
+}
diff --git a/t1/libfila.c b/t1/libfila.c
new file mode 100644
index 0000000..0341819
--- /dev/null
+++ b/t1/libfila.c
@@ -0,0 +1,80 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "libfila.h"
+
+fila_t *cria_fila() {
+	fila_t *f;
+	if ( !(f = malloc(sizeof(fila_t))) )
+		return NULL;
+	
+	f->tamanho = 0;
+	f->ini = NULL;
+	f->fim = NULL;
+	return f;
+}
+
+fila_t *destroi_fila(fila_t *f) {
+	int i, e = 0, tamanho = tamanho_fila(f);
+	for (i = 0; i < tamanho; i++) {
+		retira_fila(f, &e);
+	}
+
+	free(f);
+	return NULL;
+}
+
+int vazia_fila(fila_t *f) {
+	return f->tamanho == 0;
+}
+
+int tamanho_fila(fila_t *f) {
+	return f->tamanho;
+}
+
+int insere_fila(fila_t *f, int elemento) {
+	nodo_f_t *novo;
+	if ( !(novo = malloc(sizeof(nodo_f_t))) )
+		return 0;
+	novo->elem = elemento;
+	novo->prox = NULL;
+
+	(f->tamanho)++;
+
+	if (tamanho_fila(f) == 1) {
+		f->ini = novo;
+		f->fim = novo;
+		return 1;
+	}
+
+	f->fim->prox = novo;
+	f->fim = novo;
+	return 1;
+}
+
+int retira_fila(fila_t *f, int *elemento) {
+	if (vazia_fila(f))
+		return 0;
+	
+	*elemento = f->ini->elem;
+	nodo_f_t *temp = f->ini->prox;
+	free(f->ini);
+	f->ini = temp;
+	(f->tamanho)--;
+	return 1;
+}
+
+void imprime_fila(fila_t *f) {
+	if (vazia_fila(f))
+		return;
+
+	nodo_f_t *atual = f->ini;
+	printf("%d", atual->elem);
+
+	int i;
+	for (i = 1; i < tamanho_fila(f); i++) {
+		atual = atual->prox;
+		printf(" %d", atual->elem);
+	}
+	
+	printf("\n");
+}
diff --git a/t1/libfila.o b/t1/libfila.o
new file mode 100644
index 0000000000000000000000000000000000000000..63a7a6ae05d9a72d25341029a9ebaeafde5b2e92
GIT binary patch
literal 9248
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
IFjoEl14X9%9RL6T

literal 0
HcmV?d00001

diff --git a/t1/liblef.c b/t1/liblef.c
new file mode 100644
index 0000000..4d53fd0
--- /dev/null
+++ b/t1/liblef.c
@@ -0,0 +1,26 @@
+#include <stdlib.h>
+
+lef_t *cria_lef() {
+	/*TODO: não implementado*/
+	return NULL;
+}
+
+lef_t *destroi_lef(lef_t *l) {
+	/*TODO: não implementado*/
+	return NULL;
+}
+
+int adiciona_inicio_lef (lef_t *l, evento_t *evento) {
+	/*TODO: não implementado*/
+	return 0;
+}
+
+int adiciona_ordem_lef (lef_t *l, evento_t *evento) {
+	/*TODO: não implementado*/
+	return 0;
+}
+
+evento_t *obtem_primeiro_lef (lef_t *l) {
+	/*TODO: não implementado*/
+	return NULL;
+}
diff --git a/t1/makefile b/t1/makefile
index 52c38d3..e210452 100644
--- a/t1/makefile
+++ b/t1/makefile
@@ -6,10 +6,13 @@ LDFLAGS = -lm
 CC = gcc
 
 # arquivos-objeto
-	objects = mundo.o libconjunto.o  liblef.o libfila.o 
+	objects = mundo.o libconjunto.o liblef.o libfila.o 
      
-mundo: mundo.o libconjunto.o  liblef.o libfila.o
-	$(CC) -o mundo mundo.o libconjunto.o  liblef.o libfila.o $(LDFLAGS)
+mundo: mundo.o libconjunto.o liblef.o libfila.o
+	$(CC) -o mundo mundo.o libconjunto.o liblef.o libfila.o $(LDFLAGS)
+
+teste: teste.o liblef.o
+	$(CC) -o teste teste.o liblef.o $(LDFLAGS)
 
 libconjunto.o: libconjunto.c
 	$(CC) -c $(CFLAGS) libconjunto.c
@@ -23,7 +26,8 @@ libfila.o: libfila.c
 mundo.o: mundo.c
 	$(CC) -c $(CFLAGS) mundo.c
 
+teste.o: teste.c
+	$(CC) -c $(CFLAGS) teste.c
+
 clean:
 	rm -f $(objects) mundo
-
-
diff --git a/t1/mundo.c b/t1/mundo.c
new file mode 100644
index 0000000..e69de29
diff --git a/t1/teste b/t1/teste
new file mode 100755
index 0000000000000000000000000000000000000000..381c674840818c707f985538d6e15643b0e32691
GIT binary patch
literal 22288
zcmeHP4RBmXecyMdr+c!b)5-FOY=eDv9O4jkk{!qR10|Ad$)`lN6=OpTG0&&FC+V>6
zPQ4Gu4o>1mPKr<ra$vwrJz!co1lp9)QYMWv#K9pBQ)meTOfn3Ep*B6&hB(Gy#7A=d
z{rBzv^zQitLx;}L_I9NE@Be%Ezq{}4?%Ves=<e(BXqw>U6}JkBHQJO8#RzO=2_ZVf
zT2YVR<>ER~4RRI!I~3auU-H-thK7>!0+L=cWy-)e*<`_xOGuFPW=d;)Hiw}I*f{Cw
zlvTJJK13BkV#xfWzo29b;evTpKZZ^{GCA2|>rJ+o!b3{$g9@@9p`>?0>77t|3@=lG
zkQj12DJJy4R>ji|gWypL%3mSedUq*3H{7J;8Ili5?>wK4{dfHJE4{-(X-2r=L7OZX
zvcEf_r<zDf{BFR_yj}U5sU1dD{28k7iq?_%z?#*qBe9l|crv%YW&heWEo)YXGO5ri
z>6pqzKB!M^-nvu3%qgO&Fv_-=qj2KC_SqAEF%tMf<kg!NeQEU6!95=zJ-vi&kWZ4K
zMEcw%2&a54{z=BJ|DPjg(+Iw3{cD2YOzAE#W|v_uoq?VKJy=Gb%23V@#h@Jh#u?~6
zGtfT*dJzBa)CNL1`=0_m=oSY4cKk0ZLl<bzC^g?2F`CO}glT57k?3ACI=t5$jKoKX
z8Xb<L#b`R7%nph~WMm{2g;;cd#2kz#BO~#9EudtERMS~A5s4?oVA`_8=DyypjpnM*
z>SAtH=oVr2?$~0+th6;0&t$Fijx8HUQb}t^WMG604JA@ZWyrKe%L-Btpg!P1&)^(k
zn*5)>oXv^H>#6tbhAg#7ZehHJ<c3r%`1-@+{;aybA5+&Crk_xBqr+BYI^!?hX49!J
za$hIPSqEKRf~8>IL1$aUxa^?Ml9Kk%l!H!vj?-g`PPR2B0zToOJIBqF4mw{$NbQt^
zF7F4*)(Z~0^E&fw2OR;eq)G%T5vW9<5`jttDiNqe;D3Dte$lY_*Ws~CMtDMhxmAep
zL#MKy!nea?&l#s>-3qs)LB3MBJ_FFOM3DS2ajsnWaiLI{lsHYuu3UJrh|@&u%7tf(
zI879<T=-HErwQ4W3!f?CG!eUU;V9$qwp)7JB&0v!uZPI{H2#_k|CtLv@4|oR!oTOl
zSN^Pb{KfZ$$A1zYJ9oK%N8b_sT_{obNd1pc(D0G=XHmSu+<$<|)k&Z)BNINNe}}-j
zsq9>Y?!%Nv=xPdQ8<re`xHzpK<UcRvZ}}?%H@*=bzZ`z{=eLEQo$`jY=ff|)k(~nr
zmNH-z&JN0YvOdN4P&=_j?xvmLvGy*?hR4rm>%tT5JwWo`c%x9r#}K^d^>*OeZs->M
zlm3N!z@*Gh=%KNLvG7FI^(&;E?x~fhP{v<j@sNK4hMojf<X50Y!{gnT!(;bd7P)y4
z_;(Wc2nkSQUwD<2kF>u;)B~V~C%P|BbOgqq2k~1V+GZXA=S=q{GI_CeV&^528vlNH
z{7n8^<iMfx$)e63&>8E#q>bHospkHFfw_;8kGaYR>HZ_S*O~4-Sq1xEV*m1W6yeCu
zJedsJ9%e&oqB}23lqg#NnG|fljg+3Hyi_=oHz5sU?<M-@9rP4AK_Fy(!V_DjV&R+X
zWazSbeiDM;IPC~*;F)H~=Z}$r@$M-^Z%X8RQupFp;A-kj2d&Mh=2PJ_lvCLbxilhj
ziM_V)_<b+A8cW3!vM*6EsDR_$SI=}`CTkbxBMKB|@MN6p5a+S(%NnY=q5JB=AG6xu
z{8lx!yG~Do;V8rSeN$8_H0?vD8a{Ta;VY+hPgi)F=^&zeq15^D+_`6{uK5WVye1g?
zq|u${#sicIpDETq4^Kz>HBj^8{lv^uB|n7zJ2s`|7E8j!&Z)3eL~~QN-;jOs;!>O2
zfoqvfo|aZ3j*6*bhR1Vf*^3WeFosooZMC(<1eM|}`$K!dKD8|sZ32DcOn%pIWIs}+
zk%gAEpw30Lkfkf*T2*cmUHhR^xlGZbG(I&UWY>Kei(`8*t%92~-B)S&UAz&(C_=F)
zEdBRI=_*K%L0VcxAveRzI`n|&pP|)u{-1tbC|uMg?NW8VyYEQ**bPE-zN>fq`<**`
z$6xE*(K-Ixo#7)bS&-k^cjN1HkI4VquTaxxU-xF0to(txzV(e?=^Ov~rt$yiEX?^)
zc<i(mUiZV?f71Qqy}LW_?%dt^zE1P>;9#g>$zk}lujh1Up;066JH<PVWLJJF5vW9<
z5`jttDiNqepb~*f1pbF3K+ln)>3Ad^9E^`dM9j(st#mpPOUZ21N@r6d8%acx!>M2_
zB8AomuaC_VB)(pxtwd^{m5il=xkS(!u@Y7?n_4e87nJ;XEM@D&tV}kYi<7wYc7061
zme3Y?H|$3}{rErrN}=#~fOVG(h3^8s36K_$2LV3@XuVn}RACPM)hmU<azOtt3WZI8
zj{?R3zX*63@HxQG0`9$9C_D%FQ^0e82Va9e7JHWf`vB<~EhX*V?Lylh&=%GCj7i85
zoz5PdMR~9nA;c!1T)Hhsb~XO<KQ9zUiS7^d_?vHUsJ+KHByL-{{;fAJUq)oozZ?H;
z(3grtL?U_?|0_V>1IUSdJ%ayTsOK*D7v28A!=8=x)!u#$MUrKqxIBvb_X8IBp3TIT
z{BMH%HSpz3oAo^(DDp3X{}#mU%})Itk}dUVv3MQ$bDjLYY5v>5ZwCK!PQK?;Mf-i=
ze;WJ`l<?C<{s{QL2LIzF{3DXT3A9JRA4R)a#P9J3KH};1H-FgM?GGNQ>h`aAMBn6Z
zd$>C6Upwa8?C(hW*LM2bI{hoU{J}1NbC*BR<u~NB&+o#{G1zfF-y@TiREa<(0+k3<
zB2bAyB?6TQR3cD`z@J(K_*@>J!^2coCWdufV6~{g11p*K&$HnIh4Xp8MGBV>n2=wn
za6b1(>kdlHf9;I|JyH@U)Zsp!L+7iA%4bl8ctP>`?4Eo^0Y0DEYnIYN$hCyZ6Hsbm
zQk|>A5=^E^1!;Xm$!7yGU%|)Jp**JNRl&I2r<5F@(PRIM6`keqSVYzj@suPy7LoXq
z${wBpF<)w8IcCR0@$m#i;#?19{*MOuoVVLxn`&?S0iqE73g4sPsDg(SbnE{<+~}|+
zHgDXxKDc7%KrWfh1=odEhuT_J<|MZA{#9+Ew$-7PH`;XZHfY$*X9xF!Iyx$suVwt%
z^7kWhwtQEUE%a6H11_C=A!+wIL)(k?(t7dpAcV>}@~i>F^Wyw<0A9mKPk+5tzWD%E
zhF3FwN@S034J>%I>b%5sDv(~K<Ge3a^cR46-a&fD7K~7S73Dv<i1O9OQT#&l6#(B4
z@$*vEN@EEGj5~l--R!dfgmEM6SFNd;pu90moVQCPU_4AESu2rdqmjhcNhD~{0o<zf
z5?Ns^C$S9@X*0GH=N%GRD??V*E|Cu7F%s*LNZ1%4q*EgO#uC!$lE__#Nyw&oYay`5
z*hFGIb8ZC~HoihgSeAO!*iT5WM6yO5>D*pR=fL+HFA}n4c0a%&<6|VYwc*`B9yAKX
z*(QyS8DAsh&W0Tj_@F@@uxeNR0|1i-ZM9UrcRoE{KW1zt<n9IU2RLE8i(;@_7UwY|
zM>_AT*$nW65hIQ{s|CoD#v#(#Bg=Nm2oh(&ptJhV3D1uqp!*ga1E~2riQVL%brndp
zaWk-LgBZ2cZd9&1>KH`53CJu>3cQE1cgU=TUnxueq->L@PZMk0|A>^J#;&KXTKyqO
zssA#Wn~-_mN#p~*dgD9b8}<0{`D^SR@z;bj%#jRu{{m3YE}}Kgr@XHVoxIuCWGn#m
z$CGj4o6|sf;UA1Agm11y45J1$_sx?w1298x(|G6-=WCvO4*7;V!Pk5``E-vC?f5;g
z7a&KPF^lq^qk9_TLTjuhanI4a8zVwnsF1s0eF^!09Ye25yoQ__eOKV;L7?toOT)b~
z`e?{kMjwLk|8exy(Aes#e!rUR$o)-(LOY%TBQOZwBFcG=-qpB_M0@IJh<lC>&&Dw9
zRU<E^MqblO5?Le1@+)dOBzIJ$#WP@%#Wf3*#W^da_)=ncj`lZx8^cuFzz$%O26@vw
z5?Us0hLugZiz{s|!cZrh%Svr73)<I*9gSzn=5<AzbAL<tVrlJWWsT=~+VMM-wZ#kV
z5)O;G-y`{jQhuJ2mwV9C`v;W#!e*9lI#2R}8p0n{lZ3;NrKBDIu96Qdw&lYVM81~o
znQZ})*Gamt(PdL>4A}LEiFxf523;EF%NX6;C~3!MBLvm6xDe3OuJ<?9di{(1joNHq
z05eg~JmK}Puia3)uC^ED@-7#(wYNe7SIP!taXV5J+^wsLLQ=ja&FinNwbe8bjCzNa
zwa}`WHj5il6S(idG`?2TdYeeTZmH;PYK2_=YKP)&3rNThTLzbiY&C?m+ZIe0l1kpu
z{PC^@WGLX&r`ty(2t{pqKlwjU=^GZ5R$6z}kt$tmM5^>`cNChOF}z_xZ&QiEIWSnF
zKexR2C+wilb8;P~(B*cbcY4JI>U`R7(2^PwA^2;}WzzHtV(U;e+KP7%%{8mli-<$X
zT<f~lcrrSYi&;X-DdbwYfjHiD`~4!V*#o0isURLw;aQy(ilRIsla0l!!O$?3Oo}3l
z5lYYUqFJ-2x33!njI8M#G~y``F;r0rde#Sol3pijJUl~beoFWJR1cig_3!K6oIdNM
z?m6+aUSm9}d$KxScdPQY(vQ)k&zJDSI^KY*(r({-Qm=km_vB6*ZN{#X&^UQj$8*do
zZCCX<j}Kv_(s{*2`1=zKEC=L|9@@DGEnn5<>Ge-jSZC$*`h9xM<By-zwLA2sZCCV~
z^ZLRp{T5@azez^7MMd{v#8cOH>5Gi_P?OBb>e`t8<~GV}IsL6|dcbI7)48L1)zi8^
zt5=`U^{4b%yWq!rkKXX0UNa_*+|;I58|{*Jhu*M{tks3|IYW9~RyW3|3^ikV)#GHM
z=F{YLF%*75@^xEu&*SI}4@n^^VXNIIPU0d<z2cBQo7((#yVy_d*1g``Q@ZA@3wrQ+
zq-OSRGY4{mCLT@;Gc^)3Q-gyUD=VK{n_0YZxy{T(_F0mj8BV3ML0Si9@Rq0I-jj}J
zEps%R7UtkcWC*W}DvJY=3|`<&MACb$v`tN0k(lj>UI$HE8S*Szhf@iwb<~QbQ>{CD
z`nR{PYFo9cWmRkc_HCP2wr10jfyl^kD$_EWP7Sqyu#yHE9=?lYDwZ+_g^3qX_X@l-
zIwXr`MssO1ni|O^lCmf?+C(myi4P^MSWv#ZN+q<*B}`c-Du#M`FLmrX*%inoa~UhP
zO44NosH%1(idHEkd?AppyP90V5xmoiw^&Cbv0Lcf<>1D(>+EfTU`ryKOIqziR?<qx
zqd+6+=y1FJ{&cWqDA<Bpwnx{s1zQFqnFGn_a5|Mt<uWa~<UKeU(2}M1V>4jN_j4&Y
zSu2`NrJ)8vs4GTvB$63sc082?BRc57Wxb-Qm=)cZmFE%cNS0KM;$??K_7dtMYgSY9
zQ;r~_ig$daSUhH#u}C(eT1Rz~0lY(;8#QG_>7oZ=*;x?Q1bj~i*N*u<Sv&5EsM~%i
zAv>Zifor9eOi@or<?LQcy#U^_R$^4_i`*Nh*O75jBbnMqXEZ1(aho!IVNp$Plj8}z
z(wwjqlFXog+WAN}7a1uY)xc4XY&@-u(}@sUNM5yP`0?U~(2VQ8JJFlU{QUtZ&x?yP
ze_x=KUL_8ewWAmJAxq_}i~EnIbf4gT%2K)^PUudGo%f0w!TWwru2;+wyuVmVuNAxx
zSxU#INtt~&FTRoyEKB!`$+GkYaiT08M76nA>bFtwzHccVZ_Eds6g%$~P2zA_Iws{y
z%gN6bypQbUdc{1!`^Tm9`J&wZrB^f;_j^m_F@x=JQtZ4JyVQZQbl%M_)$z*HE2T8T
zyn<I5r97|TU12w!cF(R&-ZH_&R0y-1S7{rpB+>Sn2c4nK)n0VAiRgP=bP7AsdB2~H
z(RU0qM;yo>r5^liW#XRzo$Q=-**_rVuWd)#94lA;6Eo0fs_z%1{W;>?GGtt-oc$-I
z%-n1G&o@BVu-otMKi^UE?tXY)(y#5$Q_{}0{cSm>gdTD2IQ64qvk|vZ_56e{6N@EX
zIw|>Sn}Oa9day*&M(E60P+Z&3BcPLC_X<BD>DL;1K*_t;!*pgU0Q>Io(oFK6Yp)L<
zox%PWXP}>+f&LTF$*+6-z5;r=IJ^ORqi2EO=L}rKTC__eBEd>nG03zKbczqUx=fZ0
z#9Jj@Ar9~y@&SyO<_-rD**yG8J8E3CDmHC{le{}_w=2KAM&XAU+Z3HA*!{{5?d6hv
z_pXYi=<Yos+Eb=Dxc%O*<lXxt<DdtXFDIaV<z-HS%0Hv*xc6mn$TOSC=I|y?6tf2Y
z)QFi)m{IyF34IU+lg^=$6egu+4D+pw8OiMz(Ntn|#L8N+(Au^&E6WREqL7T65u6%5
zfJtyReE=UtiD1GJ%Ow&ApyI$xNM=h!d3HHHc`?nN?VVe?&F-z6One!oR0VVSO}n;s
zZt2}v%8_4W0SQx4vpcLTgg0#$=H|X_U7daAww|7McJDBEbawT1lU4YOn$b*77G8eE
zrK5vC<3b;AQJ;e;CH}52x;Up#^o5yH&60_lX~~JC`x7+N8mrY;Xr?Lhdou2i&$!uS
z)&8UmDp>k`88eninZuD}jJ`cXOCOr6nzR6L#)4W$efh?1dmxihrsX<ddV&~t%qUBy
znx=^_-l$e|%v)s)x&OJoiR1j%PH6#3X0#%dIgr3i8Zeu-;V|d0VzJVrB9z3kA%wk>
z5GL89IK_OxK^n-#@m;5QOp!Xfda>#l5>k8^s|pc{9Z1534Y4YcoPAjBVVzNenBb)?
z>~26o<wi%cA|wMDLN+v%0!o>T6&0bZwI3*r7f7dMF9=z~YJ?2OV2v@`hCNhl4bH<=
zBoT)(TOAD}LKvoW@)|U2AU6cbNOA~cTA}geV2bmRfq}HOk1>4P%HljCSmt{2hmvT9
zhD$E)wRYn50Yg4-px9ED^8~NMKRx4TeO^Z}41(uO^0}ykK#zf)`gf^y1;gbIS<3SL
zhRMCiIQ4m5!Z65!3cB^_>F6(UMu5wILiuON{`nh2?(#>Vk8Rvy{rQ{)!ypA0iONV>
z*2g}kOmX~@OZLy}A%^z+%a)~IWv)p0Gvw$D1ncv<i6Q&p^0OSn`=L)~Dj4VW6~i{=
z$z6Ufz!799rmWBFFovg;Ap3XM{}W2TOUdzijp3w2pX%b){|smp6ShxN5SbKouRz@G
ze;mS2{h-ogII7GsaG4jMbLsOsks-^^r2m9V|AbOtxQ7)LWP1$%*`<%knVl5O@dVkW
zuTb#}GS2$*`jjD`S7Ld0{JyUAx&1{@Nh)|)p$y#m-vWdDv;N_rEy?hpjTV31`ab~2
zsb5?dFSS)@KIu%{f0%Y28CvV9VP9N7^Y;hc@{BWl6}k-$eO_lDYXK37<!o#kXZq`4
zP~T<$yq@CkN%D6iY5Y-QJ#PQM1&yl6`g~4nQcavkNy(8|pJ6qWo%*6f3Afph{jdqv
zW4sQ^L}ULvPYx)3w><fBCOTR}G$meSvHnd(ik)G7h6|OxOH6D~2KTratjA<J0pz9;
z?=O}91Fj0VWp9~5f8jdY10D8pCb#~^8T1csu(ft`V3iTK{x+rWj^E3-+6tRz&}TaY
zT}70N!7f|>1=aDE0bPxM4hP>?YCv<jkcxS_F(ZA`Wt{!mTzi|Woc@>lY>D@{6kMqI
EFKNVTVE_OC

literal 0
HcmV?d00001

diff --git a/t1/teste.c b/t1/teste.c
new file mode 100644
index 0000000..764bb16
--- /dev/null
+++ b/t1/teste.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+#include <stdlib.h>
+/* #include "libconjunto.h" */
+/* #include "libfila.h" */
+#include "liblef.h"
+
+int main() {
+
+	return 0;
+}
diff --git a/t1/teste.o b/t1/teste.o
new file mode 100644
index 0000000000000000000000000000000000000000..fcb4c8d3b7a3c97c529677263b89f452179bc9df
GIT binary patch
literal 7624
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

literal 0
HcmV?d00001

-- 
GitLab