Spelling suggestions: "subject:"8oftware computacional.apesar."" "subject:"8oftware computacionales.""
41 |
Horizontal profiling: A sampling technique to identify performance regressionsSandoval Alcocer, Juan January 2016 (has links)
Doctor en Ciencias, Mención Computación / Los cambios continuos en el código fuente de un programa pueden inadvertidamente introducir una regresión de rendimiento en tiempo de ejecución. Dichas regresiones se refieren a situaciones donde el rendimiento de un programa se degrada en comparación de versiones anteriores del mismo, aunque la nueva versión funcione correctamente. Ejecutar puntos de referencia en cada versión de un programa es una técnica tradicional utilizada para identificar regresiones en etapas tempranas. A pesar de ser efectiva, esta técnica exhaustiva es difícil de llevar a cabo en la práctica, principalmente por la alta sobrecarga que esta actividad demanda.
En esta tesis, realizamos un estudio empírico sobre una variedad de programas, con el fin de evaluar cómo el rendimiento de un programa evoluciona en el tiempo, a medida que es modificado. Guiados por este estudio, proponemos Horizontal Profiling, una técnica de muestreo para inferir si una nueva versión de un programa introduce una variación de rendimiento, usando información de la ejecución de versiones anteriores. El objetivo de Horizontal Profiling es reducir la sobrecarga que requiere monitorear el rendimiento de cada versión, ejecutando los puntos de referencia solo en las versiones que contengan cambios costosos de código fuente.
Presentamos una evaluación en la cual aplicamos Horizontal Profiling para identificar regresiones de rendimiento en un número de programas escritos en en el lenguaje de programación Pharo. En base a las aplicaciones que analizamos, encontramos que Horizontal Profiling es capaz de detectar más del 80% de las regresiones de rendimiento, ejecutando los puntos de referencia en menos del 20% de las versiones. Adicionalmente, describimos los patrones identificados durante nuestro estudio empírico, y detallamos cómo abordamos los numerosos desafíos que enfrentamos para completar nuestros experimentos. / Este trabajo ha sido parcialmente financiado por CONICYT a través de la beca CONICYT-PCHA/Doctorado Nacional para extranjeros/2013-63130199, OBJECT PROFILE y LAM RESEARCH
|
42 |
Plataforma de compra de pasajes aéreos para una organización con sistema de trabajo en turnosPilleux Gallardo, Mauricio Eduardo January 2016 (has links)
Ingeniero Civil en Computación / Ingeniero Civil Industrial / El presente trabajo de memoria resuelve la problemática de una organización que debe comprar los pasajes aéreos con una debida anticipación para efectuar el transporte de sus 150 trabajadores que laboran en sistema de trabajo en turnos en el norte de Chile.
El problema principal que posee la organización en la compra de pasajes aéreos es que actualmente solo es capaz de lograr la compra con 15 a 20 días de anticipación, resultando en pérdidas por concepto de acceso a tarifas más económicas de pasajes que son valorizadas entre CLP $13 millones a CLP $23 millones mensuales.
Al analizar las razones por las que la organización no puede aumentar la anticipación en la compra de pasajes aéreos se detectó que existen múltiples tareas en el proceso de definición y programación de los viajes que requieren de manipulación de información y se realizan tareas duplicadas o triplicadas por múltiples actores que redundan en ineficiencias y errores.
Para solucionar el problema principal se planificó, desarrolló e implementó un software de apoyo y mejoramiento de la gestión operacional del proceso de compra de pasajes aéreos de la organización. Este software logró lo siguiente:
- Simplificar y estandarizar el llenado colaborativo de la información requerida, consolidando en una sola plataforma las etapas de recopilación de información.
- Aumentar la anticipación con la que se pueden comprar los pasajes aéreos.
- Disminuir la duplicidad de trabajo de los actores involucrados en el proceso.
- Facilita la toma de decisiones de todos los usuarios responsables del proceso.
La plataforma se desarrolló utilizando una metodología que integró a Seis Sigma como metodología para especificar el problema de negocio y al Rational Unified Process (RUP) para el desarrollo de software.
La plataforma se probó en modalidad de marcha blanca en un departamento de la organización, logrando aumentar la anticipación de compra de pasajes aéreos desde 25 a 28 días.
La etapa más compleja del proyecto fue la etapa de implementación del software dentro de la organización. Es en este aspecto que se apreció que la metodología podría mejorarse al considerar la implementación del software como un proyecto en sí y no como una "etapa" secuencial, desarrollándola como un proyecto en paralelo que comienza simultáneamente con el comienzo de la definición del problema.
|
43 |
Fracture modelling directly from computer-aided design (CAD) by the extended isogeometric finite element method (X-IGA FEM) with trimmed nurbsVidela Marió, Javier Andrés January 2017 (has links)
Ingeniero Civil Mecánico / Tanto los software de Diseño Asistido por Computadora (CAD) como las herramientas de análisis por medio del Método de Elementos Finitos (FEM) han tenido un enorme impacto en la actividad ingenieril en las últimas décadas. Aun así, tienen la desventaja de que las geometrías CAD no son directamente compatibles con las geometrías utilizas en FEM, lo cual resulta en la necesidad de re-mallar la geometría varias veces durante un ciclo de soluciones FEM. Para solucionar esto, IGA ha sido propuesto como una metodología capaz de generar un vínculo directo entre el diseño mediante CAD y el análisis FEM. La principal idea dentro de IGA es sustituir las funciones de forma utilizadas en FEM por las funciones de base que utiliza el software CAD, conocidas como NURBS.
Por otro lado, los problemas de mecánica de fractura presentan dificultades extras para los métodos numéricos debido a las irregularidades que presenta la geometría de la grieta y el campo de esfuerzos singular que se origina alrededor de la punta de la grieta. Para solucionar esto, una nueva generación de métodos numéricos ha sido desarrollada, la cual incluye el renombrado XFEM.
La misma idea del XFEM ha sido formulada dentro del contexto de IGA, conocido como Análisis Isogeométrico Extendido (XIGA) y ha sido aplicado exitosamente en grietas rectas y curvas en problemas de elasticidad 2-D. Sin embargo, los trabajos publicados en este tema se han limitado a problemas simples.
El objetivo de este trabajo es aplicar el XIGA en problemas de mecánica de fractura con grietas en geometrías complejas dadas por curvas CAD. El trabajo consiste en implementar la metodología de enriquecimiento del XFEM dentro de un código IGA para solucionar problemas de mecánica de fractura 2D.
La primera simulación consiste en el problema de una placa infinita con una grieta recta. Esta es resuelta utilizando enriquecimiento Heaviside y Heaviside con punta de grieta. La segunda simulación consiste en emplear NURBS cuadráticos y cúbicos para resolver el problema de un agujero circular con una grieta. En ambas simulaciones se calculan las normas de error $L^{2}$, $H^{1}$ y energética, y el factor de intensidad de esfuerzos (SIF) $K_{I}$ para evaluar los resultados.
Ambos problemas exhiben convergencia sub-óptima al momento de refinar la malla y el $K_{I}$ está en concordancia con la solución analítica.
----
Both the CAD software and FEM software have a huge impact on engineering nowadays. Even though both are powerful tools for design and analysis, the main drawback is that CAD geometries and Finite Element models do not completely match, which results in the necessity to re-parametrize the geometry many times during the solution cycle in FEM. Isogeometric Analysis (IGA) was proposed to fulfill this gap and create the direct link between the CAD design and FEM analysis. The main idea of IGA is to substitute the shape functions used in FEM by the shape functions used in the CAD software.
Nevertheless, fracture mechanics problems present difficulty for any numerical method due to the irregularity in the crack domain and the singularity of the stress field in the vicinity of the crack tip. To overcome this difficulty, a new generation of numerical methods has been developed, which includes the so-called Extended Finite Element Method (XFEM).
The same idea was implemented within the IGA (XIGA) and applied successfully for straight and curved cracks in two-dimensional elasticity. However, the published work is limited to simple crack configurations.
The objective of this work is to investigate the applicability and efficiency of the XIGA for cracks of complex geometries given by CAD curves. The work consists in implementing the enrichment method of the XFEM into the in-house IGA code and in verifying the approach on a number of benchmark problems.
Heaviside and Heaviside $+$ crack tip enrichment has been implemented for a benchmark problem of an edge crack and the results are shown to be in excellent agreement with the analytic solution. The comparison of the results is done in $L^{2}$, $H^{1}$ and Energy norm of the error, which exhibit the sub-optimal convergence rates, when the mesh size tends to zero.
Quadratic and Cubic NURBS were employed to solve the benchmark problem of an edge crack in a circular hole and the results are shown to be in agreement with the analytic solution, despite the complicity of the geometry.
The stress intensity factor (SIF) $K_{I}$ is computed and in both benchmark problems it is in agreement with their theoretical value. / Este trabajo ha sido parcialmente financiado por el proyecto FONDECYT 11130259
|
44 |
A domain specific language to support the definition of transformation rules for software process tailoringSilvestre Quiroga, Luis Gregorio January 2018 (has links)
Doctor en Ciencias, Mención Computación / La adaptación de procesos de software es la actividad de adaptar el proceso de software de una organización a las necesidades de proyectos particulares. La ingeniería basada en modelos (MDE) se ha aplicado con este fin, utilizando modelos para formalizar el proceso de software y el contexto del proyecto, y transformaciones del modelo para adaptar estos procesos.
A pesar de que la adaptación basada en MDE ha demostrado ser técnicamente factible, su uso en la práctica requiere conocimiento sobre cómo adaptar procesos y construir modelos y transformaciones.
Existen algunas propuestas para la generación automática de transformaciones como una forma de reducir la complejidad de adaptar los procesos de software. Estas propuestas generalmente generan transformación solo parcialmente, y luego deben completarse manualmente. Estos enfoques no son adecuados para la adaptación de procesos de software porque no superan por completo las dificultades técnicas de adopción.
Para enfrentar estos desafíos esta tesis propone un enfoque automático de generación de transformaciones, que aborda tanto la formalidad requerida por MDE, como la usabilidad que necesitan los ingenieros de proceso a cargo de las adaptaciones. Para ello, especificamos las reglas de adaptación utilizando un lenguaje específico de dominio (DSL). Además, definimos una transformación de orden superior (HOT) que toma las reglas de adaptación especificadas como entrada y genera automáticamente la transformación de adaptación de procesos requerida. Tanto el DSL como el HOT son genéricos y, por lo tanto, pueden reutilizarse en cualquier organización. Con el fin de mejorar la usabilidad, desarrollamos un conjunto de herramientas integradas (ATAGeTT) que incorpora ambas contribuciones.
ATAGETT se aplicó en un estudio de caso exploratorio en dos pequeñas empresas de software, para evaluar su capacidad y corrección de adaptar el proceso de estas compañías. Los resultados obtenidos muestran queusuarios pudieron especificar todas las reglas de adaptación requeridas.
Luego, se llevó cabo un caso de estudio en otra empresa para validar la usabilidad de ATAGeTT y la expresividad del lenguaje de decisión propuesto. Los usuarios pudieron especificar todas las reglas de ajuste de una manera simple, y de ejecutar la adaptación de procesos de manera automática. Los resultados muestran que ATAGeTT es fácil de aprender, usable y útil para sus potenciales usuarios. Aunque los resultados aún no son suficientes, son altamente positivos y consistentes; por lo tanto, esperamos que esta propuesta pueda ayudar a mejorar esta actividad, particularmente en organizaciones pequeñas y medianas, que generalmente están más limitadas para realizar adaptacion de procesos de software. / Este trabajo ha sido financiada por la beca CONICYT-PFCHA/Doctorado Nacional para Extranjeros/2013-63130130, y apoyada parcialmente por los proyectos FONDEF D09I-1171 /ADAPTE) y FONDEF IDeA IT13I20010 (GEMS), y el Programa de Becas de NIC Chile
|
45 |
Text mining aplicado a documentación de API para la detección de directivasCorrea Gaete, Gabriel Andrés Josué January 2015 (has links)
Ingeniero Civil en Computación / En esta memoria de Título se estudia la factibilidad de detectar directivas de API usando herramientas de Machine Learning y Text Mining. Las directivas son instrucciones importantes sobre el correcto uso de una API junto con restricciones y precauciones para prevenir errores. Sin embargo, existe la necesidad de destacar las directivas ya que pueden pasar desapercibidas para los desarrolladores de software. El objetivo general de este trabajo es diseñar e implementar un sistema de detección semi-automático de directivas de API. En este proyecto se realiza una búsqueda de los mejores algoritmos de Machine Learning para detectar las directivas de una API.
Se realizaron una serie de experimentos de Text Mining para evaluar la precisión de algoritmos que intentan separar las frases de una documentación en directivas y en no-directivas. Previo a la realización de los experimentos, fue necesario reunir una colección de directivas y de no-directivas, requeridos para entrenar los programas de Machine Learning. Para facilitar la recopilación de estos datos, se implementó Comments Highlighter o CHi: una aplicación web que ayuda a buscar y destacar manualmente las directivas de una API. De este modo, se utilizó la herramienta implementada para reunir los datos precisados por los algoritmos de clasificación y posteriormente se realizaron pruebas para medir el rendimiento de la detección automática de directivas. Luego, la habilidad de detectar las directivas es agregada a la aplicación, y como la detección no es perfecta, los errores pueden ser corregidos manualmente usando CHi. Es por esto que el sistema es denominado como una solución semi-automática.
Los resultados demuestran que es factible detectar directivas usando clasificadores de Machine Learning. Además, se hacen pruebas variando el tamaño de los datos usados para entrenar los clasificadores, obteniendo información sobre cuántas muestras es necesario reunir para lograr un porcentaje satisfactorio de directivas detectadas. Finalmente se observa que hay dos algoritmos que funcionan significativamente mejor que los otros y uno de ellos es agregado a las funcionalidades de CHi.
|
46 |
Manipulación y posicionamiento de objetos desconocidos por parte de un robot autónomoCastro Díaz, Maximiliano Andrés January 2016 (has links)
Ingeniero Civil en Computación / Para investigación en el área de robótica autónoma, el Laboratorio RyCh (Robótica y Computación en Chile) del Departamento de Ciencias de la Computación de la Universidad de Chile dispone del robot PR2, que provee de una plataforma completa para implementación y testeo de algoritmos orientados a solucionar problemas de este ámbito. Una de las materias altamente estudiadas globalmente es el de la capacidad de manipulación de los robots en ambientes cotidianos, con mínima o nula intervención humana sobre las acciones del robot en el proceso.
El presente trabajo de memoria aborda el problema de placing (posicionamiento) autónomo de objetos, para entregar así al robot PR2 una funcionalidad hasta ahora ausente y de alta utilidad. Para lograr este cometido, se llevó a cabo en una primera etapa un proceso de investigación sobre el tema y las herramientas a utilizar, para luego pasar a las etapas de diseño, implementación y testeo de una solución computacional que resuelva este problema.
Específicamente, en las primeras etapas del trabajo, se investigó acerca de la constitución lógica y física del robot, sobre sus alcances y limitaciones y estándares para el trabajo con esta plataforma. Paralelamente, se trabajó sobre el robot a modo de corroboración de los conceptos aprendidos y se destinó una gran parte del tiempo a realizar indagaciones acerca de trabajos similares realizados sobre este y otros sistemas robóticos autónomos. A continuación se analizó a fondo el problema a resolver, pudiendo así identificar sus posibles aristas y acotar el trabajo realizable con los recursos disponibles, llegando a la definición exacta de lo que se busca desarrollar: Un algoritmo de posicionamiento de objetos desconocidos en superficies planas para el robot PR2.
Se prosiguió con el diseño, implementación y testeo de los cinco módulos principales de la solución: Modelamiento del objeto, Cálculo de Pose Estable, Búsqueda de Superficie, Desplazamiento hacia Superficie y Posicionamiento cuyas subcomponentes funcionales formaron la estructura total del software, dando origen a mecanismos de control motriz del robot y a algoritmos específicos para escaneo tridimensional de objetos en una tenaza del robot, detección de superficie de apoyo estable óptima para objetos de diversas geometrías, búsqueda autónoma de una superficie adecuadas para posicionamiento basada en segmentación y traducción de pose estable del objeto a posiciones de la tenaza que lo sostiene, entre otros. Se creó también un módulo preliminar: Preparación del Robot, para llevar al PR2 al estado inicial de posicionamiento de objeto.
El desarrollo de estas componentes se realizó de forma independiente, testeando y ajustando parámetros de cada algoritmo. La unificación de todas estas partes dio origen finalmente al programa completo de placing , que resultó en el posicionamiento exitoso de objetos de diversa complejidad geométrica. Los casos fallidos se deben casi exclusivamente a la mala elección del espacio en la superficie utilizada.
Se ofrece al final del documento detalles y análisis sobre su aplicación en diversos casos de estudio, mostrando sus fortalezas en la estimación de estabilidad, y debilidades en elección de superficies de posicionamiento. Mejoras al programa son propuestas luego en la sección Trabajo Futuro. El trabajo permitió entender mejor el modo de desarrollo actual para la robótica y en este proceso sentó las bases para la entrega de un sistema funcional.
|
47 |
Towards Practical Omniscient DebuggingPothier, Guillaume January 2011 (has links)
No description available.
|
48 |
Mejora sistemática del proceso de desarrollo de software de la división de autoservicio de DTSLagos Santelices, Alejandro Ignacio January 2012 (has links)
Magíster en Tecnologías de la Información / La División de Sistemas de Autoservicio de la empresa DTS, ha pasado en los últimos años de ser un fabricante más de hardware de autoservicio a ser el principal proveedor de soluciones integrales en este rubro. Este cambio trajo consigo el surgimiento de diversos problemas en el ámbito del desarrollo de software, debido principalmente a la carencia de un proceso formal. Con el fin de resolverlos, la Gerencia decidió dar inicio a un proyecto de mejora sistemática del proceso de desarrollo de software, cuyo primer paso y objetivo principal de esta Tesis, sería la formalización de dicho proceso, y cuyos objetivos secundarios serían su evaluación, detección de posibles problemas y corrección posterior de ellos.
Para la especificación del proceso se decide usar lenguaje SPEM 2.0 en vez de documentos de texto, notación formal que permite algún tipo de procesamiento automatizado posterior. Como herramienta de especificación se determina el uso de EPF Composer, entorno gráfico que facilita la tarea de formalización. Finalmente, para la evaluación del proceso e identificación de anomalías, se establece el uso del método Process Model Blueprints, modelo desarrollado por alumnos de doctorado del DCC de la Universidad de Chile.
En principio se procedió a adquirir conocimiento sobre SPEM 2.0 y EPF Composer. Luego, en base a entrevistas efectuadas al personal de la División y al registro documental de proyectos pasados y en ejecución, se identificaron las tareas, roles y artefactos del proceso, los que fueron clasificados en un determinado número de áreas de proceso CMMI. Más tarde, se definieron los subprocesos fundamentales efectuados en la organización, los que finalmente fueron ensamblados en el proceso de desarrollo de software de la División. Este proceso ya formalizado, fue evaluado usando Process Model Blueprints, detectándose una serie de anomalías en cada una de sus tres vistas (roles, tareas y productos), las que fueron analizadas y corregidas cuando correspondía hacerlo.
Todos los objetivos planteados en esta Tesis fueron cumplidos de acuerdo a lo establecido, logrando contar al final del trabajo con un proceso especificado formalmente, evaluado según un conjunto de criterios, y mejorado a través de la corrección de las anomalías detectadas. Dentro de las lecciones aprendidas, se detecta entre otras cosas, que un análisis inicial más exhaustivo del problema planteado podría haber evitado el cambio posterior de los objetivos; además, se postergó la creación de guías para ciclos de mejora futuros, cuando éstas entregan tanto o más valor a los usuarios que la formalización del proceso. Como trabajo futuro, entre otras iniciativas, la División ha decidido participar en ADAPTE, proyecto que busca encontrar una nueva estrategia de adaptación de procesos que permita enfrentar proyectos de distinta naturaleza con un proceso especialmente adaptado a cada uno de ellos.
|
49 |
Sistema de información para el seguimiento de la labor de los Parlamentarios en ChileFlores Escobar, Gonzalo Felipe January 2015 (has links)
Ingeniero Civil en Computación / El congreso chileno es la mayor instancia de asamblea que existe en el país, la cual está compuesta por diferentes parlamentarios electos democráticamente por la ciudadanía, y cuyas tareas son: proponer, discutir y decidir cuáles serán las normas y reglas con las que se regirán los habitantes de la República de Chile. Por otro lado, la ciudadanía poco a poco comienza a ejercer interés en las decisiones que se están tomando en el parlamento, asumiendo un rol fiscalizador sobre lo que están votando sus representantes. Sin embargo, dada la alta cantidad de información técnica que se utiliza y que además, ésta se encuentra esparcida en la Web, provoca que se genere un muro comunicacional entre lo que hace el parlamento, y lo que se informa la ciudadanía.
El presente trabajo de título se desarrolló con el fin de mejorar la visibilidad de lo que hacen los parlamentarios, y busca generar un sistema de información Web que sirva para dar seguimiento a la labor de los parlamentarios de Chile, lo que facilitará ejercer el rol fiscalizador de la ciudadanía ante a sus representantes.
El proceso de desarrollo se dividió en tres etapas: la obtención de información, el análisis de los datos obtenidos y la presentación de estos a través de un perfil parlamentario. En lo que respecta a la obtención de información, esta tarea se materializó a través del desarrollo de un subsistema de recolección automatizado de la actividad parlamentaria. Este subsistema recupera información desde diferentes fuentes oficiales y almacena información específica, como por ejemplo: la asistencia de los parlamentarios, sus votaciones, los proyectos de ley que impulsan, las comisiones en las que participan, entre otros. La información recolectada es procesada, generando automáticamente diversos indicadores, los que son presentados en el perfil de cada uno de los parlamentarios. Esta solución cuenta con un servidor que almacena los datos procesados y los entrega por medio de una API, la que es utilizada por la aplicación Web para acceder en forma selectiva a la información del servidor.
Con la solución desarrollada, se procedió a realizar pruebas de usuario, las cuales fueron aplicadas a 8 personas, quienes estaban agrupados en 3 perfiles: usuarios muy interesados, público general con alto dominio en la Web, y con bajo dominio en la Web. La evaluación general fue positiva. Todos los usuarios indicaron que si la herramienta estuviera online, estos la utilizarían para hacer seguimiento al actuar de sus parlamentarios. Por otro lado, los usuarios presentaron varias ideas de mejoras en cuanto a utilidad y usabilidad de la solución, como también propuestas de posibles trabajos a futuro en cuanto a la visualización de datos.
|
50 |
Documentación de arquitecturas de sistemas en un bancoAhumada Ahumada, Francisco Javier January 2013 (has links)
Magíster en Tecnologías de la Información / Un banco posee cientos de sistemas para apoyar a la mayoría de las funciones del negocio y procesar millones de solicitudes de sus clientes internos y externos. Una falla en estos sistemas puede causar, desde un retraso en la entrega de informes de gestión, hasta pérdidas millonarias e incluso la cancelación de la licencia para poder operar.
La falta de documentación apropiada puede ser la causa de errores en el diseño de una modificación de la infraestructura existente. Cuando se produce una falla, el no tener la documentación adecuada puede aumentar los tiempos de respuesta de los equipos de soporte. En general, el contar con la documentación de la arquitectura de los sistemas permite a los equipos de trabajo tener una visión general y un punto de partida para tomar decisiones ante contingencias que puedan involucrarlos.
Cuando se habla de documentación formal de la arquitectura de software, existen varios modelos que se basan en la presentación de vistas que describen cómo se estructura. Algunos tienen un número fijo de vistas, y otros permiten acotar este número de acuerdo a un análisis de las necesidades existentes.
En este trabajo, se propone una metodología para aplicar y verificar la utilidad de uno de los modelos de documentación existentes: el modelo de vistas del Software Engineering Institute (SEI), que busca identificar y documentar las vistas de arquitectura de software más adecuadas, de acuerdo a los requerimientos de calidad de los stakeholders de un sistema en estudio.
Para realizar lo anterior, se seleccionó un sistema utilizado en un Banco, se entrevistó a sus stakeholders para conocer cuáles son sus intereses y con ello se generaron las vistas de arquitectura que propone el modelo. Finalmente, se presentan 3 casos donde se valida que la documentación de las vistas de arquitectura generadas en base al modelo mejoran la toma de decisiones de sus stakeholders, comparándola con el uso de la documentación existente antes de realizar este trabajo.
Este trabajo entrega una metodología práctica para aplicar el modelo de vistas del SEI, aprovechando principalmente la relación existente entre sus guías de estilos y los atributos de calidad que apoyan, orientando la documentación de la arquitectura de sistemas a las necesidades específicas de sus stakeholders. Para la comunidad académica y profesional sirve como caso de estudio de aplicación del modelo y, para el Banco involucrado, como el punto de partida para incorporarla en su ciclo de desarrollo de proyectos tecnológicos.
|
Page generated in 0.0851 seconds