├── Module 1 ├── assets │ ├── issue_one.png │ ├── issue_two.png │ ├── issue_three.png │ └── visualize_git.png ├── Module 1.3 Assignment.md ├── README.md ├── Module 1.4 Assignment.md ├── Module 1.1 Assignment.md └── Module 1.2 Assignment.md ├── Module 2 ├── assets │ ├── clone_one.png │ └── clone-code.gif ├── Module 2.4 Assignment.md ├── Module 2.2 Assignment.md ├── Module 2.3 Assignment.md ├── README.md └── Module 2.1 Assignment.md ├── Module 0 ├── README.md ├── Module 0.2 Assignment.md └── Module 0.1 Assignment.md ├── LICENSE └── README.md /Module 1/assets/issue_one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ISPC-TST-EM-2023/fundamentos-de-git-y-github/HEAD/Module 1/assets/issue_one.png -------------------------------------------------------------------------------- /Module 1/assets/issue_two.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ISPC-TST-EM-2023/fundamentos-de-git-y-github/HEAD/Module 1/assets/issue_two.png -------------------------------------------------------------------------------- /Module 2/assets/clone_one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ISPC-TST-EM-2023/fundamentos-de-git-y-github/HEAD/Module 2/assets/clone_one.png -------------------------------------------------------------------------------- /Module 1/assets/issue_three.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ISPC-TST-EM-2023/fundamentos-de-git-y-github/HEAD/Module 1/assets/issue_three.png -------------------------------------------------------------------------------- /Module 2/assets/clone-code.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ISPC-TST-EM-2023/fundamentos-de-git-y-github/HEAD/Module 2/assets/clone-code.gif -------------------------------------------------------------------------------- /Module 1/assets/visualize_git.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ISPC-TST-EM-2023/fundamentos-de-git-y-github/HEAD/Module 1/assets/visualize_git.png -------------------------------------------------------------------------------- /Module 0/README.md: -------------------------------------------------------------------------------- 1 | # Módulo 0 2 | 3 | ¡Bienvenidos al Módulo 0! 4 | 5 | En este módulo, veremos lo necesario para completar la Capacitación. 6 | 7 | ## Lecciones 8 | Todos los archivos de asignación se pueden encontrar en la parte superior de esta página. 9 | 10 | - 📺 [Módulo 0.0 Vídeo](https://www.youtube.com/watch?v=w3jLJU7DT5E) (3':32'') 11 | - 📓 Completar la Asignacion del Módulo 0.1 12 | - 📓 Completar la Asignación del Módulo 0.2 13 | -------------------------------------------------------------------------------- /Module 0/Module 0.2 Assignment.md: -------------------------------------------------------------------------------- 1 | # Tarea 2: Caja de herramientas del estudiante 2 | Para aprovechar al máximo los beneficios para estudiantes de GitHub Education, necesitará la Caja de herramientas para estudiantes (si aún no la tiene). 3 | 4 | Dirígete a la [Caja de herramientas del estudiante](https://education.github.com/pack/join) y completa la solicitud. Deberá proporcionar una prueba fechada de que es un miembro de la facultad de su institución, así que téngala a mano. 5 | 6 | Algunas aplicaciones de Estudent Toolbox requieren una revisión manual y pueden tardar más en recibir una decisión y una respuesta. Una vez que haya presentado su solicitud, su página de confirmación indicará aproximadamente cuánto tiempo puede tomar la revisión de su solicitud. 7 | 8 | ## Envío 9 | No hay presentación para esta tarea. 10 | -------------------------------------------------------------------------------- /Module 1/Module 1.3 Assignment.md: -------------------------------------------------------------------------------- 1 | # Módulo 1.3 Tarea 2 | 3 | Ahora que ha aprendido más sobre Git, en la línea de comandos me gustaría que hiciera lo siguiente: 4 | 5 | - [ ] Cree un archivo llamado `teacher_training.txt` en el directorio que creó en el Módulo 1.2 6 | - [ ] Escribe "¡Hola Educación GitHub!" en `teacher_training.txt` y **commit** tus cambios 7 | - [ ] Ahora escribe "¡Hola GitHub Education!" en `teacher_training.txt` 8 | - [ ] Muestra las diferencias entre tu _Directorio de trabajo_ y _Área de ensayo_ 9 | - [ ] Agregue `teacher_training.txt` a su _Área de ensayo_ 10 | - [ ] Muestra las diferencias entre tu _Staging Area_ y tu _Repository_ 11 | - [ ] Enviar teacher_training.txt a su repositorio 12 | 13 | Una vez que haya completado estos pasos, tome una captura de pantalla de su línea de comando, con los pasos anteriores, 14 | y cargue su captura de pantalla en una nueva edición titulada Módulo 1.3 Asignación. 15 | -------------------------------------------------------------------------------- /Module 0/Module 0.1 Assignment.md: -------------------------------------------------------------------------------- 1 | # Tarea 0.1: Primeros pasos 2 | 3 | 1. Regístrese para obtener una cuenta en [github.com](https://github.com/). 4 | 2. [Descargar](https://git-scm.com/downloads), instalar y [configurar](https://git-scm.com/book/en/v2/Getting-Started-First-Time- Configuración de Git) git. Los usuarios de Windows deben instalar [Git para Windows] (https://gitforwindows.org/). 5 | 3. Asegúrese de configurar Git con su nombre y dirección de correo electrónico usando los siguientes comandos en la línea de comandos con su nombre y dirección de correo electrónico: 6 | ``` 7 | $ git config --global user.name "Nombre Apellido" 8 | $ git config --usuario global.email "email@example.com" 9 | ``` 10 | Git usará esta información cuando trabajes en un proyecto. 11 | 12 | 4. Si bien en esta capacitcion se utiliara como editor de texto [vscode](https://code.visualstudio.com/) es un IDE que utilizara ampliamente en el desarrollo de proyectos. Configure VScode como su editor: 13 | ``` 14 | $ git config --global core.editor "code --wait" 15 | ``` 16 | 17 | ## Envío 18 | No hay presentación para esta tarea. 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Licencia MIT 2 | 3 | Copyright (c) 2019 Asesores del campus 4 | 5 | Por la presente se concede permiso, sin cargo, a cualquier persona que obtenga una copia 6 | de este software y los archivos de documentación asociados (el "Software"), para tratar 7 | en el Software sin restricciones, incluidos, entre otros, los derechos 8 | usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y/o vender 9 | copias del Software, y para permitir a las personas a quienes se les 10 | provisto para hacerlo, sujeto a las siguientes condiciones: 11 | 12 | El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todos 13 | copias o partes sustanciales del Software. 14 | 15 | EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O 16 | IMPLÍCITO, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, 17 | IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO VIOLACIÓN. EN NINGÚN CASO LA 18 | LOS AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE CUALQUIER RECLAMACIÓN, DAÑOS U OTROS 19 | RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE OTRA FORMA, DERIVADA DE, 20 | FUERA DE O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTROS TRATOS EN EL 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Module 2/Module 2.4 Assignment.md: -------------------------------------------------------------------------------- 1 | # Módulo 2.4 Tarea 2 | 3 | En esta lección, aprendió acerca de los conflictos de combinación. Para completar esta tarea, creará un archivo `README.md` que dice "Hello World". Copie y pegue los siguientes comandos en su línea de comando, luego presione Entrar: 4 | 5 | ``` 6 | mkdir MergeConflict 7 | cd MergeConflict/ 8 | git init 9 | touch README.md 10 | echo "echo Hello" > README.md 11 | git add . 12 | git commit -m "first commit on master" 13 | git checkout -b new-branch 14 | echo "Hello World" > README.md 15 | git add . 16 | git commit -m "first commit on new-branch" 17 | git checkout master 18 | echo "Hola" > README.md 19 | git add . 20 | git commit -m "second commit on master" 21 | git merge new-branch 22 | ``` 23 | 24 | Este "script" creará un conflicto de combinación. Resuelva el conflicto de combinación para que el texto en `README.md` sea `"Hello World"`. 25 | 26 | ## Envío 27 | Para enviar esta tarea, cree un problema titulado "Asignación del módulo 2.4" en este repositorio. En el problema, proporcione una captura de pantalla de su línea de comando que muestre los comandos que usó para resolver el conflicto de combinación en esta tarea, luego continúe con el siguiente módulo. 28 | -------------------------------------------------------------------------------- /Module 2/Module 2.2 Assignment.md: -------------------------------------------------------------------------------- 1 | # Módulo 2.2 Tarea 2 | 3 | En esta lección, aprendió a realizar cambios en los archivos, crear ramas y obtener y extraer actualizaciones de GitHub. Para completar esta tarea, cambiará este archivo en una nueva rama en GitHub y luego extraerá los cambios a su repositorio local siguiendo las instrucciones a continuación: 4 | 5 | 1. Crea una nueva rama llamada `edit-module-assignment` en GitHub 6 | 2. En la rama 'editar-módulo-asignación', edite este archivo 'Módulo 2.2 Asignación.md' haciendo clic en el icono de lápiz o 'Editar' 7 | 3. En el editor de 'Asignación del Módulo 2.2', agregue su nombre en la primera línea sobre el título, luego desplácese hacia la parte inferior de la página y haga clic en "Confirmar cambios" 8 | 4. En el repositorio `Campus-Advisor-Training` que clonaste en tu computadora en la última tarea, busca y fusiona los cambios que has hecho en este archivo en tu rama `maestra` usando la línea de comando 9 | 10 | 11 | ## Envío 12 | Para enviar esta tarea, cree un problema titulado "Asignación del módulo 2.2" en este repositorio. En el problema, proporcione una captura de pantalla de su línea de comando que muestre los comandos que usó para completar esta tarea, luego continúe con la siguiente sección de este módulo. 13 | -------------------------------------------------------------------------------- /Module 2/Module 2.3 Assignment.md: -------------------------------------------------------------------------------- 1 | # Módulo 2.3 Tarea 2 | 3 | En esta lección, aprendiste más sobre cómo se usan las ramas en el flujo de trabajo de GitHub. Para completar esta tarea, usará la línea de comando para crear una nueva rama y cambiar este archivo en su repositorio local siguiendo las instrucciones a continuación: 4 | 5 | 1. Cree una nueva rama llamada `asignación-editar` en su repositorio local usando la línea de comando 6 | 2. Edite este archivo `Module 2.3 Assignment.md` usando un editor de texto para agregar su nombre en la primera línea sobre el título, luego guarde sus cambios 7 | 3. Transfiera sus cambios a GitHub desde la línea de comando (¿Necesita ayuda para ingresar a GitHub? [Vea el módulo 2.1](https://youtu.be/R2bLo-KiYlU)) 8 | 4. Cree una solicitud de extracción en GitHub después de haber enviado sus cambios para comparar las dos ramas, luego fusione estos cambios en la rama "maestra". 9 | 5. Elimine la rama `assignment-edit` después de haber fusionado con éxito su rama 10 | 11 | ## Envío 12 | Para enviar esta tarea, cree un problema titulado "Asignación del Módulo 2.3" en este repositorio. En el problema, proporcione una captura de pantalla de su línea de comando que muestre los comandos que usó para completar esta tarea, luego continúe con la siguiente sección de este módulo. 13 | -------------------------------------------------------------------------------- /Module 1/README.md: -------------------------------------------------------------------------------- 1 | # Bienvenido al Módulo 1: Conceptos básicos de Git 2 | 3 | En este módulo se le presentará Git. Este módulo cubrirá: 4 | 5 | * ¿Qué es el control de versiones? 6 | * ¿Qué es el control de versiones distribuido? 7 | * ¿Qué es un repositorio Git? 8 | * Comandos básicos de Bash y Git 9 | * El flujo de trabajo de Git y el modelo de tres estados 10 | * Cómo ser selectivo con las confirmaciones de Git 11 | * ¿Cómo guarda Git las confirmaciones? 12 | * Cómo crear ramas y fusionarlas 13 | 14 | ## Lecciones 15 | 16 | **Todos los archivos de tareas se pueden encontrar en la parte superior de la página.** 17 | 18 | ### Módulo 1.1: Conoce a Git 19 | 20 | [:tv: Módulo 1.1 Vídeo](https://youtu.be/uWsXEmaM3PA) (3':56'') 21 | 22 | :notebook: Completar la Tarea del Módulo 1.1 23 | 24 | ### Módulo 1.2: El modelo de tres estados 25 | 26 | [:tv: Módulo 1.2 Vídeo](https://youtu.be/yLLZdOIuCfg) (8':19'') 27 | 28 | :notebook: Completar la Tarea del Módulo 1.2 29 | 30 | ### Módulo 1.3: Ser selectivo con Git 31 | 32 | [:tv: Módulo 1.3 Vídeo](https://youtu.be/3zmolo8YRO8) (9':34'') 33 | 34 | :notebook: Completar la Tarea del Módulo 1.3 35 | 36 | ### Módulo 1.4: Ramas y fusiones 37 | 38 | [:tv: Módulo 1.4 Video](https://youtu.be/2YDoQZ9nZ4g) (9':35'') 39 | 40 | :notebook: Completar la Tarea del Módulo 1.4 41 | -------------------------------------------------------------------------------- /Module 2/README.md: -------------------------------------------------------------------------------- 1 | # Bienvenido al Módulo 2: Conceptos básicos de GitHub 2 | 3 | En este módulo se le presentará GitHub. Este módulo cubrirá: 4 | 5 | * Comunicarse con un control de versiones remoto 6 | * Comandos Git para trabajar con un control de versiones remoto 7 | * Obtener y extraer de GitHub 8 | * Comandos de Git para solicitar actualizaciones de GitHub 9 | * El flujo de trabajo de GitHub 10 | * Resolución de conflictos de fusión 11 | 12 | ## Lecciones 13 | 14 | **Todos los archivos de tareas se pueden encontrar en la parte superior de la página.** 15 | 16 | ### Módulo 2.1: Subir a un control remoto (push) 17 | 18 | [:tv: Módulo 2.1 Vídeo](https://youtu.be/R2bLo-KiYlU) (5':07'') 19 | 20 | :notebook: Completar la Tarea del Módulo 2.1 21 | 22 | ### Módulo 2.2: Obtener y extraer de un control remoto (fetch y pull) 23 | 24 | [:tv: Vídeo Módulo 2.2](https://youtu.be/gNaCC_8B1k0) (5':49'') 25 | 26 | :notebook: Completar la Tarea del Módulo 2.2 27 | 28 | ### Módulo 2.3: Flujo de trabajo de GitHub 29 | 30 | [:tv: Módulo 2.3 Video](https://youtu.be/SoaAoATcUxU) (5':58'') 31 | 32 | :notebook: Completar la Tarea del Módulo 2.3 33 | 34 | ### Módulo 2.4: Conflictos de fusión 35 | 36 | [:tv: Vídeo Módulo 2.4](https://youtu.be/c1210JclnPw) (3':27'') 37 | 38 | :notebook: Completar la Tarea del Módulo 2.4 39 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Bienvenido a Fundamentos de Git y Github 2 | Curso introductorio para alumnos del ISPC, basado en el entrenamiento para profesores del campus github education. 3 | 4 | 5 | En esta capacitación, se le presentará una combinación de lecciones en video y tareas. Todos los videos y tareas se pueden encontrar en este repositorio en sus respectivos módulos. 6 | 7 | En cada módulo, encontrará lecciones en video marcadas con este ícono 📺 y las tareas estarán marcadas con este ícono 📓. 8 | 9 | ## Empezar 10 | Su viaje comienza en el Módulo 0, donde configurará todo lo que necesita para completar la capacitación. 11 | 12 | ## Trabaja a tu propio ritmo 13 | No hay calificación para esta capacitación, así que siéntase libre de explorar a su propio ritmo. Esperamos que la capacitación lo ayude a comenzar con GitHub y GitHub Education. 14 | 15 | ## Este es tu entrenamiento 16 | 17 | Es beneficioso que aproveche los recursos que se le presentan, pero si encuentra casos en los que se pueden mejorar las cosas, cree un problema en el repositorio original [aquí](https://github.com/ISPC-TST-ELECTRONICA-MICROCONTROLADA/FUNDAMENTOS-DE-GIT-Y-GITHUB). Si no está familiarizado con los problemas de GitHub, no se preocupe, los aprenderá pronto. 18 | 19 | ## Preguntas 20 | Si tiene alguna pregunta sobre la configuración o sobre cualquiera de los módulos de aprendizaje, diríjase a la Comunidad educativa de GitHub. 21 | -------------------------------------------------------------------------------- /Module 1/Module 1.4 Assignment.md: -------------------------------------------------------------------------------- 1 | # Módulo 1.4 Tarea 2 | 3 | Se le presentó la herramienta [Visualizing Git](http://git-school.github.io/visualizing-git/) en esta lección. Me gustaría que repliques esta visualización usando Visulaizing Git: 4 | 5 | Una visualización de git que muestra puntos para representar confirmaciones. De izquierda a derecha, hay una confirmación etiquetada como "primera confirmación", luego otra confirmación. A partir de ahí, las confirmaciones se bifurcan en dos direcciones. Hay una línea que continúa extendiéndose hacia la derecha con 1 compromiso que tiene una etiqueta de rama que dice "nueva característica". Hay otra línea diagonal que se extiende desde la bifurcación hacia arriba y hacia la derecha. La línea diagonal tiene 1 confirmación resaltada en verde que tiene una etiqueta de rama, "maestro", así como una etiqueta que dice "HEAD". 6 | 7 | ![image](https://user-images.githubusercontent.com/84986194/219961105-c06263d9-29a1-4e76-88a2-b2b58dc4ab99.png) 8 | 9 | Tenga en cuenta que hay más de una forma de replicar esta visualización. 10 | 11 | - [ ] Ir a [Visualización de Git](http://git-school.github.io/visualizing-git/) 12 | - [ ] Replique la imagen de arriba determinando la secuencia correcta de comandos de git 13 | - [ ] Tome una captura de pantalla de su trabajo, incluida la línea de comando, en el visualizador 14 | - [ ] Cargue su captura de pantalla en una nueva edición titulada Asignación del Módulo 1.4 15 | -------------------------------------------------------------------------------- /Module 1/Module 1.1 Assignment.md: -------------------------------------------------------------------------------- 1 | # Módulo 1.1 Tarea 2 | 3 | Para la mayoría de sus tareas, creará problemas (issues) en GitHub. 4 | 5 | 6 | * Para crear un problema, irá a la pestaña marcada como "issues" (**aquí hay una captura de pantalla de ejemplo del repositorio original; creará sus problemas en su propio repositorio**): 7 | 8 | ![](https://github.com/github-campus-advisors/Campus-Advisor-Training/blob/master/Module%201/assets/issue_one.png)

9 | 10 | 11 | * Una vez que haga clic en esa pestaña, verá todos los problemas actuales en este repositorio. En este punto, no se han creado problemas. Vamos a crear un nuevo problema haciendo clic en `New issue` 12 | 13 | ![](https://github.com/github-campus-advisors/Campus-Advisor-Training/blob/master/Module%201/assets/issue_two.png)

14 | 15 | * Una vez que haya creado un nuevo problema, aparecera la siguiente pantalla. Aqui usted proporcionara: 16 | 1. Un titulo para su problema (Cada titulo debe ser el nombre de la tarea, por lo que en este caso es "Modulo 1.1 Tarea") 17 | 2. Un cuerpo para su problema para escribir una respuesta o cargar una captura de pantalla 18 | 3. Finalmente presionara el boton de envio 19 | 20 | ![](https://github.com/github-campus-advisors/Campus-Advisor-Training/blob/master/Module%201/assets/issue_three.png) 21 | 22 | Para la tarea del Modulo 1.1, copie la pregunta a continuacion y peguela en el cuerpo del problema, luego responda: 23 | `Teniendo en cuenta lo que has aprendido sobre Git, ¿por qué querrías usar Git en tus proyectos? 24 | 25 | -------------------------------------------------------------------------------- /Module 1/Module 1.2 Assignment.md: -------------------------------------------------------------------------------- 1 | Para la Tarea del Módulo 1.2, abrirá su línea de comando y completará lo siguiente: 2 | 3 | - [ ] Crea un directorio usando el comando `mkdir` 4 | - [ ] En el directorio que creaste, inicializa Git usando `git init` 5 | - [ ] Cree un archivo README.md en su directorio usando el comando `touch` 6 | - [ ] Asegúrese de que README.md esté en su _Directorio de trabajo_ comprobando su estado con `git status` 7 | - [ ] Mueva README.md del _Directorio de trabajo_ al _Área de preparación_ usando `git add` 8 | - [ ] Asegúrese de que README.md esté en su _Área de ensayo_ comprobando su estado con `git status` 9 | - [ ] Comprometer README.md a su repositorio usando `git commit` 10 | - [ ] Asegúrese de que su _Directorio de trabajo_ y _Área de ensayo_ estén limpios con `git status` 11 | - [ ] Asegúrate de que tu confirmación haya sido registrada en tu repositorio usando `git log` 12 | 13 | Una vez que haya completado estos pasos, tome una captura de pantalla de su línea de comando, con los pasos anteriores, y cargue su captura de pantalla en un nuevo "Problema" titulado "Asignación del módulo 1.2". He agregado la captura de pantalla de la Asignación del Módulo 1.1 como referencia. 14 | 15 | ![image](https://user-images.githubusercontent.com/84986194/219960580-f0ae1bce-b987-4ce0-9bf3-11881ac809ed.png) 16 | 17 | 18 | En el cuerpo del problema, puede arrastrar y soltar su captura de pantalla o buscarla en su dispositivo. Una vez que haya agregado la captura de pantalla, puede enviar el problema y pasar a la siguiente lección. 19 | -------------------------------------------------------------------------------- /Module 2/Module 2.1 Assignment.md: -------------------------------------------------------------------------------- 1 | # Módulo 2.1 Tarea 2 | 3 | En esta lección, aprendió cómo crear un repositorio remoto desde cero. Pero, ¿qué sucede si desea crear una versión local de un repositorio remoto que ya existe? Ahora, si ya existe un repositorio y ya tiene el código que desea, puede copiarlo en su máquina local usando el comando `git clone` seguido de la URL del repositorio. 4 | 5 | En esta tarea, aprenderá a clonar un repositorio en GitHub en su máquina local, lo que le permitirá administrar y editar archivos localmente. Para completar esta tarea, siga las instrucciones a continuación: 6 | 7 | 1. Navegue a la página principal de este repositorio en GitHub. Haga clic en el botón verde que dice "Código" y luego copie la URL haciendo clic en el icono gris del portapapeles. (**aquí hay una captura de pantalla de ejemplo del repositorio original; clonarás tu propio repositorio**) 8 | 9 | ![GIF que muestra cómo copiar una URL remota](https://user-images.githubusercontent.com/2359538/107465091-36aaec80-6b27-11eb-8c04-fcc055dbaa0d.png) 10 | 11 | 2. En la línea de comando, escriba `git clone` junto con la URL que copió anteriormente, luego presione Entrar. 12 | ``` 13 | $ clon de git https://github.com/YOUR-REPOSITORY.git 14 | ``` 15 | 16 | 3. Después de que el repositorio se haya clonado con éxito en su máquina, escriba `ls` en su terminal para ver el repositorio recién clonado en el directorio de su máquina. 17 | 18 | ## Envío 19 | Para enviar esta tarea, cree un problema titulado "Asignación del módulo 2.1" en este repositorio. En el problema, proporcione una captura de pantalla de su línea de comando que muestre los comandos que usó para completar esta tarea, luego continúe con la siguiente sección de este módulo. 20 | --------------------------------------------------------------------------------