Se analizarán las siguientes bases de datos correspondientes y se responderan las preguntas correspondientes.

Importar base de datos

#file.choose()

bds <- read.csv("/Users/isaacdiazruizdechavez/Downloads/FORM - Scrap.csv")
bdm <- read.csv("/Users/isaacdiazruizdechavez/Downloads/FORM - Merma(1).csv")
bdm3 <- read.csv("/Users/isaacdiazruizdechavez/Downloads/FORM - Merma.csv")
bdp <- read.csv("/Users/isaacdiazruizdechavez/Downloads/Form_producción .csv")

FORM SCRAP

¿Cuántas variables y registros tiene la base de datos?

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
#install.packages("psych")
library(psych)
describeData(bds, head=1, tail=1 )
## n.obs =  250 of which  250   are complete cases.   Number of variables =  9  of which all are numeric  FALSE  
##                       variable # n.obs type
## Referencia*                    1   250    3
## Fecha*                         2   250    3
## Hora*                          3   250    3
## Producto*                      4   250    3
## Cantidad                       5   250    1
## Unidad.de.medida*              6   250    3
## Ubicación.de.origen*           7   250    3
## Ubicación.de.desecho*          8   250    3
## Estado*                        9   250    3
##                                                                                       H1
## Referencia*                                                                     SP/08731
## Fecha*                                                                        31/08/2022
## Hora*                                                                           14:55:40
## Producto*             [BACKFRAME 60% CUELLO ARMADO] 18805. 60% Backframe. Cuello Armado.
## Cantidad                                                                               2
## Unidad.de.medida*                                                             Unidad(es)
## Ubicación.de.origen*                                           SAB/Calidad/Entrega de PT
## Ubicación.de.desecho*                                         Virtual Locations/Scrapped
## Estado*                                                                            Hecho
##                                                           T1
## Referencia*                                         SP/08479
## Fecha*                                            01/08/2022
## Hora*                                               13:59:47
## Producto*             [N61506747 TAPA] N61506747. Kit. Tapa.
## Cantidad                                                   1
## Unidad.de.medida*                                 Unidad(es)
## Ubicación.de.origen*               SAB/Calidad/Entrega de PT
## Ubicación.de.desecho*             Virtual Locations/Scrapped
## Estado*                                                Hecho

Con la función anterior podemos observar que en la base de datos inicial se encuentran 250 registros completos en un total de 9 variables.

Clasifica cada variable en cualitativa, cuantitativa discreta o cuantitativa continua

Variable<-c("Fecha","Cantidad","Ubicación de origen")
Type<-c("Cuantitativa (discreta)", "Cuantitativa(discreta)","Cuanlitativa")
table<-data.frame(Variable,Type)
knitr::kable(table) 
Variable Type
Fecha Cuantitativa (discreta)
Cantidad Cuantitativa(discreta)
Ubicación de origen Cuanlitativa

Limpieza de datos

Nota: Utilizar solamente las columnas necesarias para el análisis descriptivo.

Como primer técnica de limpieza de datos se eliminarán las columnas para únicamente tener las 3 variables de: Fecha, Cantidad y Unidad de origen.

bds1 <- bds
bds1<- subset(bds1, select = -c (Referencia, Producto, Unidad.de.medida, Hora, Ubicación.de.desecho, Estado))

Como segundo paso contabilizaremos cuantos NA´S hay en la base de datos para analizar qué hacer con eso.

sum(is.na(bds1))
## [1] 0
sum(is.na(bds))
## [1] 0

No hay NA´S dentro de las bases de datos por lo que no es necesario reemplazar con ningún dato.

Tablas de Frecuencia

bds2 <- table(bds1$Fecha)
knitr::kable(bds2)
Var1 Freq
01/08/2022 2
02/08/2022 5
03/08/2022 13
04/08/2022 6
05/08/2022 7
06/08/2022 7
08/08/2022 4
09/08/2022 5
10/08/2022 13
11/08/2022 3
12/08/2022 12
13/08/2022 5
15/08/2022 6
16/08/2022 24
17/08/2022 9
19/08/2022 17
20/08/2022 9
22/08/2022 11
23/08/2022 1
24/08/2022 21
25/08/2022 11
26/08/2022 12
27/08/2022 12
29/08/2022 8
30/08/2022 17
31/08/2022 10
bds3 <- table(bds1$Ubicación.de.origen)
knitr::kable(bds3)
Var1 Freq
SAB/Calidad/Entrega de PT 58
SAB/Post-Production 13
SAB/Pre-Production 179

Tablas cruzadas

bds4<-table(bds1$Fecha,bds1$Ubicación.de.origen)
knitr::kable(bds4)
SAB/Calidad/Entrega de PT SAB/Post-Production SAB/Pre-Production
01/08/2022 2 0 0
02/08/2022 3 2 0
03/08/2022 4 0 9
04/08/2022 2 0 4
05/08/2022 2 1 4
06/08/2022 1 0 6
08/08/2022 0 1 3
09/08/2022 0 0 5
10/08/2022 2 1 10
11/08/2022 0 0 3
12/08/2022 2 1 9
13/08/2022 5 0 0
15/08/2022 1 5 0
16/08/2022 5 0 19
17/08/2022 0 0 9
19/08/2022 0 0 17
20/08/2022 0 0 9
22/08/2022 3 1 7
23/08/2022 0 1 0
24/08/2022 5 0 16
25/08/2022 4 0 7
26/08/2022 7 0 5
27/08/2022 1 0 11
29/08/2022 2 0 6
30/08/2022 4 0 13
31/08/2022 3 0 7

Tablas cuantitativas y cualitativas

Tabla cualitativa de Ubicación de origen

library(plyr)
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
## 
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
pie(prop.table(table(bds1$Ubicación.de.origen)),col=c("lightgreen","blue","red"),main="Ubicación de origen",las=1)

hist(bds1$Cantidad)

Gráfico de dispersión
bds1$Fecha<- as.Date(bds1$Fecha,format = "%d/%m/%Y")
plot(bds1$Fecha, bds1$Cantidad)

FORM MERMA

¿Cuántas variables y registros tiene la base de datos?

library(dplyr)
#install.packages("psych")
library(psych)
describeData(bdm, head=1, tail=1 )
## n.obs =  60 of which  60   are complete cases.   Number of variables =  3  of which all are numeric  FALSE  
##        variable # n.obs type       H1            T1
## Fecha*          1    60    3 11/01/22              
## Mes*            2    60    3    ENERO Total general
## Kilos*          3    60    3     5080       185,426

Podemos observar que en la base de datos inicial se encuentran 50 registros completos en un total de 3 variables.

Clasifica cada variable en cualitativa, cuantitativa discreta o cuantitativa continua

Variable<-c("Fecha","Kilos")
Type<-c("Cuantitativa (continua)", "Cuantitativa(continua)")
table<-data.frame(Variable,Type)
knitr::kable(table) 
Variable Type
Fecha Cuantitativa (continua)
Kilos Cuantitativa(continua)

Limpieza de datos

Nota: Utilizar solamente las columnas necesarias para el análisis descriptivo.

Como primer técnica de limpieza de datos se eliminarán las columnas para únicamente tener las 2 variables de: Fecha, y Kilos.

bdm1 <- bdm
bdm1<- subset(bdm1, select = -c (Mes))

Como segundo paso eliminaremos los renglones donde tenemos datos

bdm2 <- bdm1
bdm2 <- bdm2[ -c (5, 12, 19, 25, 31, 36, 42, 54, 59, 60),]

Convertimos la columna de fecha a fecha

as.Date(bdm2$Fecha) 
##  [1] "0011-01-22" "0011-01-22" "0022-01-22" "0022-01-22" "0018-02-22"
##  [6] "0018-02-22" "0018-02-22" "0018-02-22" "0018-02-22" "0024-02-22"
## [11] "0003-03-22" "0008-03-22" "0011-03-22" "0016-03-22" "0023-03-22"
## [16] "0030-03-22" "0004-04-22" "0011-04-22" "0014-04-22" "0021-04-22"
## [21] "0027-04-22" "0002-05-22" "0009-05-22" "0014-05-22" "0024-05-22"
## [26] "0025-05-22" "0007-06-22" "0015-06-22" "0020-06-22" "0027-06-22"
## [31] "0004-07-22" "0011-07-22" "0016-07-22" "0021-07-22" "0027-07-22"
## [36] "0008-08-22" "0010-08-22" "0011-08-22" "0013-08-22" "0015-08-22"
## [41] "0022-08-22" "0029-08-22" "0029-08-22" "0030-08-22" "0031-08-22"
## [46] "0031-08-22" "0005-09-22" "0007-09-22" "0015-09-22" "0021-09-22"
class(bdm2$Fecha)
## [1] "character"
Tablas de Frecuencia AQUI NO

Tablas cuantitativas y cualitativas

Tabla cualitativa de Ubicación de origen

media <- mean(bdm3$Kilos)
media
## [1] 3708.52
mediana <- median(bdm3$Kilos)

mode <- function (x) {
  ux <- unique(x)
  ux [which.max(tabulate(match(x,ux)))]
}

mode <- mode(bdm3$Kilos)
mode
## [1] 3810
hist(bdm3$Kilos)

library(ggplot2)
## 
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
## 
##     %+%, alpha
ggplot(bdm3, aes(x= Fecha, y= Kilos)) +
  geom_bar(stat="identity", fill="red") + scale_fill_grey() + # Add bars to the plot
  labs(title = "Kilos de merma", # Add a title
       x = "Fecha")

ggplot(bdm3, aes(x= media, y= Mes)) +
  geom_bar(stat="identity", fill="red") + scale_fill_grey() + # Add bars to the plot
  labs(title = "Kilos de merma", # Add a title
       x = "Fecha")

Gráfico de dispersión

bdm3$Fecha <- as.Date(bdm3$Fecha, format = "%d/%m/%Y")
plot(bdm3$Fecha, bdm3$Kilos, main = "Kilos de merma",
     xlab = "Fecha", ylab = "Kilos",
     pch = 19, frame = FALSE)

FORM PRODUCCIÓN

¿Cuántas variables y registros tiene la base de datos?

library(dplyr)
#install.packages("psych")
library(psych)
describeData(bdp, head=1, tail=1 )
## n.obs =  2568 of which  39   are complete cases.   Number of variables =  17  of which all are numeric  FALSE  
##                    variable # n.obs type               H1
## No.                         1  2560    1                1
## CLIENTE*                    2  2568    3           VARROC
## ID.FORM*                    3  2568    3     VL-017-13938
## PRODUCTO*                   4  2568    3 763 . KIT. CAJA.
## FECHA*                      5  2568    3         01/08/22
## PIEZAS.PROG.*               6  2568    3              199
## TMO..MIN.*                  7  2568    3               15
## HR..FIN*                    8  2568    3         09:15:00
## ESTACION.ARRANQUE*          9  2568    3               C1
## Laminas.procesadas         10  1975    1              201
## INICIO.SEP.UP*             11  2568    3         09:00:00
## fin.de.set.up*             12  2568    3         09:12:00
## INICIO.de.PROCESO*         13  2568    3         09:13:00
## FIN.de.PROCESO*            14  2568    3         09:26:00
## TIEMPO.CALIDAD*            15  2568    3                1
## TIEMPO.MATERIALES          16   325    1             <NA>
## MERMAS.Maquinas.           17   107    1             <NA>
##                                                                                                                         T1
## No.                                                                                                                    110
## CLIENTE*                                                                                                              TRMX
## ID.FORM*                                                                                                     TR-059-18268.
## PRODUCTO*          U725. DMS. ITB. CHAROLA. ST0314 ( 50.5 c.m. x 178 c.m.) 1 Golpe = 2 Charolas. ( 1 Pieza). ( Id: 18267).
## FECHA*                                                                                                          31/08/2022
## PIEZAS.PROG.*                                                                                                          100
## TMO..MIN.*                                                                                                              25
## HR..FIN*                                                                                                          07:55:00
## ESTACION.ARRANQUE*                                                                                                 TROQUEL
## Laminas.procesadas                                                                                                    <NA>
## INICIO.SEP.UP*                                                                                                            
## fin.de.set.up*                                                                                                            
## INICIO.de.PROCESO*                                                                                                        
## FIN.de.PROCESO*                                                                                                           
## TIEMPO.CALIDAD*                                                                                                           
## TIEMPO.MATERIALES                                                                                                     <NA>
## MERMAS.Maquinas.                                                                                                      <NA>

Clasifica cada variable en cualitativa, cuantitativa discreta o cuantitativa continua

Variable <-c("No.", "Cliente","ID Form","Producto", "Fecha", "Piezas Prog", "Tiempo Min", "Hora Fin", "Estación Arranque", "Laminas procesadas", "Inicio Sep up", "Fin Inicio Sep up", "Inicio proceso", "Fin de proceso", "Tiempo calidad", "Tiempo materiales", "Mermas máquinas")
Tipo <-c("Cuantitativa (discreta)", "Cualitativa (nominal)", "Cualitativa (nominal)", "Cualitativa (nominal)", "Cuantitativa (continua)", "Cuantitativa (discreta)", "Cuantitativa (discreta)", "Cuantitativa (continua)",  "Cuantitativa (continua)", "Cuantitativa (discreta)",  "Cuantitativa (continua)",  "Cuantitativa (continua)",  "Cuantitativa (continua)",  "Cuantitativa (continua)", "Cuantitativa (discreta)", "Cuantitativa (discreta)", "Cuantitativa (discreta)")
table<-data.frame(Variable, Tipo)
knitr::kable(table)
Variable Tipo
No. Cuantitativa (discreta)
Cliente Cualitativa (nominal)
ID Form Cualitativa (nominal)
Producto Cualitativa (nominal)
Fecha Cuantitativa (continua)
Piezas Prog Cuantitativa (discreta)
Tiempo Min Cuantitativa (discreta)
Hora Fin Cuantitativa (continua)
Estación Arranque Cuantitativa (continua)
Laminas procesadas Cuantitativa (discreta)
Inicio Sep up Cuantitativa (continua)
Fin Inicio Sep up Cuantitativa (continua)
Inicio proceso Cuantitativa (continua)
Fin de proceso Cuantitativa (continua)
Tiempo calidad Cuantitativa (discreta)
Tiempo materiales Cuantitativa (discreta)
Mermas máquinas Cuantitativa (discreta)

Identifica la escala de medición de cada variable

Variable <-c("No.", "Cliente","ID Form","Producto", "Fecha", "Piezas Prog", "Tiempo Min", "Hora Fin", "Estación Arranque", "Laminas procesadas*", "Inicio Sep up", "Fin Inicio Sep up", "Inicio proceso", "Fin de proceso", "Tiempo calidad", "Tiempo materiales", "Mermas máquinas")

Medicion <-c("Razón", "Nominal", "Nominal", "Nominal", "Intervalo", "Razón", "Razón", "Intervalo","Intervalo", "Razón", "Intervalo", "Intervalo", "Intervalo", "Intervalo", "Razón", "Razón", "Razón")

table2<-data.frame(Variable, Medicion)
knitr::kable(table2)
Variable Medicion
No. Razón
Cliente Nominal
ID Form Nominal
Producto Nominal
Fecha Intervalo
Piezas Prog Razón
Tiempo Min Razón
Hora Fin Intervalo
Estación Arranque Intervalo
Laminas procesadas* Razón
Inicio Sep up Intervalo
Fin Inicio Sep up Intervalo
Inicio proceso Intervalo
Fin de proceso Intervalo
Tiempo calidad Razón
Tiempo materiales Razón
Mermas máquinas Razón

Limpieza de datos

bdp1 <- bdp
bdp1<- subset(bdp1, select = -c (No., ID.FORM, PRODUCTO, FECHA, HR..FIN, ESTACION.ARRANQUE, INICIO.SEP.UP, fin.de.set.up, INICIO.de.PROCESO, FIN.de.PROCESO, TIEMPO.MATERIALES, MERMAS.Maquinas.))

Como primer técnica se eliminaron las columnas que no aportan información de valor para el análisis de la base de datos. Son 5 las variables que se tomarán en cuenta para el análisis que se realizará.

Saber cuantos NA´S hay en la base de datos
sum(is.na(bdp))
## [1] 5305
sum(is.na(bdp1))
## [1] 593

Se contabilizan un total de 593 NA´S en la base de datos por lo que se aplicarán las técnicas de limpieza de Eliminar los NA´S y como en la base de datos hay datos faltantes que R no nos marca como NA´s, manualmente eliminaremos esos renglones con el filtro de que los valores menores a 0 serán eliminados, dicha técnica aplicada con el fin de aprovechar la base de datos con los datos relevantes.

Eliminar los NA´S
bdp2<- bdp1
bdp2 <- na.omit(bdp2)
Eliminar renglones
bdp3 <- bdp2
bdp3 <- bdp3[bdp3$TMO..MIN. > 0, ]

Tablas de Frecuencia

bdp4 <- bdp3
bdp4 <- table(bdp4$CLIENTE)
knitr::kable(bdp4)
Var1 Freq
DENSO 166
HELLA 61
MERIDIAN LIGHTWEIGHT 31
STABILUS 1 507
STABILUS 3 222
STABILUS 3. 17
TRMX 221
VARROC 129
YANFENG 230
bdp5 <- bdp3
bdp5 <- table(bdp5$TIEMPO.CALIDAD)
knitr::kable(bdp5)
Var1 Freq
44
0 132
1 1314
1.40 1
10 6
10:04 1
10:17 1
11 4
11:22 1
11:43 1
12:30 1
17 1
2 49
21 1
22 1
25 1
3 9
4 1
5 6
7 3
8 1
8:18 1
8:38 1
9 2
9:05 1

Tablas cruzadas

cruzada <-table(bdp3$CLIENTE,bdp3$Laminas.procesadas)
knitr::kable(cruzada)
0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 69 70 73 74 75 76 77 78 79 80 81 82 83 84 85 86 89 90 91 92 95 97 98 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 116 118 119 120 121 122 123 124 126 130 132 134 136 137 138 139 140 141 143 144 146 150 151 152 153 154 155 156 158 160 161 162 163 164 165 166 167 170 171 173 174 178 180 181 184 185 187 190 193 194 196 197 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 215 216 219 225 227 228 229 233 236 240 241 242 243 246 247 248 252 253 278 286 298 300 301 302 303 304 306 308 310 313 322 326 328 330 335 336 339 344 347 352 354 356 358 368 370 375 376 377 378 380 384 386 387 390 391 396 398 399 400 401 402 403 404 405 406 407 408 410 412 414 426 436 437 438 439 450 452 456 502 503 505 519 572 577 582 584 600 602 605 608 609 688 740 741 752 766 772 773 789 790 799 801 802 1022 1124 1125
DENSO 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 2 0 0 0 0 9 0 0 2 0 1 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 28 0 1 6 1 1 0 0 5 0 0 0 0 0 0 0 16 0 0 0 0 0 0 2 0 0 0 3 0 1 0 0 0 0 0 0 0 8 0 0 0 1 0 0 0 0 0 5 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 0 2 0 0 0 1 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 5 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
HELLA 12 0 1 0 0 1 0 0 0 0 3 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 1 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 7 4 6 4 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
MERIDIAN LIGHTWEIGHT 1 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 1 0 2 1 0 1 0 0 0 0 1 0 2 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
STABILUS 1 29 0 0 0 2 0 0 0 2 1 14 1 5 1 1 2 4 0 0 1 7 0 0 0 3 5 10 1 1 3 2 0 1 2 1 3 3 0 1 5 4 1 0 4 1 1 0 6 25 19 2 1 4 1 0 0 1 2 2 0 0 1 0 3 0 0 1 2 1 2 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 8 9 42 9 7 2 0 1 0 0 5 1 1 0 0 0 0 0 0 1 1 0 1 2 1 0 1 0 0 0 0 1 0 1 0 1 1 2 5 1 2 1 0 0 0 1 0 2 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 2 1 7 9 79 22 8 1 3 0 1 0 0 0 0 0 0 5 1 1 0 0 0 0 1 2 0 0 0 1 0 0 0 1 1 0 0 5 1 3 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 4 2 5 1 3 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
STABILUS 3 33 0 1 1 0 1 0 1 1 1 6 2 4 0 0 1 1 0 0 0 0 2 0 0 9 7 2 0 0 1 1 10 1 1 3 2 1 0 1 1 0 0 0 0 0 0 0 1 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 18 28 12 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 2 0 0 0 1 1 1 5 5 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 9 3 0 2 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
STABILUS 3. 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TRMX 32 2 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 2 1 0 0 0 0 1 1 3 2 1 0 1 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 23 15 4 1 0 1 2 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 15 7 17 4 2 0 0 0 0 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 1 1 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 5 2 12 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
VARROC 6 1 0 0 2 0 1 1 1 1 3 2 2 0 1 3 2 1 0 2 5 1 1 1 1 2 0 0 2 0 3 1 0 0 0 0 0 0 1 2 0 0 0 0 0 1 0 1 5 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 2 1 0 0 0 1 0 1 0 1 4 3 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 3 2 3 1 1 0 0 1 2 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 4 2 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 2 1 1 0 1 0 2 1 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
YANFENG 30 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 0 0 0 1 6 0 0 0 1 1 2 0 1 1 0 1 0 2 0 0 1 5 5 1 0 0 0 0 4 1 1 0 1 1 1 1 0 0 0 2 5 0 0 6 0 0 0 0 2 1 1 0 0 2 0 1 0 2 2 0 0 2 3 0 0 0 3 1 1 0 1 1 0 0 0 0 2 0 1 0 0 3 0 0 0 1 0 0 2 0 1 2 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 2 1 0 1 0 0 0 0 0 2 0 0 2 2 0 2 5 2 0 1 2 1 1 3 0 1 0 0 0 0 0 0 1 0 3 0 2 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 2 0 0 4 0 0 0 0 2 0 1 1 3 2 1 0 1 1 1 1 0 1 0 1 1 1 2 1 1 0 0 2 2 3 1 0 0 1 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 2 1 1 2 1 1 1 1 1 1 1 2 0 0 0

Gráficas cualitativas y cuantitativas

ggplot(bdp3, aes(x= Laminas.procesadas , y= TMO..MIN.)) +
  geom_bar(stat="identity", fill="red") + scale_fill_grey() + # Add bars to the plot
  labs(title = "Kilos de merma", # Add a title
       x = "Fecha")

hist(bdp3$Laminas.procesadas)

Gráficas de dispersión

plot(bdp3$PIEZAS.PROG., bdp3$TMO..MIN., main = "Fecha de ingreso con salario diario",
     xlab = "Fecha de ingreso", ylab = "Salario",
     pch = 19, frame = FALSE)
## Warning in xy.coords(x, y, xlabel, ylabel, log): NAs introduced by coercion

## Warning in xy.coords(x, y, xlabel, ylabel, log): NAs introduced by coercion

Conclusión y propuestas

El analizar la gráfica de merma en kilos nos permite ver que normalmente la cantidad es constante dentro de un cierto rango, a excepción de las bajas presentadas en Septiembre. Una propuesta para FORM podría ser el analizar por medio de gráficos que logren conectar una mayor cantidad de variables y poder predecir la cantidad de merma para desarrollar proyectos en donde se pueda utilizar la misma. Como un llamativo, el poder cuantificar la merma que puede ser reutilizada o aprovechada y la que definitivamente no se puede utilizar para nada.

Como segunda propuesta y después de realizar un análisis a la base de datos de producción, pudimos ver que el tiempo de calidad es por lo general 1, no obstante, existen 63 casos en el que ha excedido este número, en un rango de 2 a 22. Asegurar que el tiempo no excede ya sea 2, o en caso de ser ópitmo un rango inferior, para asegurar los tiempos de calidad.

La actividad nos permitió analizar bases de datos con un acercamiento real a la empresa FORM, en donde pudimos detectar áreas de oportunidad al momento de analizarlas, limpiarlas y darles el formato necesario para su manipulación en programas como R. El órden y relevancia de las variables al momento de tabular y visualizar datos es esencial y se detectó la importancia de conocer los formatos de programación al momento de manejar una base de datos sobre todo desde excel; donde pequeños y grandes errores pueden alentar y pausar el análisis de la información.

se trabajó con tres bases de datos y se realizó el análisis estadístico descriptivo para poder juntar los datos necesarios para conocer y ver de una manera más visual la situación de FORM.

LS0tCnRpdGxlOiBFTlRSR0FCTEUgMi40IChJbmRpdmlkdWFsKQphdXRob3I6ICJJc2FhYyBEw61heiBBMDE1NDA1NDMiCmRhdGU6ICIyMDIyLTA5LTI4IgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwogICAgY29kZV9kb3dubG9hZDogeWVzCgotLS0KU2UgYW5hbGl6YXLDoW4gbGFzIHNpZ3VpZW50ZXMgYmFzZXMgZGUgZGF0b3MgY29ycmVzcG9uZGllbnRlcyB5IHNlIHJlc3BvbmRlcmFuIGxhcyBwcmVndW50YXMgY29ycmVzcG9uZGllbnRlcy4KCiMjIyMgSW1wb3J0YXIgYmFzZSBkZSBkYXRvcwoKYGBge3J9CiNmaWxlLmNob29zZSgpCgpiZHMgPC0gcmVhZC5jc3YoIi9Vc2Vycy9pc2FhY2RpYXpydWl6ZGVjaGF2ZXovRG93bmxvYWRzL0ZPUk0gLSBTY3JhcC5jc3YiKQpiZG0gPC0gcmVhZC5jc3YoIi9Vc2Vycy9pc2FhY2RpYXpydWl6ZGVjaGF2ZXovRG93bmxvYWRzL0ZPUk0gLSBNZXJtYSgxKS5jc3YiKQpiZG0zIDwtIHJlYWQuY3N2KCIvVXNlcnMvaXNhYWNkaWF6cnVpemRlY2hhdmV6L0Rvd25sb2Fkcy9GT1JNIC0gTWVybWEuY3N2IikKYmRwIDwtIHJlYWQuY3N2KCIvVXNlcnMvaXNhYWNkaWF6cnVpemRlY2hhdmV6L0Rvd25sb2Fkcy9Gb3JtX3Byb2R1Y2Npb8yBbiAuY3N2IikKCmBgYAoKIyMgRk9STSBTQ1JBUAoKIyMjIyDCv0N1w6FudGFzIHZhcmlhYmxlcyB5IHJlZ2lzdHJvcyB0aWVuZSBsYSBiYXNlIGRlIGRhdG9zPwoKYGBge3J9CgpsaWJyYXJ5KGRwbHlyKQojaW5zdGFsbC5wYWNrYWdlcygicHN5Y2giKQpsaWJyYXJ5KHBzeWNoKQpkZXNjcmliZURhdGEoYmRzLCBoZWFkPTEsIHRhaWw9MSApCgpgYGAKCkNvbiBsYSBmdW5jacOzbiBhbnRlcmlvciBwb2RlbW9zIG9ic2VydmFyIHF1ZSBlbiBsYSBiYXNlIGRlIGRhdG9zIGluaWNpYWwgc2UgZW5jdWVudHJhbiAyNTAgcmVnaXN0cm9zIGNvbXBsZXRvcyBlbiB1biB0b3RhbCBkZSA5IHZhcmlhYmxlcy4KCiMjIyMgQ2xhc2lmaWNhIGNhZGEgdmFyaWFibGUgZW4gY3VhbGl0YXRpdmEsIGN1YW50aXRhdGl2YSBkaXNjcmV0YSBvIGN1YW50aXRhdGl2YSBjb250aW51YQoKYGBge3J9ClZhcmlhYmxlPC1jKCJGZWNoYSIsIkNhbnRpZGFkIiwiVWJpY2FjacOzbiBkZSBvcmlnZW4iKQpUeXBlPC1jKCJDdWFudGl0YXRpdmEgKGRpc2NyZXRhKSIsICJDdWFudGl0YXRpdmEoZGlzY3JldGEpIiwiQ3VhbmxpdGF0aXZhIikKdGFibGU8LWRhdGEuZnJhbWUoVmFyaWFibGUsVHlwZSkKa25pdHI6OmthYmxlKHRhYmxlKSAKYGBgCgojIyMjIExpbXBpZXphIGRlIGRhdG9zCgpOb3RhOiBVdGlsaXphciBzb2xhbWVudGUgbGFzIGNvbHVtbmFzIG5lY2VzYXJpYXMgcGFyYSBlbCBhbsOhbGlzaXMgZGVzY3JpcHRpdm8uCgpDb21vIHByaW1lciB0w6ljbmljYSBkZSBsaW1waWV6YSBkZSBkYXRvcyBzZSBlbGltaW5hcsOhbiBsYXMgY29sdW1uYXMgcGFyYSDDum5pY2FtZW50ZSB0ZW5lciBsYXMgMyB2YXJpYWJsZXMgZGU6IEZlY2hhLCBDYW50aWRhZCB5IFVuaWRhZCBkZSBvcmlnZW4uCgpgYGB7cn0KYmRzMSA8LSBiZHMKYmRzMTwtIHN1YnNldChiZHMxLCBzZWxlY3QgPSAtYyAoUmVmZXJlbmNpYSwgUHJvZHVjdG8sIFVuaWRhZC5kZS5tZWRpZGEsIEhvcmEsIFViaWNhY2nDs24uZGUuZGVzZWNobywgRXN0YWRvKSkKYGBgCgpDb21vIHNlZ3VuZG8gcGFzbyBjb250YWJpbGl6YXJlbW9zIGN1YW50b3MgTkHCtFMgaGF5IGVuIGxhIGJhc2UgZGUgZGF0b3MgcGFyYSBhbmFsaXphciBxdcOpIGhhY2VyIGNvbiBlc28uCgpgYGB7cn0Kc3VtKGlzLm5hKGJkczEpKQpzdW0oaXMubmEoYmRzKSkKYGBgCgpObyBoYXkgTkHCtFMgZGVudHJvIGRlIGxhcyBiYXNlcyBkZSBkYXRvcyBwb3IgbG8gcXVlIG5vIGVzIG5lY2VzYXJpbyByZWVtcGxhemFyIGNvbiBuaW5nw7puIGRhdG8uIAoKIyMjIyBUYWJsYXMgZGUgRnJlY3VlbmNpYQoKYGBge3J9CmJkczIgPC0gdGFibGUoYmRzMSRGZWNoYSkKa25pdHI6OmthYmxlKGJkczIpCgpiZHMzIDwtIHRhYmxlKGJkczEkVWJpY2FjacOzbi5kZS5vcmlnZW4pCmtuaXRyOjprYWJsZShiZHMzKQpgYGAKCiMjIyMgVGFibGFzIGNydXphZGFzCgpgYGB7cn0KYmRzNDwtdGFibGUoYmRzMSRGZWNoYSxiZHMxJFViaWNhY2nDs24uZGUub3JpZ2VuKQprbml0cjo6a2FibGUoYmRzNCkKYGBgCgojIyMgVGFibGFzIGN1YW50aXRhdGl2YXMgeSBjdWFsaXRhdGl2YXMKCiMjIyMgVGFibGEgY3VhbGl0YXRpdmEgZGUgVWJpY2FjacOzbiBkZSBvcmlnZW4KCmBgYHtyfQpsaWJyYXJ5KHBseXIpCnBpZShwcm9wLnRhYmxlKHRhYmxlKGJkczEkVWJpY2FjacOzbi5kZS5vcmlnZW4pKSxjb2w9YygibGlnaHRncmVlbiIsImJsdWUiLCJyZWQiKSxtYWluPSJVYmljYWNpw7NuIGRlIG9yaWdlbiIsbGFzPTEpCgpoaXN0KGJkczEkQ2FudGlkYWQpCmBgYAoKIyMjIyMgR3LDoWZpY28gZGUgZGlzcGVyc2nDs24KYGBge3J9CmJkczEkRmVjaGE8LSBhcy5EYXRlKGJkczEkRmVjaGEsZm9ybWF0ID0gIiVkLyVtLyVZIikKcGxvdChiZHMxJEZlY2hhLCBiZHMxJENhbnRpZGFkKQpgYGAKCiMjIEZPUk0gTUVSTUEKCiMjIyMgwr9DdcOhbnRhcyB2YXJpYWJsZXMgeSByZWdpc3Ryb3MgdGllbmUgbGEgYmFzZSBkZSBkYXRvcz8KCmBgYHtyfQpsaWJyYXJ5KGRwbHlyKQojaW5zdGFsbC5wYWNrYWdlcygicHN5Y2giKQpsaWJyYXJ5KHBzeWNoKQpkZXNjcmliZURhdGEoYmRtLCBoZWFkPTEsIHRhaWw9MSApCmBgYAoKUG9kZW1vcyBvYnNlcnZhciBxdWUgZW4gbGEgYmFzZSBkZSBkYXRvcyBpbmljaWFsIHNlIGVuY3VlbnRyYW4gNTAgcmVnaXN0cm9zIGNvbXBsZXRvcyBlbiB1biB0b3RhbCBkZSAzIHZhcmlhYmxlcy4KCiMjIyMgQ2xhc2lmaWNhIGNhZGEgdmFyaWFibGUgZW4gY3VhbGl0YXRpdmEsIGN1YW50aXRhdGl2YSBkaXNjcmV0YSBvIGN1YW50aXRhdGl2YSBjb250aW51YQoKYGBge3J9CgpWYXJpYWJsZTwtYygiRmVjaGEiLCJLaWxvcyIpClR5cGU8LWMoIkN1YW50aXRhdGl2YSAoY29udGludWEpIiwgIkN1YW50aXRhdGl2YShjb250aW51YSkiKQp0YWJsZTwtZGF0YS5mcmFtZShWYXJpYWJsZSxUeXBlKQprbml0cjo6a2FibGUodGFibGUpIAoKYGBgCgojIyMjIExpbXBpZXphIGRlIGRhdG9zCgpOb3RhOiBVdGlsaXphciBzb2xhbWVudGUgbGFzIGNvbHVtbmFzIG5lY2VzYXJpYXMgcGFyYSBlbCBhbsOhbGlzaXMgZGVzY3JpcHRpdm8uCgpDb21vIHByaW1lciB0w6ljbmljYSBkZSBsaW1waWV6YSBkZSBkYXRvcyBzZSBlbGltaW5hcsOhbiBsYXMgY29sdW1uYXMgcGFyYSDDum5pY2FtZW50ZSB0ZW5lciBsYXMgMiB2YXJpYWJsZXMgZGU6IEZlY2hhLCB5IEtpbG9zLgoKYGBge3J9CmJkbTEgPC0gYmRtCmJkbTE8LSBzdWJzZXQoYmRtMSwgc2VsZWN0ID0gLWMgKE1lcykpCgpgYGAKCkNvbW8gc2VndW5kbyBwYXNvIGVsaW1pbmFyZW1vcyBsb3MgcmVuZ2xvbmVzIGRvbmRlIHRlbmVtb3MgZGF0b3MgCgpgYGB7cn0KYmRtMiA8LSBiZG0xCmJkbTIgPC0gYmRtMlsgLWMgKDUsIDEyLCAxOSwgMjUsIDMxLCAzNiwgNDIsIDU0LCA1OSwgNjApLF0KYGBgCgpDb252ZXJ0aW1vcyBsYSBjb2x1bW5hIGRlIGZlY2hhIGEgZmVjaGEKCmBgYHtyfQoKYXMuRGF0ZShiZG0yJEZlY2hhKSAKY2xhc3MoYmRtMiRGZWNoYSkKYGBgCgojIyMjIyBUYWJsYXMgZGUgRnJlY3VlbmNpYSBBUVVJIE5PCgojIyMjIFRhYmxhcyBjdWFudGl0YXRpdmFzIHkgY3VhbGl0YXRpdmFzCgojIyMjIFRhYmxhIGN1YWxpdGF0aXZhIGRlIFViaWNhY2nDs24gZGUgb3JpZ2VuCgpgYGB7cn0KbWVkaWEgPC0gbWVhbihiZG0zJEtpbG9zKQptZWRpYQoKbWVkaWFuYSA8LSBtZWRpYW4oYmRtMyRLaWxvcykKCm1vZGUgPC0gZnVuY3Rpb24gKHgpIHsKICB1eCA8LSB1bmlxdWUoeCkKICB1eCBbd2hpY2gubWF4KHRhYnVsYXRlKG1hdGNoKHgsdXgpKSldCn0KCm1vZGUgPC0gbW9kZShiZG0zJEtpbG9zKQptb2RlCgpoaXN0KGJkbTMkS2lsb3MpCmxpYnJhcnkoZ2dwbG90MikKCmdncGxvdChiZG0zLCBhZXMoeD0gRmVjaGEsIHk9IEtpbG9zKSkgKwogIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IiwgZmlsbD0icmVkIikgKyBzY2FsZV9maWxsX2dyZXkoKSArICMgQWRkIGJhcnMgdG8gdGhlIHBsb3QKICBsYWJzKHRpdGxlID0gIktpbG9zIGRlIG1lcm1hIiwgIyBBZGQgYSB0aXRsZQogICAgICAgeCA9ICJGZWNoYSIpCgpnZ3Bsb3QoYmRtMywgYWVzKHg9IG1lZGlhLCB5PSBNZXMpKSArCiAgZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiLCBmaWxsPSJyZWQiKSArIHNjYWxlX2ZpbGxfZ3JleSgpICsgIyBBZGQgYmFycyB0byB0aGUgcGxvdAogIGxhYnModGl0bGUgPSAiS2lsb3MgZGUgbWVybWEiLCAjIEFkZCBhIHRpdGxlCiAgICAgICB4ID0gIkZlY2hhIikKCmBgYAoKIyMjIyBHcsOhZmljbyBkZSBkaXNwZXJzacOzbgoKYGBge3J9CmJkbTMkRmVjaGEgPC0gYXMuRGF0ZShiZG0zJEZlY2hhLCBmb3JtYXQgPSAiJWQvJW0vJVkiKQpwbG90KGJkbTMkRmVjaGEsIGJkbTMkS2lsb3MsIG1haW4gPSAiS2lsb3MgZGUgbWVybWEiLAogICAgIHhsYWIgPSAiRmVjaGEiLCB5bGFiID0gIktpbG9zIiwKICAgICBwY2ggPSAxOSwgZnJhbWUgPSBGQUxTRSkKYGBgCgojIyBGT1JNIFBST0RVQ0NJw5NOCgojIyMjIMK/Q3XDoW50YXMgdmFyaWFibGVzIHkgcmVnaXN0cm9zIHRpZW5lIGxhIGJhc2UgZGUgZGF0b3M/CgpgYGB7cn0KbGlicmFyeShkcGx5cikKI2luc3RhbGwucGFja2FnZXMoInBzeWNoIikKbGlicmFyeShwc3ljaCkKZGVzY3JpYmVEYXRhKGJkcCwgaGVhZD0xLCB0YWlsPTEgKQpgYGAKCiMjIyMgQ2xhc2lmaWNhIGNhZGEgdmFyaWFibGUgZW4gY3VhbGl0YXRpdmEsIGN1YW50aXRhdGl2YSBkaXNjcmV0YSBvIGN1YW50aXRhdGl2YSBjb250aW51YQoKYGBge3J9CgpWYXJpYWJsZSA8LWMoIk5vLiIsICJDbGllbnRlIiwiSUQgRm9ybSIsIlByb2R1Y3RvIiwgIkZlY2hhIiwgIlBpZXphcyBQcm9nIiwgIlRpZW1wbyBNaW4iLCAiSG9yYSBGaW4iLCAiRXN0YWNpw7NuIEFycmFucXVlIiwgIkxhbWluYXMgcHJvY2VzYWRhcyIsICJJbmljaW8gU2VwIHVwIiwgIkZpbiBJbmljaW8gU2VwIHVwIiwgIkluaWNpbyBwcm9jZXNvIiwgIkZpbiBkZSBwcm9jZXNvIiwgIlRpZW1wbyBjYWxpZGFkIiwgIlRpZW1wbyBtYXRlcmlhbGVzIiwgIk1lcm1hcyBtw6FxdWluYXMiKQpUaXBvIDwtYygiQ3VhbnRpdGF0aXZhIChkaXNjcmV0YSkiLCAiQ3VhbGl0YXRpdmEgKG5vbWluYWwpIiwgIkN1YWxpdGF0aXZhIChub21pbmFsKSIsICJDdWFsaXRhdGl2YSAobm9taW5hbCkiLCAiQ3VhbnRpdGF0aXZhIChjb250aW51YSkiLCAiQ3VhbnRpdGF0aXZhIChkaXNjcmV0YSkiLCAiQ3VhbnRpdGF0aXZhIChkaXNjcmV0YSkiLCAiQ3VhbnRpdGF0aXZhIChjb250aW51YSkiLCAgIkN1YW50aXRhdGl2YSAoY29udGludWEpIiwgIkN1YW50aXRhdGl2YSAoZGlzY3JldGEpIiwgICJDdWFudGl0YXRpdmEgKGNvbnRpbnVhKSIsICAiQ3VhbnRpdGF0aXZhIChjb250aW51YSkiLCAgIkN1YW50aXRhdGl2YSAoY29udGludWEpIiwgICJDdWFudGl0YXRpdmEgKGNvbnRpbnVhKSIsICJDdWFudGl0YXRpdmEgKGRpc2NyZXRhKSIsICJDdWFudGl0YXRpdmEgKGRpc2NyZXRhKSIsICJDdWFudGl0YXRpdmEgKGRpc2NyZXRhKSIpCnRhYmxlPC1kYXRhLmZyYW1lKFZhcmlhYmxlLCBUaXBvKQprbml0cjo6a2FibGUodGFibGUpCgpgYGAKCiMjIyMgSWRlbnRpZmljYSBsYSBlc2NhbGEgZGUgbWVkaWNpw7NuIGRlIGNhZGEgdmFyaWFibGUKCmBgYHtyfQpWYXJpYWJsZSA8LWMoIk5vLiIsICJDbGllbnRlIiwiSUQgRm9ybSIsIlByb2R1Y3RvIiwgIkZlY2hhIiwgIlBpZXphcyBQcm9nIiwgIlRpZW1wbyBNaW4iLCAiSG9yYSBGaW4iLCAiRXN0YWNpw7NuIEFycmFucXVlIiwgIkxhbWluYXMgcHJvY2VzYWRhcyoiLCAiSW5pY2lvIFNlcCB1cCIsICJGaW4gSW5pY2lvIFNlcCB1cCIsICJJbmljaW8gcHJvY2VzbyIsICJGaW4gZGUgcHJvY2VzbyIsICJUaWVtcG8gY2FsaWRhZCIsICJUaWVtcG8gbWF0ZXJpYWxlcyIsICJNZXJtYXMgbcOhcXVpbmFzIikKCk1lZGljaW9uIDwtYygiUmF6w7NuIiwgIk5vbWluYWwiLCAiTm9taW5hbCIsICJOb21pbmFsIiwgIkludGVydmFsbyIsICJSYXrDs24iLCAiUmF6w7NuIiwgIkludGVydmFsbyIsIkludGVydmFsbyIsICJSYXrDs24iLCAiSW50ZXJ2YWxvIiwgIkludGVydmFsbyIsICJJbnRlcnZhbG8iLCAiSW50ZXJ2YWxvIiwgIlJhesOzbiIsICJSYXrDs24iLCAiUmF6w7NuIikKCnRhYmxlMjwtZGF0YS5mcmFtZShWYXJpYWJsZSwgTWVkaWNpb24pCmtuaXRyOjprYWJsZSh0YWJsZTIpCmBgYAoKIyMjIyBMaW1waWV6YSBkZSBkYXRvcwoKYGBge3J9CmJkcDEgPC0gYmRwCmJkcDE8LSBzdWJzZXQoYmRwMSwgc2VsZWN0ID0gLWMgKE5vLiwgSUQuRk9STSwgUFJPRFVDVE8sIEZFQ0hBLCBIUi4uRklOLCBFU1RBQ0lPTi5BUlJBTlFVRSwgSU5JQ0lPLlNFUC5VUCwgZmluLmRlLnNldC51cCwgSU5JQ0lPLmRlLlBST0NFU08sIEZJTi5kZS5QUk9DRVNPLCBUSUVNUE8uTUFURVJJQUxFUywgTUVSTUFTLk1hcXVpbmFzLikpCmBgYAoKQ29tbyBwcmltZXIgdMOpY25pY2Egc2UgZWxpbWluYXJvbiBsYXMgY29sdW1uYXMgcXVlIG5vIGFwb3J0YW4gaW5mb3JtYWNpw7NuIGRlIHZhbG9yIHBhcmEgZWwgYW7DoWxpc2lzIGRlIGxhIGJhc2UgZGUgZGF0b3MuIFNvbiA1IGxhcyB2YXJpYWJsZXMgcXVlIHNlIHRvbWFyw6FuIGVuIGN1ZW50YSBwYXJhIGVsIGFuw6FsaXNpcyBxdWUgc2UgcmVhbGl6YXLDoS4KCiMjIyMjIFNhYmVyIGN1YW50b3MgTkHCtFMgaGF5IGVuIGxhIGJhc2UgZGUgZGF0b3MgCgpgYGB7cn0Kc3VtKGlzLm5hKGJkcCkpCnN1bShpcy5uYShiZHAxKSkKYGBgClNlIGNvbnRhYmlsaXphbiB1biB0b3RhbCBkZSA1OTMgTkHCtFMgZW4gbGEgYmFzZSBkZSBkYXRvcyBwb3IgbG8gcXVlIHNlIGFwbGljYXLDoW4gbGFzIHTDqWNuaWNhcyBkZSBsaW1waWV6YSBkZSBFbGltaW5hciBsb3MgTkHCtFMgeSBjb21vIGVuIGxhIGJhc2UgZGUgZGF0b3MgaGF5IGRhdG9zIGZhbHRhbnRlcyBxdWUgUiBubyBub3MgbWFyY2EgY29tbyBOQcK0cywgbWFudWFsbWVudGUgZWxpbWluYXJlbW9zIGVzb3MgcmVuZ2xvbmVzIGNvbiBlbCBmaWx0cm8gZGUgcXVlIGxvcyB2YWxvcmVzIG1lbm9yZXMgYSAwIHNlcsOhbiBlbGltaW5hZG9zLCBkaWNoYSB0w6ljbmljYSBhcGxpY2FkYSBjb24gZWwgZmluIGRlIGFwcm92ZWNoYXIgbGEgYmFzZSBkZSBkYXRvcyBjb24gbG9zIGRhdG9zIHJlbGV2YW50ZXMuIAoKIyMjIyMgRWxpbWluYXIgbG9zIE5BwrRTCgpgYGB7cn0KYmRwMjwtIGJkcDEKYmRwMiA8LSBuYS5vbWl0KGJkcDIpCmBgYAoKIyMjIyMgRWxpbWluYXIgcmVuZ2xvbmVzCmBgYHtyfQpiZHAzIDwtIGJkcDIKYmRwMyA8LSBiZHAzW2JkcDMkVE1PLi5NSU4uID4gMCwgXQpgYGAKCiMjIyMgVGFibGFzIGRlIEZyZWN1ZW5jaWEKYGBge3J9CmJkcDQgPC0gYmRwMwpiZHA0IDwtIHRhYmxlKGJkcDQkQ0xJRU5URSkKa25pdHI6OmthYmxlKGJkcDQpCgpiZHA1IDwtIGJkcDMKYmRwNSA8LSB0YWJsZShiZHA1JFRJRU1QTy5DQUxJREFEKQprbml0cjo6a2FibGUoYmRwNSkKYGBgCgojIyMjIFRhYmxhcyBjcnV6YWRhcwoKYGBge3J9CgpjcnV6YWRhIDwtdGFibGUoYmRwMyRDTElFTlRFLGJkcDMkTGFtaW5hcy5wcm9jZXNhZGFzKQprbml0cjo6a2FibGUoY3J1emFkYSkKCmBgYAoKCiMjIyMgR3LDoWZpY2FzIGN1YWxpdGF0aXZhcyB5IGN1YW50aXRhdGl2YXMKCmBgYHtyfQpnZ3Bsb3QoYmRwMywgYWVzKHg9IExhbWluYXMucHJvY2VzYWRhcyAsIHk9IFRNTy4uTUlOLikpICsKICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIsIGZpbGw9InJlZCIpICsgc2NhbGVfZmlsbF9ncmV5KCkgKyAjIEFkZCBiYXJzIHRvIHRoZSBwbG90CiAgbGFicyh0aXRsZSA9ICJLaWxvcyBkZSBtZXJtYSIsICMgQWRkIGEgdGl0bGUKICAgICAgIHggPSAiRmVjaGEiKQpgYGAKYGBge3J9Cmhpc3QoYmRwMyRMYW1pbmFzLnByb2Nlc2FkYXMpCmBgYAoKCiMjIyMgR3LDoWZpY2FzIGRlIGRpc3BlcnNpw7NuCmBgYHtyfQpwbG90KGJkcDMkUElFWkFTLlBST0cuLCBiZHAzJFRNTy4uTUlOLiwgbWFpbiA9ICJGZWNoYSBkZSBpbmdyZXNvIGNvbiBzYWxhcmlvIGRpYXJpbyIsCiAgICAgeGxhYiA9ICJGZWNoYSBkZSBpbmdyZXNvIiwgeWxhYiA9ICJTYWxhcmlvIiwKICAgICBwY2ggPSAxOSwgZnJhbWUgPSBGQUxTRSkKCmBgYAoKIyMgQ29uY2x1c2nDs24geSBwcm9wdWVzdGFzCgpFbCBhbmFsaXphciBsYSBncsOhZmljYSBkZSBtZXJtYSBlbiBraWxvcyBub3MgcGVybWl0ZSB2ZXIgcXVlIG5vcm1hbG1lbnRlIGxhIGNhbnRpZGFkIGVzIGNvbnN0YW50ZSBkZW50cm8gZGUgdW4gY2llcnRvIHJhbmdvLCBhIGV4Y2VwY2nDs24gZGUgbGFzIGJhamFzIHByZXNlbnRhZGFzIGVuIFNlcHRpZW1icmUuIFVuYSBwcm9wdWVzdGEgcGFyYSBGT1JNIHBvZHLDrWEgc2VyIGVsIGFuYWxpemFyIHBvciBtZWRpbyBkZSBncsOhZmljb3MgcXVlIGxvZ3JlbiBjb25lY3RhciB1bmEgbWF5b3IgY2FudGlkYWQgZGUgdmFyaWFibGVzIHkgcG9kZXIgcHJlZGVjaXIgbGEgY2FudGlkYWQgZGUgbWVybWEgcGFyYSBkZXNhcnJvbGxhciBwcm95ZWN0b3MgZW4gZG9uZGUgc2UgcHVlZGEgdXRpbGl6YXIgbGEgbWlzbWEuIENvbW8gdW4gbGxhbWF0aXZvLCBlbCBwb2RlciBjdWFudGlmaWNhciBsYSBtZXJtYSBxdWUgcHVlZGUgc2VyIHJldXRpbGl6YWRhIG8gYXByb3ZlY2hhZGEgeSBsYSBxdWUgZGVmaW5pdGl2YW1lbnRlIG5vIHNlIHB1ZWRlIHV0aWxpemFyIHBhcmEgbmFkYS4KCkNvbW8gc2VndW5kYSBwcm9wdWVzdGEgeSBkZXNwdcOpcyBkZSByZWFsaXphciB1biBhbsOhbGlzaXMgYSBsYSBiYXNlIGRlIGRhdG9zIGRlIHByb2R1Y2Npw7NuLCBwdWRpbW9zIHZlciBxdWUgZWwgdGllbXBvIGRlIGNhbGlkYWQgZXMgcG9yIGxvIGdlbmVyYWwgMSwgbm8gb2JzdGFudGUsIGV4aXN0ZW4gNjMgY2Fzb3MgZW4gZWwgcXVlIGhhIGV4Y2VkaWRvIGVzdGUgbsO6bWVybywgZW4gdW4gcmFuZ28gZGUgMiBhIDIyLiBBc2VndXJhciBxdWUgZWwgdGllbXBvIG5vIGV4Y2VkZSB5YSBzZWEgMiwgbyBlbiBjYXNvIGRlIHNlciDDs3BpdG1vIHVuIHJhbmdvIGluZmVyaW9yLCBwYXJhIGFzZWd1cmFyIGxvcyB0aWVtcG9zIGRlIGNhbGlkYWQuCgpMYSBhY3RpdmlkYWQgbm9zIHBlcm1pdGnDsyBhbmFsaXphciBiYXNlcyBkZSBkYXRvcyBjb24gdW4gYWNlcmNhbWllbnRvIHJlYWwgYSBsYSBlbXByZXNhIEZPUk0sIGVuIGRvbmRlIHB1ZGltb3MgZGV0ZWN0YXIgw6FyZWFzIGRlIG9wb3J0dW5pZGFkIGFsIG1vbWVudG8gZGUgYW5hbGl6YXJsYXMsIGxpbXBpYXJsYXMgeSBkYXJsZXMgZWwgZm9ybWF0byBuZWNlc2FyaW8gcGFyYSBzdSBtYW5pcHVsYWNpw7NuIGVuIHByb2dyYW1hcyBjb21vIFIuIEVsIMOzcmRlbiB5IHJlbGV2YW5jaWEgZGUgbGFzIHZhcmlhYmxlcyBhbCBtb21lbnRvIGRlIHRhYnVsYXIgeSB2aXN1YWxpemFyIGRhdG9zIGVzIGVzZW5jaWFsIHkgc2UgZGV0ZWN0w7MgbGEgaW1wb3J0YW5jaWEgZGUgY29ub2NlciBsb3MgZm9ybWF0b3MgZGUgcHJvZ3JhbWFjacOzbiBhbCBtb21lbnRvIGRlIG1hbmVqYXIgdW5hIGJhc2UgZGUgZGF0b3Mgc29icmUgdG9kbyBkZXNkZSBleGNlbDsgZG9uZGUgcGVxdWXDsW9zIHkgZ3JhbmRlcyBlcnJvcmVzIHB1ZWRlbiBhbGVudGFyIHkgcGF1c2FyIGVsIGFuw6FsaXNpcyBkZSBsYSBpbmZvcm1hY2nDs24uCgpzZSB0cmFiYWrDsyBjb24gdHJlcyBiYXNlcyBkZSBkYXRvcyB5IHNlIHJlYWxpesOzIGVsIGFuw6FsaXNpcyBlc3RhZMOtc3RpY28gZGVzY3JpcHRpdm8gcGFyYSBwb2RlciBqdW50YXIgbG9zIGRhdG9zIG5lY2VzYXJpb3MgcGFyYSBjb25vY2VyIHkgdmVyIGRlIHVuYSBtYW5lcmEgbcOhcyB2aXN1YWwgbGEgc2l0dWFjacOzbiBkZSBGT1JNLiAKCgoKCgoKCg==