{"configuration":{},"description":"C4 Model","documentation":{},"id":1,"lastModifiedAgent":"structurizr-onpremises/diagrams/ff1dd6ba-7d64-4f02-a5d7-03f7cd203782","lastModifiedDate":"2025-11-21T09:54:03Z","lastModifiedUser":"structurizr","model":{"people":[{"description":"Persona que interactúa con la aplicación","id":"1","name":"Usuario Final","properties":{"structurizr.dsl.identifier":"user"},"relationships":[{"description":"Usa","destinationId":"5","id":"8","sourceId":"1","tags":"Relationship"},{"description":"Usa","destinationId":"4","id":"9","linkedRelationshipId":"8","sourceId":"1"}],"tags":"Element,Person"},{"description":"Desarrollador que sube cambios","id":"2","name":"Developer","properties":{"structurizr.dsl.identifier":"dev"},"relationships":[{"description":"Commit","destinationId":"46","id":"52","sourceId":"2","tags":"Relationship"},{"description":"Commit","destinationId":"45","id":"53","linkedRelationshipId":"52","sourceId":"2"}],"tags":"Element,Person"},{"description":"Recibe alertas","id":"3","name":"Equipo de Operaciones","properties":{"structurizr.dsl.identifier":"ops"},"tags":"Element,Person"}],"softwareSystems":[{"containers":[{"description":"Frontend web o móvil","documentation":{},"id":"5","name":"Aplicación Web","properties":{"structurizr.dsl.identifier":"webapp"},"relationships":[{"description":"Consume API","destinationId":"6","id":"10","sourceId":"5","tags":"Relationship"}],"tags":"Element,Container","technology":"React / Angular / Mobile"},{"description":"Microservicios y API Gateway","documentation":{},"id":"6","name":"Sistema Backend","properties":{"structurizr.dsl.identifier":"backend"},"relationships":[{"description":"Lee/escribe","destinationId":"7","id":"11","sourceId":"6","tags":"Relationship"},{"description":"Filtrado por","destinationId":"12","id":"25","sourceId":"6","tags":"Relationship"},{"description":"Protegido por","destinationId":"13","id":"27","sourceId":"6","tags":"Relationship"},{"description":"Balanceado por","destinationId":"14","id":"29","sourceId":"6","tags":"Relationship"},{"description":"Autentica mediante","destinationId":"15","id":"31","sourceId":"6","tags":"Relationship"},{"description":"Controlado mediante","destinationId":"16","id":"33","sourceId":"6","tags":"Relationship"},{"description":"Cifra datos con","destinationId":"17","id":"35","sourceId":"6","tags":"Relationship"},{"description":"Verifica integridad con","destinationId":"18","id":"37","sourceId":"6","tags":"Relationship"},{"description":"Genera logs hacia","destinationId":"19","id":"39","sourceId":"6","tags":"Relationship"},{"description":"Analizado por","destinationId":"21","id":"41","sourceId":"6","tags":"Relationship"}],"tags":"Element,Container","technology":"Node/Java/Python"},{"description":"Almacena datos sensibles","documentation":{},"id":"7","name":"Base de Datos","properties":{"structurizr.dsl.identifier":"database"},"tags":"Element,Container","technology":"PostgreSQL / SQL"}],"description":"Plataforma empresarial","documentation":{},"id":"4","name":"Arquitectura Principal","properties":{"structurizr.dsl.identifier":"sistema"},"relationships":[{"description":"Filtrado por","destinationId":"12","id":"26","linkedRelationshipId":"25","sourceId":"4"},{"description":"Protegido por","destinationId":"13","id":"28","linkedRelationshipId":"27","sourceId":"4"},{"description":"Balanceado por","destinationId":"14","id":"30","linkedRelationshipId":"29","sourceId":"4"},{"description":"Autentica mediante","destinationId":"15","id":"32","linkedRelationshipId":"31","sourceId":"4"},{"description":"Controlado mediante","destinationId":"16","id":"34","linkedRelationshipId":"33","sourceId":"4"},{"description":"Cifra datos con","destinationId":"17","id":"36","linkedRelationshipId":"35","sourceId":"4"},{"description":"Verifica integridad con","destinationId":"18","id":"38","linkedRelationshipId":"37","sourceId":"4"},{"description":"Genera logs hacia","destinationId":"19","id":"40","linkedRelationshipId":"39","sourceId":"4"},{"description":"Analizado por","destinationId":"21","id":"42","linkedRelationshipId":"41","sourceId":"4"}],"tags":"Element,Software System"},{"description":"Protección contra OWASP A1-A10","documentation":{},"id":"12","name":"WAF","properties":{"structurizr.dsl.identifier":"waf"},"tags":"Element,Software System,Security"},{"description":"Mitigación de ataques distribuidos","documentation":{},"id":"13","name":"Anti-DDoS","properties":{"structurizr.dsl.identifier":"ddos"},"tags":"Element,Software System,Security"},{"description":"Distribución de tráfico","documentation":{},"id":"14","name":"Load Balancer","properties":{"structurizr.dsl.identifier":"lb"},"tags":"Element,Software System,Security"},{"description":"SSO, MFA, Identity Federation","documentation":{},"id":"15","name":"Autenticación & IAM","properties":{"structurizr.dsl.identifier":"auth"},"tags":"Element,Software System,Security"},{"description":"RBAC, ABAC, Zero Trust","documentation":{},"id":"16","name":"Control de Acceso","properties":{"structurizr.dsl.identifier":"access"},"tags":"Element,Software System,Security"},{"description":"TLS, KMS, encryption at rest","documentation":{},"id":"17","name":"Confidencialidad","properties":{"structurizr.dsl.identifier":"encryption"},"tags":"Element,Software System,Security"},{"description":"Firmas digitales, hashing","documentation":{},"id":"18","name":"Integridad","properties":{"structurizr.dsl.identifier":"integrity"},"tags":"Element,Software System,Security"},{"description":"SIEM / CloudTrail / Sentinel","documentation":{},"id":"19","name":"Logs & Auditoría","properties":{"structurizr.dsl.identifier":"logs"},"tags":"Element,Software System,Security"},{"description":"ISO 27001, SOC2, PCI","documentation":{},"id":"20","name":"Cumplimiento & Normativas","properties":{"structurizr.dsl.identifier":"compliance"},"tags":"Element,Software System,Security"},{"description":"SAST / DAST / SCA","documentation":{},"id":"21","name":"Vulnerability Scanner","properties":{"structurizr.dsl.identifier":"scanner"},"relationships":[{"description":"Resultados","destinationId":"47","id":"57","sourceId":"21","tags":"Relationship"},{"description":"Resultados","destinationId":"45","id":"58","linkedRelationshipId":"57","sourceId":"21"}],"tags":"Element,Software System,Security"},{"description":"AWS / Azure / GCP","documentation":{},"id":"22","name":"Proveedor Cloud","properties":{"structurizr.dsl.identifier":"cloud_provider"},"relationships":[{"description":"Proporciona redundancia","destinationId":"23","id":"43","sourceId":"22","tags":"Relationship"},{"description":"Proporciona red segura","destinationId":"24","id":"44","sourceId":"22","tags":"Relationship"}],"tags":"Element,Software System,Infra"},{"description":"Multi-region, DRP","documentation":{},"id":"23","name":"Alta Disponibilidad","properties":{"structurizr.dsl.identifier":"ha"},"tags":"Element,Software System,Infra"},{"description":"VPC, Subnets, Security Groups","documentation":{},"id":"24","name":"Networking","properties":{"structurizr.dsl.identifier":"network"},"tags":"Element,Software System,Infra"},{"containers":[{"description":"Código fuente","documentation":{},"id":"46","name":"Repositorio Git","properties":{"structurizr.dsl.identifier":"repo"},"relationships":[{"description":"Trigger CI","destinationId":"47","id":"54","sourceId":"46","tags":"Relationship"}],"tags":"Element,Container","technology":"GitHub / GitLab"},{"description":"Construcción y pruebas automáticas","documentation":{},"id":"47","name":"CI Pipeline","properties":{"structurizr.dsl.identifier":"ci"},"relationships":[{"description":"Escanea SAST/DAST/SCA","destinationId":"21","id":"55","sourceId":"47","tags":"Relationship"},{"description":"Publica artefactos","destinationId":"49","id":"59","sourceId":"47","tags":"Relationship"},{"description":"Trigger CD","destinationId":"48","id":"61","sourceId":"47","tags":"Relationship"}],"tags":"Element,Container","technology":"GitHub Actions / Jenkins"},{"description":"Despliegue automatizado","documentation":{},"id":"48","name":"CD Pipeline","properties":{"structurizr.dsl.identifier":"cd"},"relationships":[{"description":"Despliega release","destinationId":"50","id":"62","sourceId":"48","tags":"Relationship"}],"tags":"Element,Container","technology":"ArgoCD / Spinnaker"},{"description":"Imágenes validadas","documentation":{},"id":"49","name":"Container Registry","properties":{"structurizr.dsl.identifier":"registry"},"relationships":[{"description":"Disponible para despliegue","destinationId":"48","id":"60","sourceId":"49","tags":"Relationship"}],"tags":"Element,Container","technology":"Docker Hub / ECR / ACR"},{"description":"Ambiente productivo","documentation":{},"id":"50","name":"Runtime","properties":{"structurizr.dsl.identifier":"runtime"},"relationships":[{"description":"Genera métricas","destinationId":"51","id":"63","sourceId":"50","tags":"Relationship"}],"tags":"Element,Container","technology":"Kubernetes / ECS / VM"},{"description":"Métricas y alertas","documentation":{},"id":"51","name":"Monitoring","properties":{"structurizr.dsl.identifier":"monitoring"},"relationships":[{"description":"Envía alertas","destinationId":"3","id":"64","sourceId":"51","tags":"Relationship"}],"tags":"Element,Container","technology":"Prometheus / Datadog"}],"description":"Pipeline automatizado CI/CD con seguridad integrada","documentation":{},"id":"45","name":"DevSecOps Pipeline","properties":{"structurizr.dsl.identifier":"devsecops"},"relationships":[{"description":"Escanea SAST/DAST/SCA","destinationId":"21","id":"56","linkedRelationshipId":"55","sourceId":"45"},{"description":"Envía alertas","destinationId":"3","id":"65","linkedRelationshipId":"64","sourceId":"45"}],"tags":"Element,Software System"},{"description":"Plataforma de orquestación de contenedores","documentation":{},"id":"66","name":"Kubernetes Cluster","properties":{"structurizr.dsl.identifier":"k8s_cluster"},"relationships":[{"description":"Implementa identidad con","destinationId":"67","id":"92","sourceId":"66","tags":"Relationship"},{"description":"Gestiona acceso mediante","destinationId":"68","id":"93","sourceId":"66","tags":"Relationship"},{"description":"Integra autenticación con","destinationId":"69","id":"94","sourceId":"66","tags":"Relationship"},{"description":"Protege acceso con","destinationId":"70","id":"95","sourceId":"66","tags":"Relationship"},{"description":"Gestiona secretos con","destinationId":"71","id":"96","sourceId":"66","tags":"Relationship"},{"description":"Cifra datos con","destinationId":"72","id":"97","sourceId":"66","tags":"Relationship"},{"description":"Controla tráfico con","destinationId":"73","id":"98","sourceId":"66","tags":"Relationship"},{"description":"Implementa Zero Trust con","destinationId":"74","id":"99","sourceId":"66","tags":"Relationship"},{"description":"Protege tráfico con","destinationId":"75","id":"100","sourceId":"66","tags":"Relationship"},{"description":"Aplica políticas con","destinationId":"76","id":"101","sourceId":"66","tags":"Relationship"},{"description":"Protege DDoS con","destinationId":"77","id":"102","sourceId":"66","tags":"Relationship"},{"description":"Protege APIs con","destinationId":"78","id":"103","sourceId":"66","tags":"Relationship"},{"description":"Escanea contenedores con","destinationId":"79","id":"104","sourceId":"66","tags":"Relationship"},{"description":"Monitorea runtime con","destinationId":"80","id":"105","sourceId":"66","tags":"Relationship"},{"description":"Centraliza logs en","destinationId":"81","id":"106","sourceId":"66","tags":"Relationship"},{"description":"Monitorea métricas con","destinationId":"82","id":"107","sourceId":"66","tags":"Relationship"},{"description":"Detecta intrusiones con","destinationId":"83","id":"108","sourceId":"66","tags":"Relationship"},{"description":"Escanea vulnerabilidades con","destinationId":"84","id":"109","sourceId":"66","tags":"Relationship"},{"description":"Evalúa seguridad con","destinationId":"85","id":"110","sourceId":"66","tags":"Relationship"},{"description":"Actualiza seguridad con","destinationId":"86","id":"111","sourceId":"66","tags":"Relationship"},{"description":"Realiza backup con","destinationId":"87","id":"112","sourceId":"66","tags":"Relationship"},{"description":"Gestiona recuperación con","destinationId":"88","id":"113","sourceId":"66","tags":"Relationship"},{"description":"Aplica políticas con","destinationId":"89","id":"114","sourceId":"66","tags":"Relationship"},{"description":"Controla acceso con","destinationId":"90","id":"115","sourceId":"66","tags":"Relationship"},{"description":"Audita acciones en","destinationId":"91","id":"116","sourceId":"66","tags":"Relationship"}],"tags":"Element,Software System,Kubernetes"},{"description":"Identity Provider en Kubernetes","documentation":{},"id":"67","name":"Keycloak Operator","properties":{"structurizr.dsl.identifier":"keycloak"},"tags":"Element,Software System,Kubernetes,IAM"},{"description":"Gestión avanzada de roles","documentation":{},"id":"68","name":"RBAC Kubernetes","properties":{"structurizr.dsl.identifier":"rbac_k8s"},"tags":"Element,Software System,Kubernetes,IAM"},{"description":"Autenticación externa","documentation":{},"id":"69","name":"OIDC Integration","properties":{"structurizr.dsl.identifier":"oidc"},"tags":"Element,Software System,Kubernetes,IAM"},{"description":"Multi-Factor Authentication","documentation":{},"id":"70","name":"MFA System","properties":{"structurizr.dsl.identifier":"mfa"},"tags":"Element,Software System,Kubernetes,IAM"},{"description":"Gestión de secretos","documentation":{},"id":"71","name":"Vault/Sealed Secrets","properties":{"structurizr.dsl.identifier":"vault"},"tags":"Element,Software System,Kubernetes,Data Protection"},{"description":"Cifrado de volúmenes","documentation":{},"id":"72","name":"Encryption at Rest","properties":{"structurizr.dsl.identifier":"encryption_k8s"},"tags":"Element,Software System,Kubernetes,Data Protection"},{"description":"Control de tráfico entre pods","documentation":{},"id":"73","name":"Network Policies","properties":{"structurizr.dsl.identifier":"network_policies"},"tags":"Element,Software System,Kubernetes,Data Protection"},{"description":"Zero Trust con mTLS","documentation":{},"id":"74","name":"Istio Service Mesh","properties":{"structurizr.dsl.identifier":"istio"},"tags":"Element,Software System,Kubernetes,Network Security"},{"description":"NGINX con WAF integrado","documentation":{},"id":"75","name":"Ingress Controller","properties":{"structurizr.dsl.identifier":"ingress_controller"},"tags":"Element,Software System,Kubernetes,Network Security"},{"description":"Políticas de firewall avanzadas","documentation":{},"id":"76","name":"Calico Firewall","properties":{"structurizr.dsl.identifier":"calico"},"tags":"Element,Software System,Kubernetes,Network Security"},{"description":"Protección DDoS","documentation":{},"id":"77","name":"Cloudflare DDoS","properties":{"structurizr.dsl.identifier":"cloudflare"},"tags":"Element,Software System,Kubernetes,Network Security"},{"description":"Kong/Istio con políticas de seguridad","documentation":{},"id":"78","name":"API Gateway","properties":{"structurizr.dsl.identifier":"api_gateway"},"tags":"Element,Software System,Kubernetes,App Security"},{"description":"Clair/Trivy para escaneo","documentation":{},"id":"79","name":"Container Security","properties":{"structurizr.dsl.identifier":"container_security"},"tags":"Element,Software System,Kubernetes,App Security"},{"description":"Falco para detección de anomalías","documentation":{},"id":"80","name":"Runtime Security","properties":{"structurizr.dsl.identifier":"runtime_security"},"tags":"Element,Software System,Kubernetes,App Security"},{"description":"ELK para log management","documentation":{},"id":"81","name":"SIEM Stack","properties":{"structurizr.dsl.identifier":"siem"},"tags":"Element,Software System,Kubernetes,Monitoring"},{"description":"Monitoreo de seguridad","documentation":{},"id":"82","name":"Prometheus + Grafana","properties":{"structurizr.dsl.identifier":"prometheus"},"tags":"Element,Software System,Kubernetes,Monitoring"},{"description":"Falco y OSSEC","documentation":{},"id":"83","name":"IDS/IPS","properties":{"structurizr.dsl.identifier":"ids_ips"},"tags":"Element,Software System,Kubernetes,Monitoring"},{"description":"Trivy/Clair","documentation":{},"id":"84","name":"Vulnerability Scanning","properties":{"structurizr.dsl.identifier":"vulnerability_scanner"},"tags":"Element,Software System,Kubernetes,Vulnerability"},{"description":"Kube-bench/hunter","documentation":{},"id":"85","name":"Security Assessments","properties":{"structurizr.dsl.identifier":"security_assessments"},"tags":"Element,Software System,Kubernetes,Vulnerability"},{"description":"ArgoCD para actualizaciones","documentation":{},"id":"86","name":"Patch Management","properties":{"structurizr.dsl.identifier":"patch_management"},"tags":"Element,Software System,Kubernetes,Vulnerability"},{"description":"Backup de estado de clúster","documentation":{},"id":"87","name":"Velero Backup","properties":{"structurizr.dsl.identifier":"velero"},"tags":"Element,Software System,Kubernetes,Backup"},{"description":"Restic para volúmenes","documentation":{},"id":"88","name":"Disaster Recovery","properties":{"structurizr.dsl.identifier":"disaster_recovery"},"tags":"Element,Software System,Kubernetes,Backup"},{"description":"Políticas de seguridad","documentation":{},"id":"89","name":"OPA Gatekeeper","properties":{"structurizr.dsl.identifier":"opa_gatekeeper"},"tags":"Element,Software System,Kubernetes,Governance"},{"description":"Políticas de control de acceso","documentation":{},"id":"90","name":"Kyverno","properties":{"structurizr.dsl.identifier":"kyverno"},"tags":"Element,Software System,Kubernetes,Governance"},{"description":"Logs centralizados","documentation":{},"id":"91","name":"Audit Logs","properties":{"structurizr.dsl.identifier":"audit_logs"},"tags":"Element,Software System,Kubernetes,Governance"}]},"name":"Arquitectura de Seguridad Transversal en Kubernetes","properties":{"structurizr.inspection.info":"0","structurizr.inspection.ignore":"0","structurizr.inspection.error":"70","structurizr.inspection.warning":"0","structurizr.dsl":"d29ya3NwYWNlICJBcnF1aXRlY3R1cmEgZGUgU2VndXJpZGFkIFRyYW5zdmVyc2FsIGVuIEt1YmVybmV0ZXMiICJDNCBNb2RlbCIgewoKICBtb2RlbCB7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyMgUEVSU09OQVMKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICB1c2VyID0gcGVyc29uICJVc3VhcmlvIEZpbmFsIiAiUGVyc29uYSBxdWUgaW50ZXJhY3TDumEgY29uIGxhIGFwbGljYWNpw7NuIgogICAgZGV2ICA9IHBlcnNvbiAiRGV2ZWxvcGVyIiAiRGVzYXJyb2xsYWRvciBxdWUgc3ViZSBjYW1iaW9zIgogICAgb3BzICA9IHBlcnNvbiAiRXF1aXBvIGRlIE9wZXJhY2lvbmVzIiAiUmVjaWJlIGFsZXJ0YXMiCgoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMjIFNJU1RFTUFTIFBSSU5DSVBBTEVTIChDb3JlIEFyY2hpdGVjdHVyZSkKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBzaXN0ZW1hID0gc29mdHdhcmVTeXN0ZW0gIkFycXVpdGVjdHVyYSBQcmluY2lwYWwiICJQbGF0YWZvcm1hIGVtcHJlc2FyaWFsIiB7CgogICAgICB3ZWJhcHAgPSBjb250YWluZXIgIkFwbGljYWNpw7NuIFdlYiIgIkZyb250ZW5kIHdlYiBvIG3Ds3ZpbCIgIlJlYWN0IC8gQW5ndWxhciAvIE1vYmlsZSIKICAgICAgYmFja2VuZCA9IGNvbnRhaW5lciAiU2lzdGVtYSBCYWNrZW5kIiAiTWljcm9zZXJ2aWNpb3MgeSBBUEkgR2F0ZXdheSIgIk5vZGUvSmF2YS9QeXRob24iCiAgICAgIGRhdGFiYXNlID0gY29udGFpbmVyICJCYXNlIGRlIERhdG9zIiAiQWxtYWNlbmEgZGF0b3Mgc2Vuc2libGVzIiAiUG9zdGdyZVNRTCAvIFNRTCIKCiAgICAgIHVzZXIgLT4gd2ViYXBwICJVc2EiCiAgICAgIHdlYmFwcCAtPiBiYWNrZW5kICJDb25zdW1lIEFQSSIKICAgICAgYmFja2VuZCAtPiBkYXRhYmFzZSAiTGVlL2VzY3JpYmUiCiAgICB9CgoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMjIENBUEEgREUgU0VHVVJJREFEIChUQUcgU2VjdXJpdHkpCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgd2FmID0gc29mdHdhcmVTeXN0ZW0gIldBRiIgIlByb3RlY2Npw7NuIGNvbnRyYSBPV0FTUCBBMS1BMTAiIHsKICAgICAgdGFncyAiU2VjdXJpdHkiCiAgICB9CiAgICBkZG9zID0gc29mdHdhcmVTeXN0ZW0gIkFudGktRERvUyIgIk1pdGlnYWNpw7NuIGRlIGF0YXF1ZXMgZGlzdHJpYnVpZG9zIiB7CiAgICAgIHRhZ3MgIlNlY3VyaXR5IgogICAgfQogICAgbGIgPSBzb2Z0d2FyZVN5c3RlbSAiTG9hZCBCYWxhbmNlciIgIkRpc3RyaWJ1Y2nDs24gZGUgdHLDoWZpY28iIHsKICAgICAgdGFncyAiU2VjdXJpdHkiCiAgICB9CiAgICBhdXRoID0gc29mdHdhcmVTeXN0ZW0gIkF1dGVudGljYWNpw7NuICYgSUFNIiAiU1NPLCBNRkEsIElkZW50aXR5IEZlZGVyYXRpb24iIHsKICAgICAgdGFncyAiU2VjdXJpdHkiCiAgICB9CiAgICBhY2Nlc3MgPSBzb2Z0d2FyZVN5c3RlbSAiQ29udHJvbCBkZSBBY2Nlc28iICJSQkFDLCBBQkFDLCBaZXJvIFRydXN0IiB7CiAgICAgIHRhZ3MgIlNlY3VyaXR5IgogICAgfQogICAgZW5jcnlwdGlvbiA9IHNvZnR3YXJlU3lzdGVtICJDb25maWRlbmNpYWxpZGFkIiAiVExTLCBLTVMsIGVuY3J5cHRpb24gYXQgcmVzdCIgewogICAgICB0YWdzICJTZWN1cml0eSIKICAgIH0KICAgIGludGVncml0eSA9IHNvZnR3YXJlU3lzdGVtICJJbnRlZ3JpZGFkIiAiRmlybWFzIGRpZ2l0YWxlcywgaGFzaGluZyIgewogICAgICB0YWdzICJTZWN1cml0eSIKICAgIH0KICAgIGxvZ3MgPSBzb2Z0d2FyZVN5c3RlbSAiTG9ncyAmIEF1ZGl0b3LDrWEiICJTSUVNIC8gQ2xvdWRUcmFpbCAvIFNlbnRpbmVsIiB7CiAgICAgIHRhZ3MgIlNlY3VyaXR5IgogICAgfQogICAgY29tcGxpYW5jZSA9IHNvZnR3YXJlU3lzdGVtICJDdW1wbGltaWVudG8gJiBOb3JtYXRpdmFzIiAiSVNPIDI3MDAxLCBTT0MyLCBQQ0kiIHsKICAgICAgdGFncyAiU2VjdXJpdHkiCiAgICB9CiAgICBzY2FubmVyID0gc29mdHdhcmVTeXN0ZW0gIlZ1bG5lcmFiaWxpdHkgU2Nhbm5lciIgIlNBU1QgLyBEQVNUIC8gU0NBIiB7CiAgICAgIHRhZ3MgIlNlY3VyaXR5IgogICAgfQoKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIyBDQVBBIElORlJBRVNUUlVDVFVSQSAoVEFHIEluZnJhKQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgIGNsb3VkX3Byb3ZpZGVyID0gc29mdHdhcmVTeXN0ZW0gIlByb3ZlZWRvciBDbG91ZCIgIkFXUyAvIEF6dXJlIC8gR0NQIiB7CiAgICAgIHRhZ3MgIkluZnJhIgogICAgfQogICAgaGEgPSBzb2Z0d2FyZVN5c3RlbSAiQWx0YSBEaXNwb25pYmlsaWRhZCIgIk11bHRpLXJlZ2lvbiwgRFJQIiB7CiAgICAgIHRhZ3MgIkluZnJhIgogICAgfQogICAgbmV0d29yayA9IHNvZnR3YXJlU3lzdGVtICJOZXR3b3JraW5nIiAiVlBDLCBTdWJuZXRzLCBTZWN1cml0eSBHcm91cHMiIHsKICAgICAgdGFncyAiSW5mcmEiCiAgICB9CgoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMjIFJFTEFDSU9ORVMgREUgU0VHVVJJREFECiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgYmFja2VuZCAtPiB3YWYgICAgICAgIkZpbHRyYWRvIHBvciIKICAgIGJhY2tlbmQgLT4gZGRvcyAgICAgICJQcm90ZWdpZG8gcG9yIgogICAgYmFja2VuZCAtPiBsYiAgICAgICAgIkJhbGFuY2VhZG8gcG9yIgogICAgYmFja2VuZCAtPiBhdXRoICAgICAgIkF1dGVudGljYSBtZWRpYW50ZSIKICAgIGJhY2tlbmQgLT4gYWNjZXNzICAgICJDb250cm9sYWRvIG1lZGlhbnRlIgogICAgYmFja2VuZCAtPiBlbmNyeXB0aW9uICJDaWZyYSBkYXRvcyBjb24iCiAgICBiYWNrZW5kIC0+IGludGVncml0eSAgIlZlcmlmaWNhIGludGVncmlkYWQgY29uIgogICAgYmFja2VuZCAtPiBsb2dzICAgICAgICJHZW5lcmEgbG9ncyBoYWNpYSIKICAgIGJhY2tlbmQgLT4gc2Nhbm5lciAgICAiQW5hbGl6YWRvIHBvciIKCiAgICBjbG91ZF9wcm92aWRlciAtPiBoYSAgIlByb3BvcmNpb25hIHJlZHVuZGFuY2lhIgogICAgY2xvdWRfcHJvdmlkZXIgLT4gbmV0d29yayAiUHJvcG9yY2lvbmEgcmVkIHNlZ3VyYSIKCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyMgU0lTVEVNQSBERVZTRUNPUFMgKHBhcmEgdmlzdGEgZGluw6FtaWNhKQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgIGRldnNlY29wcyA9IHNvZnR3YXJlU3lzdGVtICJEZXZTZWNPcHMgUGlwZWxpbmUiICJQaXBlbGluZSBhdXRvbWF0aXphZG8gQ0kvQ0QgY29uIHNlZ3VyaWRhZCBpbnRlZ3JhZGEiIHsKCiAgICAgIHJlcG8gICAgID0gY29udGFpbmVyICJSZXBvc2l0b3JpbyBHaXQiICJDw7NkaWdvIGZ1ZW50ZSIgIkdpdEh1YiAvIEdpdExhYiIKICAgICAgY2kgICAgICAgPSBjb250YWluZXIgIkNJIFBpcGVsaW5lIiAiQ29uc3RydWNjacOzbiB5IHBydWViYXMgYXV0b23DoXRpY2FzIiAiR2l0SHViIEFjdGlvbnMgLyBKZW5raW5zIgogICAgICBjZCAgICAgICA9IGNvbnRhaW5lciAiQ0QgUGlwZWxpbmUiICJEZXNwbGllZ3VlIGF1dG9tYXRpemFkbyIgIkFyZ29DRCAvIFNwaW5uYWtlciIKICAgICAgcmVnaXN0cnkgPSBjb250YWluZXIgIkNvbnRhaW5lciBSZWdpc3RyeSIgIkltw6FnZW5lcyB2YWxpZGFkYXMiICJEb2NrZXIgSHViIC8gRUNSIC8gQUNSIgogICAgICBydW50aW1lICA9IGNvbnRhaW5lciAiUnVudGltZSIgIkFtYmllbnRlIHByb2R1Y3Rpdm8iICJLdWJlcm5ldGVzIC8gRUNTIC8gVk0iCiAgICAgIG1vbml0b3JpbmcgPSBjb250YWluZXIgIk1vbml0b3JpbmciICJNw6l0cmljYXMgeSBhbGVydGFzIiAiUHJvbWV0aGV1cyAvIERhdGFkb2ciCgogICAgICBkZXYgLT4gcmVwbyAiQ29tbWl0IgogICAgICByZXBvIC0+IGNpICJUcmlnZ2VyIENJIgogICAgICBjaSAtPiBzY2FubmVyICJFc2NhbmVhIFNBU1QvREFTVC9TQ0EiCiAgICAgIHNjYW5uZXIgLT4gY2kgIlJlc3VsdGFkb3MiCiAgICAgIGNpIC0+IHJlZ2lzdHJ5ICJQdWJsaWNhIGFydGVmYWN0b3MiCiAgICAgIHJlZ2lzdHJ5IC0+IGNkICJEaXNwb25pYmxlIHBhcmEgZGVzcGxpZWd1ZSIKICAgICAgY2kgLT4gY2QgIlRyaWdnZXIgQ0QiCiAgICAgIGNkIC0+IHJ1bnRpbWUgIkRlc3BsaWVnYSByZWxlYXNlIgogICAgICBydW50aW1lIC0+IG1vbml0b3JpbmcgIkdlbmVyYSBtw6l0cmljYXMiCiAgICAgIG1vbml0b3JpbmcgLT4gb3BzICJFbnbDrWEgYWxlcnRhcyIKICAgIH0KCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIyBOVUVWQSBDQVBBOiBBUlFVSVRFQ1RVUkEgS1VCRVJORVRFUyBTRUdVUkEKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBrOHNfY2x1c3RlciA9IHNvZnR3YXJlU3lzdGVtICJLdWJlcm5ldGVzIENsdXN0ZXIiICJQbGF0YWZvcm1hIGRlIG9ycXVlc3RhY2nDs24gZGUgY29udGVuZWRvcmVzIiB7CiAgICAgIHRhZ3MgIkt1YmVybmV0ZXMiCiAgICB9CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyMgQ09NUE9ORU5URVMgREUgS1VCRVJORVRFUwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgIC8vIENhcGEgZGUgSWRlbnRpZGFkIHkgQWNjZXNvCiAgICBrZXljbG9hayA9IHNvZnR3YXJlU3lzdGVtICJLZXljbG9hayBPcGVyYXRvciIgIklkZW50aXR5IFByb3ZpZGVyIGVuIEt1YmVybmV0ZXMiIHsKICAgICAgdGFncyAiS3ViZXJuZXRlcyIsICJJQU0iCiAgICB9CiAgICAKICAgIHJiYWNfazhzID0gc29mdHdhcmVTeXN0ZW0gIlJCQUMgS3ViZXJuZXRlcyIgIkdlc3Rpw7NuIGF2YW56YWRhIGRlIHJvbGVzIiB7CiAgICAgIHRhZ3MgIkt1YmVybmV0ZXMiLCAiSUFNIgogICAgfQogICAgCiAgICBvaWRjID0gc29mdHdhcmVTeXN0ZW0gIk9JREMgSW50ZWdyYXRpb24iICJBdXRlbnRpY2FjacOzbiBleHRlcm5hIiB7CiAgICAgIHRhZ3MgIkt1YmVybmV0ZXMiLCAiSUFNIgogICAgfQogICAgCiAgICBtZmEgPSBzb2Z0d2FyZVN5c3RlbSAiTUZBIFN5c3RlbSIgIk11bHRpLUZhY3RvciBBdXRoZW50aWNhdGlvbiIgewogICAgICB0YWdzICJLdWJlcm5ldGVzIiwgIklBTSIKICAgIH0KCiAgICAvLyBDYXBhIGRlIFByb3RlY2Npw7NuIGRlIERhdG9zCiAgICB2YXVsdCA9IHNvZnR3YXJlU3lzdGVtICJWYXVsdC9TZWFsZWQgU2VjcmV0cyIgIkdlc3Rpw7NuIGRlIHNlY3JldG9zIiB7CiAgICAgIHRhZ3MgIkt1YmVybmV0ZXMiLCAiRGF0YSBQcm90ZWN0aW9uIgogICAgfQogICAgCiAgICBlbmNyeXB0aW9uX2s4cyA9IHNvZnR3YXJlU3lzdGVtICJFbmNyeXB0aW9uIGF0IFJlc3QiICJDaWZyYWRvIGRlIHZvbMO6bWVuZXMiIHsKICAgICAgdGFncyAiS3ViZXJuZXRlcyIsICJEYXRhIFByb3RlY3Rpb24iCiAgICB9CiAgICAKICAgIG5ldHdvcmtfcG9saWNpZXMgPSBzb2Z0d2FyZVN5c3RlbSAiTmV0d29yayBQb2xpY2llcyIgIkNvbnRyb2wgZGUgdHLDoWZpY28gZW50cmUgcG9kcyIgewogICAgICB0YWdzICJLdWJlcm5ldGVzIiwgIkRhdGEgUHJvdGVjdGlvbiIKICAgIH0KCiAgICAvLyBDYXBhIGRlIFNlZ3VyaWRhZCBkZSBSZWQKICAgIGlzdGlvID0gc29mdHdhcmVTeXN0ZW0gIklzdGlvIFNlcnZpY2UgTWVzaCIgIlplcm8gVHJ1c3QgY29uIG1UTFMiIHsKICAgICAgdGFncyAiS3ViZXJuZXRlcyIsICJOZXR3b3JrIFNlY3VyaXR5IgogICAgfQogICAgCiAgICBpbmdyZXNzX2NvbnRyb2xsZXIgPSBzb2Z0d2FyZVN5c3RlbSAiSW5ncmVzcyBDb250cm9sbGVyIiAiTkdJTlggY29uIFdBRiBpbnRlZ3JhZG8iIHsKICAgICAgdGFncyAiS3ViZXJuZXRlcyIsICJOZXR3b3JrIFNlY3VyaXR5IgogICAgfQogICAgCiAgICBjYWxpY28gPSBzb2Z0d2FyZVN5c3RlbSAiQ2FsaWNvIEZpcmV3YWxsIiAiUG9sw610aWNhcyBkZSBmaXJld2FsbCBhdmFuemFkYXMiIHsKICAgICAgdGFncyAiS3ViZXJuZXRlcyIsICJOZXR3b3JrIFNlY3VyaXR5IgogICAgfQogICAgCiAgICBjbG91ZGZsYXJlID0gc29mdHdhcmVTeXN0ZW0gIkNsb3VkZmxhcmUgRERvUyIgIlByb3RlY2Npw7NuIEREb1MiIHsKICAgICAgdGFncyAiS3ViZXJuZXRlcyIsICJOZXR3b3JrIFNlY3VyaXR5IgogICAgfQoKICAgIC8vIENhcGEgZGUgU2VndXJpZGFkIGRlIEFwbGljYWNpb25lcwogICAgYXBpX2dhdGV3YXkgPSBzb2Z0d2FyZVN5c3RlbSAiQVBJIEdhdGV3YXkiICJLb25nL0lzdGlvIGNvbiBwb2zDrXRpY2FzIGRlIHNlZ3VyaWRhZCIgewogICAgICB0YWdzICJLdWJlcm5ldGVzIiwgIkFwcCBTZWN1cml0eSIKICAgIH0KICAgIAogICAgY29udGFpbmVyX3NlY3VyaXR5ID0gc29mdHdhcmVTeXN0ZW0gIkNvbnRhaW5lciBTZWN1cml0eSIgIkNsYWlyL1RyaXZ5IHBhcmEgZXNjYW5lbyIgewogICAgICB0YWdzICJLdWJlcm5ldGVzIiwgIkFwcCBTZWN1cml0eSIKICAgIH0KICAgIAogICAgcnVudGltZV9zZWN1cml0eSA9IHNvZnR3YXJlU3lzdGVtICJSdW50aW1lIFNlY3VyaXR5IiAiRmFsY28gcGFyYSBkZXRlY2Npw7NuIGRlIGFub21hbMOtYXMiIHsKICAgICAgdGFncyAiS3ViZXJuZXRlcyIsICJBcHAgU2VjdXJpdHkiCiAgICB9CgogICAgLy8gQ2FwYSBkZSBNb25pdG9yZW8geSBEZXRlY2Npw7NuCiAgICBzaWVtID0gc29mdHdhcmVTeXN0ZW0gIlNJRU0gU3RhY2siICJFTEsgcGFyYSBsb2cgbWFuYWdlbWVudCIgewogICAgICB0YWdzICJLdWJlcm5ldGVzIiwgIk1vbml0b3JpbmciCiAgICB9CiAgICAKICAgIHByb21ldGhldXMgPSBzb2Z0d2FyZVN5c3RlbSAiUHJvbWV0aGV1cyArIEdyYWZhbmEiICJNb25pdG9yZW8gZGUgc2VndXJpZGFkIiB7CiAgICAgIHRhZ3MgIkt1YmVybmV0ZXMiLCAiTW9uaXRvcmluZyIKICAgIH0KICAgIAogICAgaWRzX2lwcyA9IHNvZnR3YXJlU3lzdGVtICJJRFMvSVBTIiAiRmFsY28geSBPU1NFQyIgewogICAgICB0YWdzICJLdWJlcm5ldGVzIiwgIk1vbml0b3JpbmciCiAgICB9CgogICAgLy8gQ2FwYSBkZSBHZXN0acOzbiBkZSBWdWxuZXJhYmlsaWRhZGVzCiAgICB2dWxuZXJhYmlsaXR5X3NjYW5uZXIgPSBzb2Z0d2FyZVN5c3RlbSAiVnVsbmVyYWJpbGl0eSBTY2FubmluZyIgIlRyaXZ5L0NsYWlyIiB7CiAgICAgIHRhZ3MgIkt1YmVybmV0ZXMiLCAiVnVsbmVyYWJpbGl0eSIKICAgIH0KICAgIAogICAgc2VjdXJpdHlfYXNzZXNzbWVudHMgPSBzb2Z0d2FyZVN5c3RlbSAiU2VjdXJpdHkgQXNzZXNzbWVudHMiICJLdWJlLWJlbmNoL2h1bnRlciIgewogICAgICB0YWdzICJLdWJlcm5ldGVzIiwgIlZ1bG5lcmFiaWxpdHkiCiAgICB9CiAgICAKICAgIHBhdGNoX21hbmFnZW1lbnQgPSBzb2Z0d2FyZVN5c3RlbSAiUGF0Y2ggTWFuYWdlbWVudCIgIkFyZ29DRCBwYXJhIGFjdHVhbGl6YWNpb25lcyIgewogICAgICB0YWdzICJLdWJlcm5ldGVzIiwgIlZ1bG5lcmFiaWxpdHkiCiAgICB9CgogICAgLy8gQ2FwYSBkZSBCYWNrdXAgeSBSZWN1cGVyYWNpw7NuCiAgICB2ZWxlcm8gPSBzb2Z0d2FyZVN5c3RlbSAiVmVsZXJvIEJhY2t1cCIgIkJhY2t1cCBkZSBlc3RhZG8gZGUgY2zDunN0ZXIiIHsKICAgICAgdGFncyAiS3ViZXJuZXRlcyIsICJCYWNrdXAiCiAgICB9CiAgICAKICAgIGRpc2FzdGVyX3JlY292ZXJ5ID0gc29mdHdhcmVTeXN0ZW0gIkRpc2FzdGVyIFJlY292ZXJ5IiAiUmVzdGljIHBhcmEgdm9sw7ptZW5lcyIgewogICAgICB0YWdzICJLdWJlcm5ldGVzIiwgIkJhY2t1cCIKICAgIH0KCiAgICAvLyBDYXBhIGRlIEdvYmVybmFuemEKICAgIG9wYV9nYXRla2VlcGVyID0gc29mdHdhcmVTeXN0ZW0gIk9QQSBHYXRla2VlcGVyIiAiUG9sw610aWNhcyBkZSBzZWd1cmlkYWQiIHsKICAgICAgdGFncyAiS3ViZXJuZXRlcyIsICJHb3Zlcm5hbmNlIgogICAgfQogICAgCiAgICBreXZlcm5vID0gc29mdHdhcmVTeXN0ZW0gIkt5dmVybm8iICJQb2zDrXRpY2FzIGRlIGNvbnRyb2wgZGUgYWNjZXNvIiB7CiAgICAgIHRhZ3MgIkt1YmVybmV0ZXMiLCAiR292ZXJuYW5jZSIKICAgIH0KICAgIAogICAgYXVkaXRfbG9ncyA9IHNvZnR3YXJlU3lzdGVtICJBdWRpdCBMb2dzIiAiTG9ncyBjZW50cmFsaXphZG9zIiB7CiAgICAgIHRhZ3MgIkt1YmVybmV0ZXMiLCAiR292ZXJuYW5jZSIKICAgIH0KCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIyBSRUxBQ0lPTkVTIEVOIEtVQkVSTkVURVMKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAvLyBSZWxhY2lvbmVzIGRlIElkZW50aWRhZCB5IEFjY2VzbwogICAgazhzX2NsdXN0ZXIgLT4ga2V5Y2xvYWsgIkltcGxlbWVudGEgaWRlbnRpZGFkIGNvbiIKICAgIGs4c19jbHVzdGVyIC0+IHJiYWNfazhzICJHZXN0aW9uYSBhY2Nlc28gbWVkaWFudGUiCiAgICBrOHNfY2x1c3RlciAtPiBvaWRjICJJbnRlZ3JhIGF1dGVudGljYWNpw7NuIGNvbiIKICAgIGs4c19jbHVzdGVyIC0+IG1mYSAiUHJvdGVnZSBhY2Nlc28gY29uIgoKICAgIC8vIFJlbGFjaW9uZXMgZGUgUHJvdGVjY2nDs24gZGUgRGF0b3MKICAgIGs4c19jbHVzdGVyIC0+IHZhdWx0ICJHZXN0aW9uYSBzZWNyZXRvcyBjb24iCiAgICBrOHNfY2x1c3RlciAtPiBlbmNyeXB0aW9uX2s4cyAiQ2lmcmEgZGF0b3MgY29uIgogICAgazhzX2NsdXN0ZXIgLT4gbmV0d29ya19wb2xpY2llcyAiQ29udHJvbGEgdHLDoWZpY28gY29uIgoKICAgIC8vIFJlbGFjaW9uZXMgZGUgU2VndXJpZGFkIGRlIFJlZAogICAgazhzX2NsdXN0ZXIgLT4gaXN0aW8gIkltcGxlbWVudGEgWmVybyBUcnVzdCBjb24iCiAgICBrOHNfY2x1c3RlciAtPiBpbmdyZXNzX2NvbnRyb2xsZXIgIlByb3RlZ2UgdHLDoWZpY28gY29uIgogICAgazhzX2NsdXN0ZXIgLT4gY2FsaWNvICJBcGxpY2EgcG9sw610aWNhcyBjb24iCiAgICBrOHNfY2x1c3RlciAtPiBjbG91ZGZsYXJlICJQcm90ZWdlIEREb1MgY29uIgoKICAgIC8vIFJlbGFjaW9uZXMgZGUgU2VndXJpZGFkIGRlIEFwbGljYWNpb25lcwogICAgazhzX2NsdXN0ZXIgLT4gYXBpX2dhdGV3YXkgIlByb3RlZ2UgQVBJcyBjb24iCiAgICBrOHNfY2x1c3RlciAtPiBjb250YWluZXJfc2VjdXJpdHkgIkVzY2FuZWEgY29udGVuZWRvcmVzIGNvbiIKICAgIGs4c19jbHVzdGVyIC0+IHJ1bnRpbWVfc2VjdXJpdHkgIk1vbml0b3JlYSBydW50aW1lIGNvbiIKCiAgICAvLyBSZWxhY2lvbmVzIGRlIE1vbml0b3JlbwogICAgazhzX2NsdXN0ZXIgLT4gc2llbSAiQ2VudHJhbGl6YSBsb2dzIGVuIgogICAgazhzX2NsdXN0ZXIgLT4gcHJvbWV0aGV1cyAiTW9uaXRvcmVhIG3DqXRyaWNhcyBjb24iCiAgICBrOHNfY2x1c3RlciAtPiBpZHNfaXBzICJEZXRlY3RhIGludHJ1c2lvbmVzIGNvbiIKCiAgICAvLyBSZWxhY2lvbmVzIGRlIFZ1bG5lcmFiaWxpZGFkZXMKICAgIGs4c19jbHVzdGVyIC0+IHZ1bG5lcmFiaWxpdHlfc2Nhbm5lciAiRXNjYW5lYSB2dWxuZXJhYmlsaWRhZGVzIGNvbiIKICAgIGs4c19jbHVzdGVyIC0+IHNlY3VyaXR5X2Fzc2Vzc21lbnRzICJFdmFsw7phIHNlZ3VyaWRhZCBjb24iCiAgICBrOHNfY2x1c3RlciAtPiBwYXRjaF9tYW5hZ2VtZW50ICJBY3R1YWxpemEgc2VndXJpZGFkIGNvbiIKCiAgICAvLyBSZWxhY2lvbmVzIGRlIEJhY2t1cAogICAgazhzX2NsdXN0ZXIgLT4gdmVsZXJvICJSZWFsaXphIGJhY2t1cCBjb24iCiAgICBrOHNfY2x1c3RlciAtPiBkaXNhc3Rlcl9yZWNvdmVyeSAiR2VzdGlvbmEgcmVjdXBlcmFjacOzbiBjb24iCgogICAgLy8gUmVsYWNpb25lcyBkZSBHb2Jlcm5hbnphCiAgICBrOHNfY2x1c3RlciAtPiBvcGFfZ2F0ZWtlZXBlciAiQXBsaWNhIHBvbMOtdGljYXMgY29uIgogICAgazhzX2NsdXN0ZXIgLT4ga3l2ZXJubyAiQ29udHJvbGEgYWNjZXNvIGNvbiIKICAgIGs4c19jbHVzdGVyIC0+IGF1ZGl0X2xvZ3MgIkF1ZGl0YSBhY2Npb25lcyBlbiIKICB9CgoKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICMjICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZJU1RBUwogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgdmlld3MgewoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMjIFNZU1RFTSBDT05URVhUIFZJRVcKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBzeXN0ZW1Db250ZXh0IHNpc3RlbWEgImNvbnRleHRvX3Npc3RlbWEiIHsKICAgICAgaW5jbHVkZSAqCiAgICB9CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyMgQ09OVEFJTkVSIFZJRVcKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBjb250YWluZXIgc2lzdGVtYSAiY29udGFpbmVyc19zaXN0ZW1hIiB7CiAgICAgIGluY2x1ZGUgKgogICAgfQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMjIFZJU1RBIERFIFNFR1VSSURBRAogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgIHN5c3RlbUxhbmRzY2FwZSAic2VndXJpZGFkX2dsb2JhbCIgewogICAgICB0aXRsZSAiQ2FwYSBkZSBTZWd1cmlkYWQg4oCTIENvbmZvcm1lIGEgSVNPIDI3MDAxIgogICAgICBpbmNsdWRlICoKICAgIH0KCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIyBWSVNUQSBJTkZSQQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgIHN5c3RlbUxhbmRzY2FwZSAiaW5mcmFlc3RydWN0dXJhIiB7CiAgICAgIHRpdGxlICJJbmZyYWVzdHJ1Y3R1cmEgeSBSZWQiCiAgICAgIGluY2x1ZGUgY2xvdWRfcHJvdmlkZXIKICAgICAgaW5jbHVkZSBoYQogICAgICBpbmNsdWRlIG5ldHdvcmsKICAgIH0KCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIyBWSVNUQSBLVUJFUk5FVEVTIFNFR1VSQQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgIHN5c3RlbUxhbmRzY2FwZSAia3ViZXJuZXRlc19zZWd1cm8iIHsKICAgICAgdGl0bGUgIkFycXVpdGVjdHVyYSBkZSBTZWd1cmlkYWQgZW4gRWNvc2lzdGVtYSBLdWJlcm5ldGVzIgogICAgICBpbmNsdWRlIGs4c19jbHVzdGVyCiAgICAgIGluY2x1ZGUga2V5Y2xvYWsKICAgICAgaW5jbHVkZSByYmFjX2s4cwogICAgICBpbmNsdWRlIG9pZGMKICAgICAgaW5jbHVkZSBtZmEKICAgICAgaW5jbHVkZSB2YXVsdAogICAgICBpbmNsdWRlIGVuY3J5cHRpb25fazhzCiAgICAgIGluY2x1ZGUgbmV0d29ya19wb2xpY2llcwogICAgICBpbmNsdWRlIGlzdGlvCiAgICAgIGluY2x1ZGUgaW5ncmVzc19jb250cm9sbGVyCiAgICAgIGluY2x1ZGUgY2FsaWNvCiAgICAgIGluY2x1ZGUgY2xvdWRmbGFyZQogICAgICBpbmNsdWRlIGFwaV9nYXRld2F5CiAgICAgIGluY2x1ZGUgY29udGFpbmVyX3NlY3VyaXR5CiAgICAgIGluY2x1ZGUgcnVudGltZV9zZWN1cml0eQogICAgICBpbmNsdWRlIHNpZW0KICAgICAgaW5jbHVkZSBwcm9tZXRoZXVzCiAgICAgIGluY2x1ZGUgaWRzX2lwcwogICAgICBpbmNsdWRlIHZ1bG5lcmFiaWxpdHlfc2Nhbm5lcgogICAgICBpbmNsdWRlIHNlY3VyaXR5X2Fzc2Vzc21lbnRzCiAgICAgIGluY2x1ZGUgcGF0Y2hfbWFuYWdlbWVudAogICAgICBpbmNsdWRlIHZlbGVybwogICAgICBpbmNsdWRlIGRpc2FzdGVyX3JlY292ZXJ5CiAgICAgIGluY2x1ZGUgb3BhX2dhdGVrZWVwZXIKICAgICAgaW5jbHVkZSBreXZlcm5vCiAgICAgIGluY2x1ZGUgYXVkaXRfbG9ncwogICAgfQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMjIFZJU1RBIFBPUiBDQVBBUyBERSBLVUJFUk5FVEVTCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgc3lzdGVtTGFuZHNjYXBlICJrdWJlcm5ldGVzX3Bvcl9jYXBhcyIgewogICAgICB0aXRsZSAiQXJxdWl0ZWN0dXJhIEt1YmVybmV0ZXMgcG9yIENhcGFzIGRlIFNlZ3VyaWRhZCIKICAgICAgCiAgICAgIC8vIENhcGEgZGUgSWRlbnRpZGFkIHkgQWNjZXNvCiAgICAgIGluY2x1ZGUga2V5Y2xvYWsKICAgICAgaW5jbHVkZSByYmFjX2s4cwogICAgICBpbmNsdWRlIG9pZGMKICAgICAgaW5jbHVkZSBtZmEKICAgICAgCiAgICAgIC8vIENhcGEgZGUgUHJvdGVjY2nDs24gZGUgRGF0b3MKICAgICAgaW5jbHVkZSB2YXVsdAogICAgICBpbmNsdWRlIGVuY3J5cHRpb25fazhzCiAgICAgIGluY2x1ZGUgbmV0d29ya19wb2xpY2llcwogICAgICAKICAgICAgLy8gQ2FwYSBkZSBTZWd1cmlkYWQgZGUgUmVkCiAgICAgIGluY2x1ZGUgaXN0aW8KICAgICAgaW5jbHVkZSBpbmdyZXNzX2NvbnRyb2xsZXIKICAgICAgaW5jbHVkZSBjYWxpY28KICAgICAgaW5jbHVkZSBjbG91ZGZsYXJlCiAgICAgIAogICAgICAvLyBDYXBhIGRlIFNlZ3VyaWRhZCBkZSBBcGxpY2FjaW9uZXMKICAgICAgaW5jbHVkZSBhcGlfZ2F0ZXdheQogICAgICBpbmNsdWRlIGNvbnRhaW5lcl9zZWN1cml0eQogICAgICBpbmNsdWRlIHJ1bnRpbWVfc2VjdXJpdHkKICAgICAgCiAgICAgIC8vIENhcGEgZGUgTW9uaXRvcmVvCiAgICAgIGluY2x1ZGUgc2llbQogICAgICBpbmNsdWRlIHByb21ldGhldXMKICAgICAgaW5jbHVkZSBpZHNfaXBzCiAgICAgIAogICAgICAvLyBDYXBhIGRlIFZ1bG5lcmFiaWxpZGFkZXMKICAgICAgaW5jbHVkZSB2dWxuZXJhYmlsaXR5X3NjYW5uZXIKICAgICAgaW5jbHVkZSBzZWN1cml0eV9hc3Nlc3NtZW50cwogICAgICBpbmNsdWRlIHBhdGNoX21hbmFnZW1lbnQKICAgICAgCiAgICAgIC8vIENhcGEgZGUgQmFja3VwCiAgICAgIGluY2x1ZGUgdmVsZXJvCiAgICAgIGluY2x1ZGUgZGlzYXN0ZXJfcmVjb3ZlcnkKICAgICAgCiAgICAgIC8vIENhcGEgZGUgR29iZXJuYW56YQogICAgICBpbmNsdWRlIG9wYV9nYXRla2VlcGVyCiAgICAgIGluY2x1ZGUga3l2ZXJubwogICAgICBpbmNsdWRlIGF1ZGl0X2xvZ3MKICAgIH0KCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIyBWSVNUQSBESU7DgU1JQ0EgREVWU0VDT1BTIChDT1JSRUdJREEpCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgZHluYW1pYyBkZXZzZWNvcHMgImZsdWpvX2RldnNlY29wcyIgewogICAgICB0aXRsZSAiRmx1am8gRGV2U2VjT3BzIOKAkyBTLVNETEMgU2VndXJvIgoKICAgICAgZGV2IC0+IHJlcG8gIkNvbW1pdCBkZSBjw7NkaWdvIgogICAgICByZXBvIC0+IGNpICJFamVjdXRhIENJIgogICAgICBjaSAtPiBzY2FubmVyICJBbsOhbGlzaXMgU0FTVC9EQVNUL1NDQSIKICAgICAgc2Nhbm5lciAtPiBjaSAiUmV0b3JuYSBoYWxsYXpnb3MiCiAgICAgIGNpIC0+IHJlZ2lzdHJ5ICJDb25zdHJ1eWUgeSBwdWJsaWNhIGFydGVmYWN0byIKICAgICAgcmVnaXN0cnkgLT4gY2QgIkFydGVmYWN0byBkaXNwb25pYmxlIgogICAgICBjaSAtPiBjZCAiVHJpZ2dlciBkZSBkZXNwbGllZ3VlIgogICAgICBjZCAtPiBydW50aW1lICJEZXBsb3ltZW50IgogICAgICBydW50aW1lIC0+IG1vbml0b3JpbmcgIkVudmlhIG3DqXRyaWNhcy9zZWd1cmlkYWQiCiAgICAgIG1vbml0b3JpbmcgLT4gb3BzICJHZW5lcmEgYWxlcnRhIgogICAgfQoKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIyBFU1RJTE9TCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgc3R5bGVzIHsKCiAgICAgIGVsZW1lbnQgIlBlcnNvbiIgewogICAgICAgIHNoYXBlIHBlcnNvbgogICAgICAgIGJhY2tncm91bmQgI2ZmZjdkNgogICAgICAgIGNvbG9yICMwMDAwMDAKICAgICAgfQoKICAgICAgZWxlbWVudCAiQ29udGFpbmVyIiB7CiAgICAgICAgc2hhcGUgcm91bmRlZEJveAogICAgICB9CgogICAgICBlbGVtZW50ICJTb2Z0d2FyZSBTeXN0ZW0iIHsKICAgICAgICBzaGFwZSByb3VuZGVkQm94CiAgICAgIH0KCiAgICAgIGVsZW1lbnQgIlNlY3VyaXR5IiB7CiAgICAgICAgYmFja2dyb3VuZCAjZjNlOGZmCiAgICAgICAgY29sb3IgIzAwMDAwMAogICAgICAgIGJvcmRlciBzb2xpZAogICAgICB9CgogICAgICBlbGVtZW50ICJJbmZyYSIgewogICAgICAgIGJhY2tncm91bmQgI2U3ZjNmZgogICAgICAgIGNvbG9yICMwMDAwMDAKICAgICAgICBib3JkZXIgZGFzaGVkCiAgICAgIH0KCiAgICAgIGVsZW1lbnQgIkt1YmVybmV0ZXMiIHsKICAgICAgICBiYWNrZ3JvdW5kICNkMWY3ZmYKICAgICAgICBjb2xvciAjMDAwMDAwCiAgICAgICAgYm9yZGVyIHNvbGlkCiAgICAgIH0KCiAgICAgIGVsZW1lbnQgIklBTSIgewogICAgICAgIGJhY2tncm91bmQgI2ZmZTRlMQogICAgICAgIGNvbG9yICMwMDAwMDAKICAgICAgfQoKICAgICAgZWxlbWVudCAiRGF0YSBQcm90ZWN0aW9uIiB7CiAgICAgICAgYmFja2dyb3VuZCAjZTZmZmU2CiAgICAgICAgY29sb3IgIzAwMDAwMAogICAgICB9CgogICAgICBlbGVtZW50ICJOZXR3b3JrIFNlY3VyaXR5IiB7CiAgICAgICAgYmFja2dyb3VuZCAjZmZmMGUxCiAgICAgICAgY29sb3IgIzAwMDAwMAogICAgICB9CgogICAgICBlbGVtZW50ICJBcHAgU2VjdXJpdHkiIHsKICAgICAgICBiYWNrZ3JvdW5kICNmMGUxZmYKICAgICAgICBjb2xvciAjMDAwMDAwCiAgICAgIH0KCiAgICAgIGVsZW1lbnQgIk1vbml0b3JpbmciIHsKICAgICAgICBiYWNrZ3JvdW5kICNmZmY4ZTEKICAgICAgICBjb2xvciAjMDAwMDAwCiAgICAgIH0KCiAgICAgIGVsZW1lbnQgIlZ1bG5lcmFiaWxpdHkiIHsKICAgICAgICBiYWNrZ3JvdW5kICNmZmUxZTEKICAgICAgICBjb2xvciAjMDAwMDAwCiAgICAgIH0KCiAgICAgIGVsZW1lbnQgIkJhY2t1cCIgewogICAgICAgIGJhY2tncm91bmQgI2UxZjBmZgogICAgICAgIGNvbG9yICMwMDAwMDAKICAgICAgfQoKICAgICAgZWxlbWVudCAiR292ZXJuYW5jZSIgewogICAgICAgIGJhY2tncm91bmQgI2YwZmZlMQogICAgICAgIGNvbG9yICMwMDAwMDAKICAgICAgfQoKICAgICAgcmVsYXRpb25zaGlwICJGaWx0cmFkbyBwb3IiIHsKICAgICAgICBjb2xvciAjNTU1NTU1CiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiUHJvdGVnaWRvIHBvciIgewogICAgICAgIGNvbG9yICM1NTU1NTUKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJCYWxhbmNlYWRvIHBvciIgewogICAgICAgIGNvbG9yICM1NTU1NTUKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJBdXRlbnRpY2EgbWVkaWFudGUiIHsKICAgICAgICBjb2xvciAjNTU1NTU1CiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiQ29udHJvbGFkbyBtZWRpYW50ZSIgewogICAgICAgIGNvbG9yICM1NTU1NTUKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJDaWZyYSBkYXRvcyBjb24iIHsKICAgICAgICBjb2xvciAjNTU1NTU1CiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiVmVyaWZpY2EgaW50ZWdyaWRhZCBjb24iIHsKICAgICAgICBjb2xvciAjNTU1NTU1CiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiR2VuZXJhIGxvZ3MgaGFjaWEiIHsKICAgICAgICBjb2xvciAjNTU1NTU1CiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiQW5hbGl6YWRvIHBvciIgewogICAgICAgIGNvbG9yICM1NTU1NTUKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJQcm9wb3JjaW9uYSByZWR1bmRhbmNpYSIgewogICAgICAgIGNvbG9yICM1NTU1NTUKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJQcm9wb3JjaW9uYSByZWQgc2VndXJhIiB7CiAgICAgICAgY29sb3IgIzU1NTU1NQogICAgICB9CiAgICAgIAogICAgICByZWxhdGlvbnNoaXAgIkNvbW1pdCBkZSBjw7NkaWdvIiB7CiAgICAgICAgY29sb3IgIzU1NTU1NQogICAgICB9CiAgICAgIAogICAgICByZWxhdGlvbnNoaXAgIkVqZWN1dGEgQ0kiIHsKICAgICAgICBjb2xvciAjNTU1NTU1CiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiQW7DoWxpc2lzIFNBU1QvREFTVC9TQ0EiIHsKICAgICAgICBjb2xvciAjNTU1NTU1CiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiUmV0b3JuYSBoYWxsYXpnb3MiIHsKICAgICAgICBjb2xvciAjNTU1NTU1CiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiQ29uc3RydXllIHkgcHVibGljYSBhcnRlZmFjdG8iIHsKICAgICAgICBjb2xvciAjNTU1NTU1CiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiQXJ0ZWZhY3RvIGRpc3BvbmlibGUiIHsKICAgICAgICBjb2xvciAjNTU1NTU1CiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiVHJpZ2dlciBkZSBkZXNwbGllZ3VlIiB7CiAgICAgICAgY29sb3IgIzU1NTU1NQogICAgICB9CiAgICAgIAogICAgICByZWxhdGlvbnNoaXAgIkRlcGxveW1lbnQiIHsKICAgICAgICBjb2xvciAjNTU1NTU1CiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiRW52aWEgbcOpdHJpY2FzL3NlZ3VyaWRhZCIgewogICAgICAgIGNvbG9yICM1NTU1NTUKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJHZW5lcmEgYWxlcnRhIiB7CiAgICAgICAgY29sb3IgIzU1NTU1NQogICAgICB9CiAgICAgIAogICAgICByZWxhdGlvbnNoaXAgIkltcGxlbWVudGEgaWRlbnRpZGFkIGNvbiIgewogICAgICAgIGNvbG9yICMwMDY2Y2MKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJHZXN0aW9uYSBhY2Nlc28gbWVkaWFudGUiIHsKICAgICAgICBjb2xvciAjMDA2NmNjCiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiSW50ZWdyYSBhdXRlbnRpY2FjacOzbiBjb24iIHsKICAgICAgICBjb2xvciAjMDA2NmNjCiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiUHJvdGVnZSBhY2Nlc28gY29uIiB7CiAgICAgICAgY29sb3IgIzAwNjZjYwogICAgICB9CiAgICAgIAogICAgICByZWxhdGlvbnNoaXAgIkdlc3Rpb25hIHNlY3JldG9zIGNvbiIgewogICAgICAgIGNvbG9yICMwMDk5MDAKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJDaWZyYSBkYXRvcyBjb24iIHsKICAgICAgICBjb2xvciAjMDA5OTAwCiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiQ29udHJvbGEgdHLDoWZpY28gY29uIiB7CiAgICAgICAgY29sb3IgIzAwOTkwMAogICAgICB9CiAgICAgIAogICAgICByZWxhdGlvbnNoaXAgIkltcGxlbWVudGEgWmVybyBUcnVzdCBjb24iIHsKICAgICAgICBjb2xvciAjY2M2NjAwCiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiUHJvdGVnZSB0csOhZmljbyBjb24iIHsKICAgICAgICBjb2xvciAjY2M2NjAwCiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiQXBsaWNhIHBvbMOtdGljYXMgY29uIiB7CiAgICAgICAgY29sb3IgI2NjNjYwMAogICAgICB9CiAgICAgIAogICAgICByZWxhdGlvbnNoaXAgIlByb3RlZ2UgRERvUyBjb24iIHsKICAgICAgICBjb2xvciAjY2M2NjAwCiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiUHJvdGVnZSBBUElzIGNvbiIgewogICAgICAgIGNvbG9yICM5OTAwY2MKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJFc2NhbmVhIGNvbnRlbmVkb3JlcyBjb24iIHsKICAgICAgICBjb2xvciAjOTkwMGNjCiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiTW9uaXRvcmVhIHJ1bnRpbWUgY29uIiB7CiAgICAgICAgY29sb3IgIzk5MDBjYwogICAgICB9CiAgICAgIAogICAgICByZWxhdGlvbnNoaXAgIkNlbnRyYWxpemEgbG9ncyBlbiIgewogICAgICAgIGNvbG9yICNjYzAwNjYKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJNb25pdG9yZWEgbcOpdHJpY2FzIGNvbiIgewogICAgICAgIGNvbG9yICNjYzAwNjYKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJEZXRlY3RhIGludHJ1c2lvbmVzIGNvbiIgewogICAgICAgIGNvbG9yICNjYzAwNjYKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJFc2NhbmVhIHZ1bG5lcmFiaWxpZGFkZXMgY29uIiB7CiAgICAgICAgY29sb3IgI2ZmNjYwMAogICAgICB9CiAgICAgIAogICAgICByZWxhdGlvbnNoaXAgIkV2YWzDumEgc2VndXJpZGFkIGNvbiIgewogICAgICAgIGNvbG9yICNmZjY2MDAKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJBY3R1YWxpemEgc2VndXJpZGFkIGNvbiIgewogICAgICAgIGNvbG9yICNmZjY2MDAKICAgICAgfQogICAgICAKICAgICAgcmVsYXRpb25zaGlwICJSZWFsaXphIGJhY2t1cCBjb24iIHsKICAgICAgICBjb2xvciAjMDA2NmZmCiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiR2VzdGlvbmEgcmVjdXBlcmFjacOzbiBjb24iIHsKICAgICAgICBjb2xvciAjMDA2NmZmCiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiQXBsaWNhIHBvbMOtdGljYXMgY29uIiB7CiAgICAgICAgY29sb3IgIzY2MDBmZgogICAgICB9CiAgICAgIAogICAgICByZWxhdGlvbnNoaXAgIkNvbnRyb2xhIGFjY2VzbyBjb24iIHsKICAgICAgICBjb2xvciAjNjYwMGZmCiAgICAgIH0KICAgICAgCiAgICAgIHJlbGF0aW9uc2hpcCAiQXVkaXRhIGFjY2lvbmVzIGVuIiB7CiAgICAgICAgY29sb3IgIzY2MDBmZgogICAgICB9CiAgICB9CiAgfQp9Cg=="},"views":{"configuration":{"branding":{},"lastSavedView":"kubernetes_seguro","metadataSymbols":"SquareBrackets","styles":{"elements":[{"background":"#f0e1ff","color":"#000000","tag":"App Security"},{"background":"#e1f0ff","color":"#000000","tag":"Backup"},{"shape":"RoundedBox","tag":"Container"},{"background":"#e6ffe6","color":"#000000","tag":"Data Protection"},{"background":"#f0ffe1","color":"#000000","tag":"Governance"},{"background":"#ffe4e1","color":"#000000","tag":"IAM"},{"background":"#e7f3ff","border":"Dashed","color":"#000000","tag":"Infra"},{"background":"#d1f7ff","border":"Solid","color":"#000000","tag":"Kubernetes"},{"background":"#fff8e1","color":"#000000","tag":"Monitoring"},{"background":"#fff0e1","color":"#000000","tag":"Network Security"},{"background":"#fff7d6","color":"#000000","shape":"Person","tag":"Person"},{"background":"#f3e8ff","border":"Solid","color":"#000000","tag":"Security"},{"shape":"RoundedBox","tag":"Software System"},{"background":"#ffe1e1","color":"#000000","tag":"Vulnerability"}],"relationships":[{"color":"#ff6600","tag":"Actualiza seguridad con"},{"color":"#555555","tag":"Análisis SAST/DAST/SCA"},{"color":"#555555","tag":"Analizado por"},{"color":"#6600ff","tag":"Aplica políticas con"},{"color":"#555555","tag":"Artefacto disponible"},{"color":"#6600ff","tag":"Audita acciones en"},{"color":"#555555","tag":"Autentica mediante"},{"color":"#555555","tag":"Balanceado por"},{"color":"#cc0066","tag":"Centraliza logs en"},{"color":"#009900","tag":"Cifra datos con"},{"color":"#555555","tag":"Commit de código"},{"color":"#555555","tag":"Construye y publica artefacto"},{"color":"#6600ff","tag":"Controla acceso con"},{"color":"#009900","tag":"Controla tráfico con"},{"color":"#555555","tag":"Controlado mediante"},{"color":"#555555","tag":"Deployment"},{"color":"#cc0066","tag":"Detecta intrusiones con"},{"color":"#555555","tag":"Ejecuta CI"},{"color":"#555555","tag":"Envia métricas/seguridad"},{"color":"#9900cc","tag":"Escanea contenedores con"},{"color":"#ff6600","tag":"Escanea vulnerabilidades con"},{"color":"#ff6600","tag":"Evalúa seguridad con"},{"color":"#555555","tag":"Filtrado por"},{"color":"#555555","tag":"Genera alerta"},{"color":"#555555","tag":"Genera logs hacia"},{"color":"#0066cc","tag":"Gestiona acceso mediante"},{"color":"#0066ff","tag":"Gestiona recuperación con"},{"color":"#009900","tag":"Gestiona secretos con"},{"color":"#0066cc","tag":"Implementa identidad con"},{"color":"#cc6600","tag":"Implementa Zero Trust con"},{"color":"#0066cc","tag":"Integra autenticación con"},{"color":"#cc0066","tag":"Monitorea métricas con"},{"color":"#9900cc","tag":"Monitorea runtime con"},{"color":"#555555","tag":"Proporciona red segura"},{"color":"#555555","tag":"Proporciona redundancia"},{"color":"#0066cc","tag":"Protege acceso con"},{"color":"#9900cc","tag":"Protege APIs con"},{"color":"#cc6600","tag":"Protege DDoS con"},{"color":"#cc6600","tag":"Protege tráfico con"},{"color":"#555555","tag":"Protegido por"},{"color":"#0066ff","tag":"Realiza backup con"},{"color":"#555555","tag":"Retorna hallazgos"},{"color":"#555555","tag":"Trigger de despliegue"},{"color":"#555555","tag":"Verifica integridad con"}]},"terminology":{}},"containerViews":[{"dimensions":{"height":1735,"width":3609},"elements":[{"id":"1","x":200,"y":554},{"id":"5","x":749,"y":599},{"id":"6","x":1924,"y":599},{"id":"7","x":2939,"y":599},{"id":"12","x":758,"y":159},{"id":"13","x":1479,"y":159},{"id":"14","x":755,"y":1194},{"id":"15","x":1305,"y":1194},{"id":"16","x":1855,"y":1194},{"id":"17","x":2405,"y":1194},{"id":"18","x":2955,"y":1194},{"id":"19","x":2200,"y":159},{"id":"21","x":2923,"y":159}],"externalSoftwareSystemBoundariesVisible":false,"key":"containers_sistema","name":"Container View: Arquitectura Principal","order":2,"relationships":[{"id":"10"},{"id":"11"},{"id":"25"},{"id":"27"},{"id":"29"},{"id":"31"},{"id":"33"},{"id":"35"},{"id":"37"},{"id":"39","vertices":[{"x":2305,"y":509}]},{"id":"41","vertices":[{"x":2820,"y":454}]},{"id":"8"}],"softwareSystemId":"4"}],"dynamicViews":[{"dimensions":{"height":2884,"width":1706},"elementId":"45","elements":[{"id":"2","x":305,"y":389},{"id":"3","x":236,"y":2169},{"id":"21","x":200,"y":984},{"id":"46","x":1031,"y":179},{"id":"47","x":1036,"y":584},{"id":"48","x":884,"y":1423},{"id":"49","x":1035,"y":991},{"id":"50","x":886,"y":1809},{"id":"51","x":881,"y":2244}],"externalBoundariesVisible":false,"key":"flujo_devsecops","name":"Dynamic View: DevSecOps Pipeline","order":7,"relationships":[{"description":"Commit de código","id":"52","order":"1","response":false},{"description":"Ejecuta CI","id":"54","order":"2","response":false},{"description":"Análisis SAST/DAST/SCA","id":"55","order":"3","response":false,"vertices":[{"x":845,"y":904}]},{"description":"Retorna hallazgos","id":"57","order":"4","response":false,"vertices":[{"x":795,"y":804}]},{"description":"Construye y publica artefacto","id":"59","order":"5","response":false},{"description":"Artefacto disponible","id":"60","order":"6","response":false},{"description":"Trigger de despliegue","id":"61","order":"7","response":false,"vertices":[{"x":885,"y":991},{"x":885,"y":1291}]},{"description":"Deployment","id":"62","order":"8","response":false},{"description":"Envia métricas/seguridad","id":"63","order":"9","response":false},{"description":"Genera alerta","id":"64","order":"10","response":false}],"title":"Flujo DevSecOps – S-SDLC Seguro"}],"systemContextViews":[{"dimensions":{"height":1408,"width":5250},"elements":[{"id":"1","x":1590,"y":160},{"id":"4","x":2410,"y":200},{"id":"12","x":200,"y":868},{"id":"13","x":750,"y":868},{"id":"14","x":1300,"y":868},{"id":"15","x":1850,"y":868},{"id":"16","x":2400,"y":868},{"id":"17","x":2950,"y":868},{"id":"18","x":3500,"y":868},{"id":"19","x":4050,"y":868},{"id":"21","x":4600,"y":868}],"enterpriseBoundaryVisible":true,"key":"contexto_sistema","name":"System Context View: Arquitectura Principal","order":1,"relationships":[{"id":"26"},{"id":"28"},{"id":"30"},{"id":"32"},{"id":"34"},{"id":"36"},{"id":"38"},{"id":"40"},{"id":"42"},{"id":"9"}],"softwareSystemId":"4"}],"systemLandscapeViews":[{"dimensions":{"height":4003,"width":6451},"elements":[{"id":"1","x":3075,"y":2300},{"id":"2","x":4390,"y":2695},{"id":"3","x":5830,"y":2675},{"id":"4","x":3065,"y":2820},{"id":"12","x":796,"y":3463},{"id":"13","x":1352,"y":3463},{"id":"14","x":1908,"y":3463},{"id":"15","x":2464,"y":3463},{"id":"16","x":3020,"y":3463},{"id":"17","x":3576,"y":3463},{"id":"18","x":4132,"y":3463},{"id":"19","x":4688,"y":3463},{"id":"20","x":240,"y":3463},{"id":"21","x":5248,"y":3463},{"id":"22","x":200,"y":2709},{"id":"23","x":880,"y":2330},{"id":"24","x":890,"y":3005},{"id":"45","x":5000,"y":2725},{"id":"66","x":2990,"y":1025},{"id":"67","x":380,"y":180},{"id":"68","x":1109,"y":180},{"id":"69","x":1838,"y":180},{"id":"70","x":2567,"y":180},{"id":"71","x":380,"y":565},{"id":"72","x":380,"y":1005},{"id":"73","x":380,"y":1445},{"id":"74","x":380,"y":1815},{"id":"75","x":921,"y":1815},{"id":"76","x":1462,"y":1815},{"id":"77","x":2003,"y":1815},{"id":"78","x":2544,"y":1815},{"id":"79","x":3085,"y":1815},{"id":"80","x":3626,"y":1815},{"id":"81","x":4167,"y":1815},{"id":"82","x":4708,"y":1815},{"id":"83","x":5251,"y":1815},{"id":"84","x":5801,"y":1815},{"id":"85","x":5800,"y":1399},{"id":"86","x":5800,"y":986},{"id":"87","x":5800,"y":573},{"id":"88","x":5800,"y":160},{"id":"89","x":4754,"y":180},{"id":"90","x":4025,"y":180},{"id":"91","x":3296,"y":180}],"enterpriseBoundaryVisible":true,"key":"seguridad_global","name":"System Landscape View","order":3,"relationships":[{"id":"100"},{"id":"101"},{"id":"102"},{"id":"103"},{"id":"104"},{"id":"105"},{"id":"106"},{"id":"107"},{"id":"108"},{"id":"109"},{"id":"110"},{"id":"111"},{"id":"112"},{"id":"113"},{"id":"114"},{"id":"115","vertices":[{"x":3876,"y":705}]},{"id":"116","vertices":[{"x":3431,"y":715}]},{"id":"26","vertices":[{"x":2154,"y":3292}]},{"id":"28","vertices":[{"x":2471,"y":3292}]},{"id":"30"},{"id":"32"},{"id":"34"},{"id":"36"},{"id":"38"},{"id":"40"},{"id":"42"},{"id":"43"},{"id":"44"},{"id":"53"},{"id":"56","vertices":[{"x":5455,"y":3240}]},{"id":"58","vertices":[{"x":5140,"y":3290}]},{"id":"65"},{"id":"9"},{"id":"92"},{"id":"93","vertices":[{"x":1756,"y":585}]},{"id":"94","vertices":[{"x":2511,"y":685}]},{"id":"95","vertices":[{"x":3030,"y":810}]},{"id":"96"},{"id":"97"},{"id":"98"},{"id":"99"}],"title":"Capa de Seguridad – Conforme a ISO 27001"},{"dimensions":{"height":1300,"width":1600},"elements":[{"id":"22","x":208,"y":508},{"id":"23","x":958,"y":208},{"id":"24","x":958,"y":808}],"enterpriseBoundaryVisible":true,"key":"infraestructura","name":"System Landscape View","order":4,"relationships":[{"id":"43"},{"id":"44"}],"title":"Infraestructura y Red"},{"dimensions":{"height":2425,"width":5825},"elements":[{"id":"66","x":2610,"y":1035},{"id":"67","x":239,"y":159},{"id":"68","x":789,"y":159},{"id":"69","x":1339,"y":159},{"id":"70","x":1889,"y":159},{"id":"71","x":235,"y":605},{"id":"72","x":235,"y":1042},{"id":"73","x":235,"y":1480},{"id":"74","x":224,"y":1884},{"id":"75","x":774,"y":1884},{"id":"76","x":1324,"y":1884},{"id":"77","x":1874,"y":1884},{"id":"78","x":2424,"y":1884},{"id":"79","x":2974,"y":1884},{"id":"80","x":3524,"y":1884},{"id":"81","x":4074,"y":1884},{"id":"82","x":4624,"y":1884},{"id":"83","x":5174,"y":1884},{"id":"84","x":5165,"y":1453},{"id":"85","x":5165,"y":1035},{"id":"86","x":5165,"y":618},{"id":"87","x":4654,"y":159},{"id":"88","x":5166,"y":159},{"id":"89","x":2979,"y":169},{"id":"90","x":3529,"y":169},{"id":"91","x":4079,"y":169}],"enterpriseBoundaryVisible":true,"key":"kubernetes_seguro","name":"System Landscape View","order":5,"relationships":[{"id":"100"},{"id":"101"},{"id":"102"},{"id":"103"},{"id":"104"},{"id":"105"},{"id":"106"},{"id":"107"},{"id":"108"},{"id":"109"},{"id":"110"},{"id":"111"},{"id":"112"},{"id":"113"},{"id":"114"},{"id":"115"},{"id":"116"},{"id":"92"},{"id":"93"},{"id":"94"},{"id":"95"},{"id":"96"},{"id":"97","vertices":[{"x":1074,"y":1193}]},{"id":"98"},{"id":"99"}],"title":"Arquitectura de Seguridad en Ecosistema Kubernetes"},{"dimensions":{"height":1835,"width":4165},"elements":[{"id":"67","x":199,"y":175},{"id":"68","x":749,"y":175},{"id":"69","x":1299,"y":175},{"id":"70","x":1849,"y":175},{"id":"71","x":759,"y":575},{"id":"72","x":1309,"y":575},{"id":"73","x":1859,"y":575},{"id":"74","x":209,"y":955},{"id":"75","x":759,"y":955},{"id":"76","x":1309,"y":955},{"id":"77","x":1859,"y":955},{"id":"78","x":759,"y":1295},{"id":"79","x":1309,"y":1295},{"id":"80","x":1859,"y":1295},{"id":"81","x":2414,"y":1295},{"id":"82","x":2964,"y":1295},{"id":"83","x":3514,"y":1295},{"id":"84","x":2414,"y":175},{"id":"85","x":2964,"y":175},{"id":"86","x":3514,"y":175},{"id":"87","x":2392,"y":575},{"id":"88","x":2942,"y":575},{"id":"89","x":2414,"y":955},{"id":"90","x":2964,"y":955},{"id":"91","x":3514,"y":955}],"enterpriseBoundaryVisible":true,"key":"kubernetes_por_capas","name":"System Landscape View","order":6,"title":"Arquitectura Kubernetes por Capas de Seguridad"}]}}