CINXE.COM

NETrolyze: A Novel Immunotherapy for Triple-Negative Breast Cancer

<!DOCTYPE html> <html lang="en"> <head> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- OneTrust Cookies Consent Notice start for contest.techbriefs.com --> <script src="https://cdn-ukwest.onetrust.com/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="64457799-0d46-4cbd-b1bc-b931e8f8df9a" tb-donotmove></script> <script type="text/javascript" tb-donotmove> function OptanonWrapper() { } </script> <!-- OneTrust Cookies Consent Notice end for contest.techbriefs.com --> <link rel="preconnect" href="https://cdnjs.cloudflare.com/"> <link rel="preconnect" href="https://fonts.gstatic.com/"> <link rel="preconnect" href="https://fonts.googleapis.com/"> <link rel="preconnect" href="https://res.cloudinary.com/"> <link rel="preconnect" href="https://kit.fontawesome.com/"> <link rel="preconnect" href="https://kit-pro.fontawesome.com/"> <link rel="preconnect" href="https://www.googletagmanager.com/"> <link rel="preconnect" href="https://www.googletagservices.com/"> <link rel="preconnect" href="https://www.google-analytics.com/"> <link rel="preconnect" href="https://cdn.shareaholic.net"> <link rel="preconnect" href="https://olytics.omeda.com"> <link rel="preconnect" href="https://securepubads.g.doubleclick.net/"> <link rel="preconnect" href="https://px.ads.linkedin.com"> <link rel="preconnect" href="https://snap.licdn.com"> <link rel="preconnect" href="https://cdn-ukwest.onetrust.com"> <link rel="preconnect" href="https://agent.extrawatch.com"> <link rel="preload" as="style" href="/templates/ctf_2019/css/template.min.css?t=1716788610" integrity="sha512-F9gZzNqGLMtFzYq2oxq8kTyzLIjCuSsA2lb2mTTPvqkKnEZ0oqTEpujAJ5zywetxQT4izs4tIjAWmpw/QYCXPQ==" crossorigin="anonymous" referrerpolicy="no-referrer"/> <link rel="preload" as="script" href="https://cdnjs.cloudflare.com/ajax/libs/cloudinary-core/2.13.1/cloudinary-core-shrinkwrap.min.js" integrity="sha512-stp48jOOmT4TXnB4bMJ0rlcR7XagE92cqr7pEb+oFQox6qNSyKiN31GajDsg5VVn+HgM5mhOZinSRXowsRmgPg==" crossorigin="anonymous" referrerpolicy="no-referrer"/> <link rel="preload" as="script" href="https://kit.fontawesome.com/796c614b26.js" crossorigin="anonymous" referrerpolicy="no-referrer"/> <link rel="preload" as="script" href="https://cdnjs.cloudflare.com/ajax/libs/masonry/4.2.2/masonry.pkgd.min.js" integrity="sha512-JRlcvSZAXT8+5SQQAvklXGJuxXTouyq8oIMaYERZQasB8SBDHZaUbeASsJWpk0UUrf89DP3/aefPPrlMR1h1yQ==" crossorigin="anonymous" referrerpolicy="no-referrer"/> <link rel="preload" as="script" href="https://cdnjs.cloudflare.com/ajax/libs/lazysizes/5.3.2/lazysizes.min.js" integrity="sha512-q583ppKrCRc7N5O0n2nzUiJ+suUv7Et1JGels4bXOaMFQcamPk9HjdUknZuuFjBNs7tsMuadge5k9RzdmO+1GQ==" crossorigin="anonymous" referrerpolicy="no-referrer"/> <link rel="preload" as="script" href="https://cdnjs.cloudflare.com/ajax/libs/lazysizes/5.3.2/plugins/print/ls.print.min.js" integrity="sha512-tY3D/iSWSdQE2NSLW/mRWQd/bvHAGjyCLRwSd23sqNbbgVnUaah2t+ZpX7hdBOskZ7PqYvwe4E+qxNARGojJGQ==" crossorigin="anonymous" referrerpolicy="no-referrer"/> <link rel="preload" as="script" href="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"/> <link rel="preload" as="script" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.3/js/bootstrap.bundle.min.js" integrity="sha512-i9cEfJwUwViEPFKdC1enz4ZRGBj8YQo6QByFTF92YXHi7waCqyexvRD75S5NVTsSiTv7rKWqG9Y5eFxmRsOn0A==" crossorigin="anonymous" referrerpolicy="no-referrer"/> <link rel="preload" as="script" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/11.14.5/sweetalert2.all.min.js" integrity="sha512-m4zOGknNg3h+mK09EizkXi9Nf7B3zwsN9ow+YkYIPZoA6iX2vSzLezg4FnW0Q6Z1CPaJdwgUFQ3WSAUC4E/5Hg==" crossorigin="anonymous" referrerpolicy="no-referrer"/> <link rel="preload" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.14.0-beta3/css/bootstrap-select.min.css" integrity="sha512-g2SduJKxa4Lbn3GW+Q7rNz+pKP9AWMR++Ta8fgwsZRCUsawjPvF/BxSMkGS61VsR9yinGoEgrHPGPn2mrj8+4w==" crossorigin="anonymous" referrerpolicy="no-referrer"/> <link rel="preload" as="script" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.14.0-beta3/js/bootstrap-select.min.js" integrity="sha512-yrOmjPdp8qH8hgLfWpSFhC/+R9Cj9USL8uJxYIveJZGAiedxyIxwNw4RsLDlcjNlIRR4kkHaDHSmNHAkxFTmgg==" crossorigin="anonymous" referrerpolicy="no-referrer"/> <meta charset="utf-8"> <meta name="robots" content="index, follow"> <meta name="author" content="Sam Currier"> <meta name="keywords" content="Tech Briefs, Design Engineering, Technology Transfer, electronics, semiconductors, ICs, sensors, test &amp; measurement, data acquisition, photonics, materials, computer software, mechanics, mechanical components, machinery, automation, manufacturing, fabrication, prototyping, mathematics, information sciences, life sciences, motion control, imaging"> <meta name="description" content="The Create the Future Design Contest was launched in 2002 by the publishers of NASA Tech Briefs magazine to help stimulate and reward engineering innovation. Th"> <title>NETrolyze: A Novel Immunotherapy for Triple-Negative Breast Cancer</title> <link href="https://contest.techbriefs.com/2024/entries/medical/12814" rel="canonical"> <style> /*! inlined from /media/plg_system_webauthn/css/button.min.css by ntb_minifier */ @charset "UTF-8"; button[class*="plg_system_webauthn_login_button"] { max-height: 3rem; padding: .25rem; } button[class*="plg_system_webauthn_login_button"] span[class*="icon"] { text-align: center; vertical-align: sub; width: 1em; font-size: 1.25em; display: inline-block; } button[class*="plg_system_webauthn_login_button"] img[class*="icon"] { text-align: center; vertical-align: middle; height: 2.5rem; padding: 0 .25em 2px; font-size: 1.5em; display: inline-block; } button[class*="plg_system_webauthn_login_button"] span[class*="icon"]:not(:last-child) { margin-inline-end: .5em; } /* end /media/plg_system_webauthn/css/button.min.css */ </style> <style>/** * Critical CSS created by criticalcss.com * file: /css/critical/article-entry.css' * createdAt : 2024-05-27T05:46:40.000Z * resultStatus : GOOD * originalSize : 559615 * size : 0 * validationStatus : GOOD */ @charset "UTF-8";#startOfPage{visibility:hidden}@font-face{font-family:Cabin;font-style:normal;font-weight:400;font-stretch:normal;font-display:swap;src:url(https://fonts.gstatic.com/s/cabin/v27/u-4X0qWljRw-PfU81xCKCpdpbgZJl6XFpfEd7eA9BIxxkV2EH7ilwg.ttf) format('truetype')}@font-face{font-family:Cabin;font-style:normal;font-weight:700;font-stretch:normal;font-display:swap;src:url(https://fonts.gstatic.com/s/cabin/v27/u-4X0qWljRw-PfU81xCKCpdpbgZJl6XFpfEd7eA9BIxxkbqDH7ilwg.ttf) format('truetype')}@font-face{font-family:'Exo 2';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/exo2/v21/7cH1v4okm5zmbvwkAx_sfcEuiD8jvvKsN9C6.ttf) format('truetype')}@font-face{font-family:'Exo 2';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/exo2/v21/7cH1v4okm5zmbvwkAx_sfcEuiD8jYPWsN9C6.ttf) format('truetype')}:root{--bs-blue:#144c89;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#b9519f;--bs-red:#ec1f27;--bs-orange:#f79420;--bs-yellow:#f3ec19;--bs-green:#69bd45;--bs-teal:#6ecddd;--bs-cyan:#00abe9;--bs-white:#ffffff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-inverse:#000000;--bs-navbar:#adb5bd;--bs-navitem:#ffffff;--bs-primary-light:#144c89;--bs-error:#ec1f27;--bs-primary:#144c89;--bs-secondary:#00abe9;--bs-success:#69bd45;--bs-info:#00abe9;--bs-warning:#f3ec19;--bs-danger:#ec1f27;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-inverse-rgb:0,0,0;--bs-navbar-rgb:173,181,189;--bs-navitem-rgb:255,255,255;--bs-primary-light-rgb:20,76,137;--bs-error-rgb:236,31,39;--bs-primary-rgb:20,76,137;--bs-secondary-rgb:0,171,233;--bs-success-rgb:105,189,69;--bs-info-rgb:0,171,233;--bs-warning-rgb:243,236,25;--bs-danger-rgb:236,31,39;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:"Cabin",sans-serif;--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:Cabin,sans-serif;--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#ffffff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.25rem;--bs-border-radius-sm:0.2rem;--bs-border-radius-lg:0.3rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#144c89;--bs-link-hover-color:#0a2746;--bs-code-color:#b9519f;--bs-highlight-bg:#fdfbd1}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid #495057;opacity:.25}h2,h3,h4,h5{margin-top:0;margin-bottom:.5rem;font-family:"Exo 2",sans-serif;font-weight:600;line-height:1.2}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}p{margin-top:0}ol,ul{padding-left:2rem;margin-top:0}ol,p,ul{margin-bottom:1rem}b{font-weight:bolder}a{color:var(--bs-link-color);text-decoration:none}a:not([href]):not([class]){color:inherit;text-decoration:none}img,svg{vertical-align:middle}button{border-radius:0;text-transform:none}button,input{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}[type=button],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{padding:0;border-style:none}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}iframe{border:0}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}img{max-width:100%;height:auto}.container,.container-fluid,.container-xl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-xl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-.5*var(--bs-gutter-x));margin-left:calc(-.5*var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.col-2{flex:0 0 auto;width:16.66666667%}.col-4{flex:0 0 auto;width:33.33333333%}.col-6{flex:0 0 auto;width:50%}.col-8{flex:0 0 auto;width:66.66666667%}.offset-2{margin-left:16.66666667%}@media (min-width:576px){.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}}@media (min-width:768px){.col-md-1,.col-md-2{flex:0 0 auto;width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-7{flex:0 0 auto;width:58.33333333%}}@media (min-width:992px){.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}}@media (min-width:1200px){.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-4{flex:0 0 auto;width:33.33333333%}}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group .btn{position:relative;z-index:2}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.btn{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:#212529;--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:0.25rem;--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);text-align:center;vertical-align:middle;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-image:var(--bs-gradient)}.btn-primary{--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-color:#ffffff;--bs-btn-bg:#144c89;--bs-btn-border-color:#144c89;--bs-btn-hover-color:#ffffff;--bs-btn-hover-bg:#114174;--bs-btn-hover-border-color:#103d6e;--bs-btn-focus-shadow-rgb:55,103,155;--bs-btn-active-color:#ffffff;--bs-btn-active-bg:#103d6e;--bs-btn-active-border-color:#0f3967;--bs-btn-disabled-color:#ffffff;--bs-btn-disabled-bg:#144c89;--bs-btn-disabled-border-color:#144c89}.btn-secondary{--bs-btn-color:#000000;--bs-btn-bg:#00abe9;--bs-btn-border-color:#00abe9;--bs-btn-hover-color:#000000;--bs-btn-hover-bg:#26b8ec;--bs-btn-hover-border-color:#1ab3eb;--bs-btn-focus-shadow-rgb:0,145,198;--bs-btn-active-color:#000000;--bs-btn-active-bg:#33bced;--bs-btn-active-border-color:#1ab3eb;--bs-btn-disabled-color:#000000;--bs-btn-disabled-bg:#00abe9;--bs-btn-disabled-border-color:#00abe9;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125)}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.nav{--bs-nav-link-padding-x:0.7rem;--bs-nav-link-padding-y:0.7rem;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:#6c757d;display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color)}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(0, 0, 0, 0.55);--bs-navbar-hover-color:rgba(0, 0, 0, 0.7);--bs-navbar-disabled-color:rgba(0, 0, 0, 0.3);--bs-navbar-active-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-padding-y:0.25rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-hover-color:rgba(0, 0, 0, 0.9);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(0, 0, 0, 0.1);--bs-navbar-toggler-border-radius:0.25rem;--bs-navbar-toggler-focus-width:0.25rem;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);background-image:var(--bs-gradient)}.navbar>.container-xl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.7rem;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius)}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}.navbar-dark{--bs-navbar-color:rgba(255, 255, 255, 0.85);--bs-navbar-hover-color:rgba(255, 255, 255, 0.5);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#ffffff;--bs-navbar-brand-color:#ffffff;--bs-navbar-brand-hover-color:#ffffff;--bs-navbar-toggler-border-color:transparent;--bs-navbar-toggler-icon-bg:none}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-border-width:1px;--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:0.25rem;--bs-card-inner-border-radius:calc(0.25rem - 1px);--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(0, 0, 0, 0.03);--bs-card-bg:#ffffff;--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.breadcrumb{display:flex;list-style:none;--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0.5rem;--bs-breadcrumb-margin-bottom:0;--bs-breadcrumb-font-size:0.875rem;--bs-breadcrumb-bg:transparent;--bs-breadcrumb-divider-color:#adb5bd;--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:#adb5bd;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "|")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#ffffff;--bs-badge-border-radius:0.25rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius);background-image:var(--bs-gradient)}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:1px solid var(--bs-alert-border-color);--bs-alert-border-radius:0.25rem;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-inverse{--bs-alert-color:black;--bs-alert-bg:#cccccc;--bs-alert-border-color:#b3b3b3}.alert-inverse .alert-link{color:#000}.alert-inverse,.alert-navbar,.alert-navitem{background-image:var(--bs-gradient)}.alert-navbar{--bs-alert-color:#686d71;--bs-alert-bg:#eff0f2;--bs-alert-border-color:#e6e9eb}.alert-navbar .alert-link{color:#53575a}.alert-navitem{--bs-alert-color:#666666;--bs-alert-bg:white;--bs-alert-border-color:white}.alert-navitem .alert-link{color:#525252}.alert-cdnjs,.alert-cleanup,.alert-primary,.alert-primary-light{--bs-alert-color:#0c2e52;--bs-alert-bg:#d0dbe7;--bs-alert-border-color:#b9c9dc;background-image:var(--bs-gradient)}.alert-cdnjs .alert-link,.alert-cleanup .alert-link,.alert-primary .alert-link,.alert-primary-light .alert-link{color:#0a2542}.alert-admin,.alert-cloudinary,.alert-criticalcss,.alert-secondary{--bs-alert-color:#00678c;--bs-alert-bg:#cceefb;--bs-alert-border-color:#b3e6f8;background-image:var(--bs-gradient)}.alert-admin .alert-link,.alert-cloudinary .alert-link,.alert-criticalcss .alert-link,.alert-secondary .alert-link{color:#005270}.alert-success{--bs-alert-color:#3f7129;--bs-alert-bg:#e1f2da;--bs-alert-border-color:#d2ebc7;background-image:var(--bs-gradient)}.alert-success .alert-link{color:#325a21}.alert-cache,.alert-info{--bs-alert-color:#00678c;--bs-alert-bg:#cceefb;--bs-alert-border-color:#b3e6f8;background-image:var(--bs-gradient)}.alert-cache .alert-link,.alert-info .alert-link{color:#005270}.alert-notice,.alert-warning{--bs-alert-color:#615e0a;--bs-alert-bg:#fdfbd1;--bs-alert-border-color:#fbf9ba;background-image:var(--bs-gradient)}.alert-notice .alert-link,.alert-warning .alert-link{color:#4e4b08}.alert-danger,.alert-error{--bs-alert-color:#8e1317;--bs-alert-bg:#fbd2d4;--bs-alert-border-color:#f9bcbe}.alert-danger .alert-link,.alert-error .alert-link{color:#720f12}.alert-danger,.alert-dark,.alert-error,.alert-light{background-image:var(--bs-gradient)}.alert-light{--bs-alert-color:#636464;--bs-alert-bg:#fefefe;--bs-alert-border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{--bs-alert-color:#141619;--bs-alert-bg:#d3d3d4;--bs-alert-border-color:#bcbebf}.alert-dark .alert-link{color:#101214}.list-group{--bs-list-group-color:#212529;--bs-list-group-bg:#ffffff;--bs-list-group-border-color:rgba(0, 0, 0, 0.125);--bs-list-group-border-width:1px;--bs-list-group-border-radius:0.25rem;--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:#495057;--bs-list-group-action-hover-color:#495057;--bs-list-group-action-hover-bg:#f8f9fa;--bs-list-group-action-active-color:#212529;--bs-list-group-action-active-bg:#e9ecef;--bs-list-group-disabled-color:#6c757d;--bs-list-group-disabled-bg:#ffffff;--bs-list-group-active-color:#ffffff;--bs-list-group-active-bg:#144c89;--bs-list-group-active-border-color:#144c89;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item+.list-group-item{border-top-width:0}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-bg:#ffffff;--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:1px;--bs-modal-border-radius:0.3rem;--bs-modal-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius:calc(0.3rem - 1px);--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:1px;--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin)}.modal.fade .modal-dialog{transform:translate(0,-50px)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-xl{--bs-modal-width:800px}}.carousel,.carousel-inner{position:relative}.carousel-inner{width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden}.carousel-item.active{display:block}.align-top{vertical-align:top!important}.float-end{float:right!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-flex{display:flex!important}.d-none{display:none!important}.position-relative{position:relative!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-100{height:100%!important}.flex-fill{flex:1 1 auto!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-nowrap{flex-wrap:nowrap!important}.justify-content-center{justify-content:center!important}.justify-content-around{justify-content:space-around!important}.align-items-end{align-items:flex-end!important}.m-0{margin:0!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.mt-1{margin-top:.25rem!important}.mt-5{margin-top:3rem!important}.me-2{margin-right:.5rem!important}.me-4{margin-right:1.5rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-3{margin-bottom:1rem!important}.ms-3{margin-left:1rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-3{padding:1rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.pt-0{padding-top:0!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pb-0{padding-bottom:0!important}.text-center{text-align:center!important}.text-uppercase{text-transform:uppercase!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.bg-navbar{--bs-bg-opacity:1;background-color:rgba(var(--bs-navbar-rgb),var(--bs-bg-opacity))!important}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-error-rgb),var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.nav-link{font-family:"Exo 2",sans-serif;font-weight:600;font-size:16px;text-transform:uppercase}.menu-top-nav .nav-bottom .nav-item .nav-link{font-size:11px;border-left:1px solid #fff;height:100%;letter-spacing:.1em}@media (max-width:1000px){.menu-top-nav .nav-bottom .nav-item .nav-link{letter-spacing:.05em;padding-left:.45rem;padding-right:.45rem}}@media (max-width:925px){.menu-top-nav .nav-bottom .nav-item .nav-link{letter-spacing:.025em;padding-left:.4rem;padding-right:.4rem}}@media (max-width:875px){.menu-top-nav .nav-bottom .nav-item .nav-link{letter-spacing:.01em;padding-left:.35rem;padding-right:.35rem}}@media (max-width:850px){.menu-top-nav .nav-bottom .nav-item .nav-link{padding-left:.25rem;padding-right:.25rem}}.menu-top-nav .nav-bottom li:last-child{border-right:1px solid #fff}.navbar{font-family:Cabin,sans-serif;font-weight:700}.navbar-side{position:fixed;top:0;left:0;border-right:2px solid #495057;overflow-y:scroll;z-index:1000;transform:translateX(-100%);width:100%}@media (min-width:576px){.navbar-side{width:50%}}@media (min-width:768px){.d-md-block{display:block!important}.d-md-flex{display:flex!important}.navbar-side{width:35%}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}.navbar-side{width:28%}}.navbar-side .nav-link{font-size:16px;padding-top:.5rem;padding-bottom:.5rem}.navbar-toggler{padding:.75rem!important}.navbar-toggler-left{position:absolute}.module.card h4{color:#fff;text-transform:uppercase;padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;font-weight:400;letter-spacing:.25rem;font-size:1.1rem}.module.card .card-body,.module.card .card-header{padding-top:.25rem;padding-bottom:.25rem}.module.card .card-header{background:#00abe9}.module.card .card-header h4{font-size:1.25rem}.module.card .list-group-item{font-size:1.25rem;font-family:"Exo 2",sans-serif}.module.card .card-body{background:#adb5bd;font-family:Cabin,sans-serif}.entry.card .card-body,.entry.card .list-group-item{color:#6c757d}.entry.card .card-header h2{font-size:1.75rem}.entry.card .card-body img{margin-bottom:.5rem;clear:right;float:right;width:28%}.entry.card .entry-header{font-family:Cabin,sans-serif}.entry.card .card-body h3,.entry.card .list-group-item h3{color:#144c89}.entry.card .card-body{height:unset}.entry.card .card-body p{margin-bottom:1rem;font-size:1.1rem;line-height:1.65}.entry.card .card-body:after{content:none}.entry.card #entry-carousel .carousel-item img{margin:0;padding:0;height:400px;-o-object-fit:contain;object-fit:contain}.alert-message{font-size:smaller}.blur-up{filter:blur(5px)}.overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:.6;z-index:990}nav.header-nav .logolarge{vertical-align:middle;height:150px;max-height:150px}@media (max-width:1199.98px){nav.header-nav .logolarge{max-height:140px}}@media (max-width:991.98px){nav.header-nav .logolarge{max-height:130px}}@media (max-width:767.98px){.navbar{border-bottom:5px solid #adb5bd}nav.header-nav .logolarge{max-height:120px}}@media (max-width:575.98px){nav.header-nav .logolarge{max-height:100px;max-width:100%;padding-left:5px;padding-right:5px}}nav.header-nav .principal-sponsors{max-width:400px;max-height:165px;border-radius:.5rem;background-image:linear-gradient(rgba(20,76,137,.15),rgba(255,255,255,0) 50%,rgba(20,76,137,.15))}@media (max-width:1199.98px){nav.header-nav .principal-sponsors{max-height:155px;max-width:375px}}@media (max-width:991.98px){nav.header-nav .principal-sponsors{max-height:145px;max-width:325px}}nav.header-nav .principal-sponsors-header h3{line-height:.5;font-weight:200;font-size:1.1rem;letter-spacing:.35rem}@media (max-width:1199.98px){nav.header-nav .principal-sponsors-header h3{font-size:1rem;letter-spacing:.35rem}}@media (max-width:991.98px){nav.header-nav .principal-sponsors-header h3{font-size:.9rem;letter-spacing:.3rem}div#login-menu ul{flex-direction:column!important}}@media (max-width:767.98px){nav.header-nav .principal-sponsors{max-height:135px;max-width:280px}nav.header-nav .principal-sponsors-header h3{font-size:.8rem;letter-spacing:.25rem}}@media (max-width:575.98px){nav.header-nav .principal-sponsors{max-height:100px;max-width:40%;padding-left:5px;padding-right:5px}nav.header-nav .principal-sponsors-header h3{font-size:.5rem;letter-spacing:.1rem}}.overlay,.printmessage{display:none}.cls-1{fill:#6fccdd}.cls-2{fill:#fff}.cls-3{fill:#06b0d8}.cls-4{fill:#f79420}.cls-5{fill:#fbb03a}.cls-6{fill:#faed23}.cls-7{fill:#f7ec13}.cls-8{fill:#6abd45}.cls-9{fill:#b9529f}.cls-10{fill:#c1272d}.cls-11{fill:#ec2027}.cls-12{fill:#d2d3d4}:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.cb_template .alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.cb_template .alert-heading{color:inherit}.cb_template .alert-link{font-weight:700}.cb_template .alert-dismissible{padding-right:4rem}.cb_template .alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.cb_template .alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.cb_template .alert-primary hr{border-top-color:#9fcdff}.cb_template .alert-primary .alert-link{color:#002752}.cb_template .alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.cb_template .alert-secondary hr{border-top-color:#c8cbcf}.cb_template .alert-secondary .alert-link{color:#202326}.cb_template .alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.cb_template .alert-success hr{border-top-color:#b1dfbb}.cb_template .alert-success .alert-link{color:#0b2e13}.cb_template .alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.cb_template .alert-info hr{border-top-color:#abdde5}.cb_template .alert-info .alert-link{color:#062c33}.cb_template .alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.cb_template .alert-warning hr{border-top-color:#ffe8a1}.cb_template .alert-warning .alert-link{color:#533f03}.cb_template .alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.cb_template .alert-danger hr{border-top-color:#f1b0b7}.cb_template .alert-danger .alert-link{color:#491217}.cb_template .alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.cb_template .alert-light hr{border-top-color:#ececf6}.cb_template .alert-light .alert-link{color:#686868}.cb_template .alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.cb_template .alert-dark hr{border-top-color:#b9bbbe}.cb_template .alert-dark .alert-link{color:#040505}</style> <script type="application/json" class="joomla-script-options new">{"joomla.jtext":{"PLG_SYSTEM_WEBAUTHN_ERR_CANNOT_FIND_USERNAME":"Cannot find the username field in the login module. Sorry, Passwordless authentication will not work on this site unless you use a different login module.","PLG_SYSTEM_WEBAUTHN_ERR_EMPTY_USERNAME":"You need to enter your username (but NOT your password) before selecting the Web Authentication login button.","PLG_SYSTEM_WEBAUTHN_ERR_INVALID_USERNAME":"The specified username does not correspond to a user account that has enabled passwordless login on this site."},"system.paths":{"root":"","rootFull":"https:\/\/contest.techbriefs.com\/","base":"","baseFull":"https:\/\/contest.techbriefs.com\/"},"csrf.token":"5033ef8958a3a2518dabc722fbaac5b0","system.keepalive":{"interval":3600000,"uri":"\/component\/ajax\/?format=json"}}</script> <script type="module"> /*! inlined from /media/vendor/bootstrap/js/toast.min.js by ntb_minifier */ import { e as enableDismissTrigger, d as define$Plugin, B as BaseComponent, E as EventHandler, r as reflow } from './dom.js?5.3.0'; /** * -------------------------------------------------------------------------- * Bootstrap toast.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** * Constants */ const NAME = 'toast'; const DATA_KEY = 'bs.toast'; const EVENT_KEY = `.${DATA_KEY}`; const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`; const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`; const EVENT_FOCUSIN = `focusin${EVENT_KEY}`; const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`; const EVENT_HIDE = `hide${EVENT_KEY}`; const EVENT_HIDDEN = `hidden${EVENT_KEY}`; const EVENT_SHOW = `show${EVENT_KEY}`; const EVENT_SHOWN = `shown${EVENT_KEY}`; const CLASS_NAME_FADE = 'fade'; const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility const CLASS_NAME_SHOW = 'show'; const CLASS_NAME_SHOWING = 'showing'; const DefaultType = { animation: 'boolean', autohide: 'boolean', delay: 'number' }; const Default = { animation: true, autohide: true, delay: 5000 }; /** * Class definition */ class Toast extends BaseComponent { constructor(element, config) { super(element, config); this._timeout = null; this._hasMouseInteraction = false; this._hasKeyboardInteraction = false; this._setListeners(); } // Getters static get Default() { return Default; } static get DefaultType() { return DefaultType; } static get NAME() { return NAME; } // Public show() { const showEvent = EventHandler.trigger(this._element, EVENT_SHOW); if (showEvent.defaultPrevented) { return; } this._clearTimeout(); if (this._config.animation) { this._element.classList.add(CLASS_NAME_FADE); } const complete = () => { this._element.classList.remove(CLASS_NAME_SHOWING); EventHandler.trigger(this._element, EVENT_SHOWN); this._maybeScheduleHide(); }; this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated reflow(this._element); this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING); this._queueCallback(complete, this._element, this._config.animation); } hide() { if (!this.isShown()) { return; } const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE); if (hideEvent.defaultPrevented) { return; } const complete = () => { this._element.classList.add(CLASS_NAME_HIDE); // @deprecated this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW); EventHandler.trigger(this._element, EVENT_HIDDEN); }; this._element.classList.add(CLASS_NAME_SHOWING); this._queueCallback(complete, this._element, this._config.animation); } dispose() { this._clearTimeout(); if (this.isShown()) { this._element.classList.remove(CLASS_NAME_SHOW); } super.dispose(); } isShown() { return this._element.classList.contains(CLASS_NAME_SHOW); } // Private _maybeScheduleHide() { if (!this._config.autohide) { return; } if (this._hasMouseInteraction || this._hasKeyboardInteraction) { return; } this._timeout = setTimeout(() => { this.hide(); }, this._config.delay); } _onInteraction(event, isInteracting) { switch (event.type) { case 'mouseover': case 'mouseout': { this._hasMouseInteraction = isInteracting; break; } case 'focusin': case 'focusout': { this._hasKeyboardInteraction = isInteracting; break; } } if (isInteracting) { this._clearTimeout(); return; } const nextElement = event.relatedTarget; if (this._element === nextElement || this._element.contains(nextElement)) { return; } this._maybeScheduleHide(); } _setListeners() { EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true)); EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false)); EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true)); EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false)); } _clearTimeout() { clearTimeout(this._timeout); this._timeout = null; } // Static static $Interface(config) { return this.each(function () { const data = Toast.getOrCreateInstance(this, config); if (typeof config === 'string') { if (typeof data[config] === 'undefined') { throw new TypeError(`No method named "${config}"`); } data[config](this); } }); } } /** * Data API implementation */ enableDismissTrigger(Toast); /** * $ */ define$Plugin(Toast); window.bootstrap = window.bootstrap || {}; window.bootstrap.Toast = Toast; if (Joomla && Joomla.getOptions) { // Get the elements/configurations from the PHP const toasts = Joomla.getOptions('bootstrap.toast'); // Initialise the elements if (typeof toasts === 'object' && toasts !== null) { Object.keys(toasts).forEach(toast => { const opt = toasts[toast]; const options = { animation: opt.animation ? opt.animation : true, autohide: opt.autohide ? opt.autohide : true, delay: opt.delay ? opt.delay : 5000 }; const elements = Array.from(document.querySelectorAll(toast)); if (elements.length) { elements.map(el => new window.bootstrap.Toast(el, options)); } }); } } export { Toast as T }; /* end /media/vendor/bootstrap/js/toast.min.js */ </script> <script type="module"> /*! inlined from /media/vendor/bootstrap/js/scrollspy.min.js by ntb_minifier */ import { E as EventHandler, S as SelectorEngine, d as define$Plugin, B as BaseComponent, c as getElement, f as isDisabled, i as isVisible } from './dom.js?5.3.0'; /** * -------------------------------------------------------------------------- * Bootstrap scrollspy.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** * Constants */ const NAME = 'scrollspy'; const DATA_KEY = 'bs.scrollspy'; const EVENT_KEY = `.${DATA_KEY}`; const DATA_API_KEY = '.data-api'; const EVENT_ACTIVATE = `activate${EVENT_KEY}`; const EVENT_CLICK = `click${EVENT_KEY}`; const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`; const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; const CLASS_NAME_ACTIVE = 'active'; const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; const SELECTOR_TARGET_LINKS = '[href]'; const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; const SELECTOR_NAV_LINKS = '.nav-link'; const SELECTOR_NAV_ITEMS = '.nav-item'; const SELECTOR_LIST_ITEMS = '.list-group-item'; const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`; const SELECTOR_DROPDOWN = '.dropdown'; const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; const Default = { offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons rootMargin: '0px 0px -25%', smoothScroll: false, target: null, threshold: [0.1, 0.5, 1] }; const DefaultType = { offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons rootMargin: 'string', smoothScroll: 'boolean', target: 'element', threshold: 'array' }; /** * Class definition */ class ScrollSpy extends BaseComponent { constructor(element, config) { super(element, config); // this._element is the observablesContainer and config.target the menu links wrapper this._targetLinks = new Map(); this._observableSections = new Map(); this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element; this._activeTarget = null; this._observer = null; this._previousScrollData = { visibleEntryTop: 0, parentScrollTop: 0 }; this.refresh(); // initialize } // Getters static get Default() { return Default; } static get DefaultType() { return DefaultType; } static get NAME() { return NAME; } // Public refresh() { this._initializeTargetsAndObservables(); this._maybeEnableSmoothScroll(); if (this._observer) { this._observer.disconnect(); } else { this._observer = this._getNewObserver(); } for (const section of this._observableSections.values()) { this._observer.observe(section); } } dispose() { this._observer.disconnect(); super.dispose(); } // Private _configAfterMerge(config) { // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case config.target = getElement(config.target) || document.body; // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin; if (typeof config.threshold === 'string') { config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value)); } return config; } _maybeEnableSmoothScroll() { if (!this._config.smoothScroll) { return; } // unregister any previous listeners EventHandler.off(this._config.target, EVENT_CLICK); EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => { const observableSection = this._observableSections.get(event.target.hash); if (observableSection) { event.preventDefault(); const root = this._rootElement || window; const height = observableSection.offsetTop - this._element.offsetTop; if (root.scrollTo) { root.scrollTo({ top: height, behavior: 'smooth' }); return; } // Chrome 60 doesn't support `scrollTo` root.scrollTop = height; } }); } _getNewObserver() { const options = { root: this._rootElement, threshold: this._config.threshold, rootMargin: this._config.rootMargin }; return new IntersectionObserver(entries => this._observerCallback(entries), options); } // The logic of selection _observerCallback(entries) { const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`); const activate = entry => { this._previousScrollData.visibleEntryTop = entry.target.offsetTop; this._process(targetElement(entry)); }; const parentScrollTop = (this._rootElement || document.documentElement).scrollTop; const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; this._previousScrollData.parentScrollTop = parentScrollTop; for (const entry of entries) { if (!entry.isIntersecting) { this._activeTarget = null; this._clearActiveClass(targetElement(entry)); continue; } const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop if (userScrollsDown && entryIsLowerThanPrevious) { activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration if (!parentScrollTop) { return; } continue; } // if we are scrolling up, pick the smallest offsetTop if (!userScrollsDown && !entryIsLowerThanPrevious) { activate(entry); } } } _initializeTargetsAndObservables() { this._targetLinks = new Map(); this._observableSections = new Map(); const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); for (const anchor of targetLinks) { // ensure that the anchor has an id and is not disabled if (!anchor.hash || isDisabled(anchor)) { continue; } const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element); // ensure that the observableSection exists & is visible if (isVisible(observableSection)) { this._targetLinks.set(decodeURI(anchor.hash), anchor); this._observableSections.set(anchor.hash, observableSection); } } } _process(target) { if (this._activeTarget === target) { return; } this._clearActiveClass(this._config.target); this._activeTarget = target; target.classList.add(CLASS_NAME_ACTIVE); this._activateParents(target); EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target }); } _activateParents(target) { // Activate dropdown parents if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE); return; } for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) { // Set triggered links parents as active // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) { item.classList.add(CLASS_NAME_ACTIVE); } } } _clearActiveClass(parent) { parent.classList.remove(CLASS_NAME_ACTIVE); const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent); for (const node of activeNodes) { node.classList.remove(CLASS_NAME_ACTIVE); } } // Static static $Interface(config) { return this.each(function () { const data = ScrollSpy.getOrCreateInstance(this, config); if (typeof config !== 'string') { return; } if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { throw new TypeError(`No method named "${config}"`); } data[config](); }); } } /** * Data API implementation */ EventHandler.on(window, EVENT_LOAD_DATA_API, () => { for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) { ScrollSpy.getOrCreateInstance(spy); } }); /** * $ */ define$Plugin(ScrollSpy); window.bootstrap = window.bootstrap || {}; window.bootstrap.Scrollspy = ScrollSpy; if (Joomla && Joomla.getOptions) { // Get the elements/configurations from the PHP const scrollspys = Joomla.getOptions('bootstrap.scrollspy'); // Initialise the elements if (typeof scrollspys === 'object' && scrollspys !== null) { Object.keys(scrollspys).forEach(scrollspy => { const opt = scrollspys[scrollspy]; const options = { offset: opt.offset ? opt.offset : 10, method: opt.method ? opt.method : 'auto' }; if (opt.target) { options.target = opt.target; } const elements = Array.from(document.querySelectorAll(scrollspy)); if (elements.length) { elements.map(el => new window.bootstrap.Scrollspy(el, options)); } }); } } export { ScrollSpy as S }; /* end /media/vendor/bootstrap/js/scrollspy.min.js */ </script> <script type="module"> /*! inlined from /media/vendor/bootstrap/js/offcanvas.min.js by ntb_minifier */ import { E as EventHandler, S as SelectorEngine, f as isDisabled, i as isVisible, e as enableDismissTrigger, d as define$Plugin, B as BaseComponent, k as ScrollBarHelper, l as Backdrop, F as FocusTrap } from './dom.js?5.3.0'; /** * -------------------------------------------------------------------------- * Bootstrap offcanvas.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** * Constants */ const NAME = 'offcanvas'; const DATA_KEY = 'bs.offcanvas'; const EVENT_KEY = `.${DATA_KEY}`; const DATA_API_KEY = '.data-api'; const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`; const ESCAPE_KEY = 'Escape'; const CLASS_NAME_SHOW = 'show'; const CLASS_NAME_SHOWING = 'showing'; const CLASS_NAME_HIDING = 'hiding'; const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; const OPEN_SELECTOR = '.offcanvas.show'; const EVENT_SHOW = `show${EVENT_KEY}`; const EVENT_SHOWN = `shown${EVENT_KEY}`; const EVENT_HIDE = `hide${EVENT_KEY}`; const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`; const EVENT_HIDDEN = `hidden${EVENT_KEY}`; const EVENT_RESIZE = `resize${EVENT_KEY}`; const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`; const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`; const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="offcanvas"]'; const Default = { backdrop: true, keyboard: true, scroll: false }; const DefaultType = { backdrop: '(boolean|string)', keyboard: 'boolean', scroll: 'boolean' }; /** * Class definition */ class Offcanvas extends BaseComponent { constructor(element, config) { super(element, config); this._isShown = false; this._backdrop = this._initializeBackDrop(); this._focustrap = this._initializeFocusTrap(); this._addEventListeners(); } // Getters static get Default() { return Default; } static get DefaultType() { return DefaultType; } static get NAME() { return NAME; } // Public toggle(relatedTarget) { return this._isShown ? this.hide() : this.show(relatedTarget); } show(relatedTarget) { if (this._isShown) { return; } const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget }); if (showEvent.defaultPrevented) { return; } this._isShown = true; this._backdrop.show(); if (!this._config.scroll) { new ScrollBarHelper().hide(); } this._element.setAttribute('aria-modal', true); this._element.setAttribute('role', 'dialog'); this._element.classList.add(CLASS_NAME_SHOWING); const completeCallBack = () => { if (!this._config.scroll || this._config.backdrop) { this._focustrap.activate(); } this._element.classList.add(CLASS_NAME_SHOW); this._element.classList.remove(CLASS_NAME_SHOWING); EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget }); }; this._queueCallback(completeCallBack, this._element, true); } hide() { if (!this._isShown) { return; } const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE); if (hideEvent.defaultPrevented) { return; } this._focustrap.deactivate(); this._element.blur(); this._isShown = false; this._element.classList.add(CLASS_NAME_HIDING); this._backdrop.hide(); const completeCallback = () => { this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING); this._element.removeAttribute('aria-modal'); this._element.removeAttribute('role'); if (!this._config.scroll) { new ScrollBarHelper().reset(); } EventHandler.trigger(this._element, EVENT_HIDDEN); }; this._queueCallback(completeCallback, this._element, true); } dispose() { this._backdrop.dispose(); this._focustrap.deactivate(); super.dispose(); } // Private _initializeBackDrop() { const clickCallback = () => { if (this._config.backdrop === 'static') { EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); return; } this.hide(); }; // 'static' option will be translated to true, and booleans will keep their value const isVisible = Boolean(this._config.backdrop); return new Backdrop({ className: CLASS_NAME_BACKDROP, isVisible, isAnimated: true, rootElement: this._element.parentNode, clickCallback: isVisible ? clickCallback : null }); } _initializeFocusTrap() { return new FocusTrap({ trapElement: this._element }); } _addEventListeners() { EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { if (event.key !== ESCAPE_KEY) { return; } if (this._config.keyboard) { this.hide(); return; } EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); }); } // Static static $Interface(config) { return this.each(function () { const data = Offcanvas.getOrCreateInstance(this, config); if (typeof config !== 'string') { return; } if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { throw new TypeError(`No method named "${config}"`); } data[config](this); }); } } /** * Data API implementation */ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { const target = SelectorEngine.getElementFromSelector(this); if (['A', 'AREA'].includes(this.tagName)) { event.preventDefault(); } if (isDisabled(this)) { return; } EventHandler.one(target, EVENT_HIDDEN, () => { // focus on trigger when it is closed if (isVisible(this)) { this.focus(); } }); // avoid conflict when clicking a toggler of an offcanvas, while another is open const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); if (alreadyOpen && alreadyOpen !== target) { Offcanvas.getInstance(alreadyOpen).hide(); } const data = Offcanvas.getOrCreateInstance(target); data.toggle(this); }); EventHandler.on(window, EVENT_LOAD_DATA_API, () => { for (const selector of SelectorEngine.find(OPEN_SELECTOR)) { Offcanvas.getOrCreateInstance(selector).show(); } }); EventHandler.on(window, EVENT_RESIZE, () => { for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) { if (getComputedStyle(element).position !== 'fixed') { Offcanvas.getOrCreateInstance(element).hide(); } } }); enableDismissTrigger(Offcanvas); /** * $ */ define$Plugin(Offcanvas); window.bootstrap = window.bootstrap || {}; window.bootstrap.Offcanvas = Offcanvas; if (Joomla && Joomla.getOptions) { // Get the elements/configurations from the PHP const offcanvases = Joomla.getOptions('bootstrap.offcanvas'); // Initialise the elements if (typeof offcanvases === 'object' && offcanvases !== null) { Object.keys(offcanvases).forEach(offcanvas => { const opt = offcanvases[offcanvas]; const options = { backdrop: opt.backdrop ? opt.backdrop : true, keyboard: opt.keyboard ? opt.keyboard : true, scroll: opt.scroll ? opt.scroll : true }; const elements = Array.from(document.querySelectorAll(offcanvas)); if (elements.length) { elements.map(el => new window.bootstrap.Offcanvas(el, options)); } }); } } export { Offcanvas as O }; /* end /media/vendor/bootstrap/js/offcanvas.min.js */ </script> <script type="module"> /*! inlined from /media/vendor/bootstrap/js/collapse.min.js by ntb_minifier */ import { E as EventHandler, S as SelectorEngine, d as define$Plugin, B as BaseComponent, r as reflow, c as getElement } from './dom.js?5.3.0'; /** * -------------------------------------------------------------------------- * Bootstrap collapse.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** * Constants */ const NAME = 'collapse'; const DATA_KEY = 'bs.collapse'; const EVENT_KEY = `.${DATA_KEY}`; const DATA_API_KEY = '.data-api'; const EVENT_SHOW = `show${EVENT_KEY}`; const EVENT_SHOWN = `shown${EVENT_KEY}`; const EVENT_HIDE = `hide${EVENT_KEY}`; const EVENT_HIDDEN = `hidden${EVENT_KEY}`; const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`; const CLASS_NAME_SHOW = 'show'; const CLASS_NAME_COLLAPSE = 'collapse'; const CLASS_NAME_COLLAPSING = 'collapsing'; const CLASS_NAME_COLLAPSED = 'collapsed'; const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'; const WIDTH = 'width'; const HEIGHT = 'height'; const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]'; const Default = { parent: null, toggle: true }; const DefaultType = { parent: '(null|element)', toggle: 'boolean' }; /** * Class definition */ class Collapse extends BaseComponent { constructor(element, config) { super(element, config); this._isTransitioning = false; this._triggerArray = []; const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE); for (const elem of toggleList) { const selector = SelectorEngine.getSelectorFromElement(elem); const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element); if (selector !== null && filterElement.length) { this._triggerArray.push(elem); } } this._initializeChildren(); if (!this._config.parent) { this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); } if (this._config.toggle) { this.toggle(); } } // Getters static get Default() { return Default; } static get DefaultType() { return DefaultType; } static get NAME() { return NAME; } // Public toggle() { if (this._isShown()) { this.hide(); } else { this.show(); } } show() { if (this._isTransitioning || this._isShown()) { return; } let activeChildren = []; // find active children if (this._config.parent) { activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, { toggle: false })); } if (activeChildren.length && activeChildren[0]._isTransitioning) { return; } const startEvent = EventHandler.trigger(this._element, EVENT_SHOW); if (startEvent.defaultPrevented) { return; } for (const activeInstance of activeChildren) { activeInstance.hide(); } const dimension = this._getDimension(); this._element.classList.remove(CLASS_NAME_COLLAPSE); this._element.classList.add(CLASS_NAME_COLLAPSING); this._element.style[dimension] = 0; this._addAriaAndCollapsedClass(this._triggerArray, true); this._isTransitioning = true; const complete = () => { this._isTransitioning = false; this._element.classList.remove(CLASS_NAME_COLLAPSING); this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); this._element.style[dimension] = ''; EventHandler.trigger(this._element, EVENT_SHOWN); }; const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); const scrollSize = `scroll${capitalizedDimension}`; this._queueCallback(complete, this._element, true); this._element.style[dimension] = `${this._element[scrollSize]}px`; } hide() { if (this._isTransitioning || !this._isShown()) { return; } const startEvent = EventHandler.trigger(this._element, EVENT_HIDE); if (startEvent.defaultPrevented) { return; } const dimension = this._getDimension(); this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; reflow(this._element); this._element.classList.add(CLASS_NAME_COLLAPSING); this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); for (const trigger of this._triggerArray) { const element = SelectorEngine.getElementFromSelector(trigger); if (element && !this._isShown(element)) { this._addAriaAndCollapsedClass([trigger], false); } } this._isTransitioning = true; const complete = () => { this._isTransitioning = false; this._element.classList.remove(CLASS_NAME_COLLAPSING); this._element.classList.add(CLASS_NAME_COLLAPSE); EventHandler.trigger(this._element, EVENT_HIDDEN); }; this._element.style[dimension] = ''; this._queueCallback(complete, this._element, true); } _isShown() { let element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._element; return element.classList.contains(CLASS_NAME_SHOW); } // Private _configAfterMerge(config) { config.toggle = Boolean(config.toggle); // Coerce string values config.parent = getElement(config.parent); return config; } _getDimension() { return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; } _initializeChildren() { if (!this._config.parent) { return; } const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE); for (const element of children) { const selected = SelectorEngine.getElementFromSelector(element); if (selected) { this._addAriaAndCollapsedClass([element], this._isShown(selected)); } } } _getFirstLevelChildren(selector) { const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element)); } _addAriaAndCollapsedClass(triggerArray, isOpen) { if (!triggerArray.length) { return; } for (const element of triggerArray) { element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); element.setAttribute('aria-expanded', isOpen); } } // Static static $Interface(config) { const _config = {}; if (typeof config === 'string' && /show|hide/.test(config)) { _config.toggle = false; } return this.each(function () { const data = Collapse.getOrCreateInstance(this, _config); if (typeof config === 'string') { if (typeof data[config] === 'undefined') { throw new TypeError(`No method named "${config}"`); } data[config](); } }); } } /** * Data API implementation */ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { // preventDefault only for <a> elements (which change the URL) not inside the collapsible element if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') { event.preventDefault(); } for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) { Collapse.getOrCreateInstance(element, { toggle: false }).toggle(); } }); /** * $ */ define$Plugin(Collapse); window.bootstrap = window.bootstrap || {}; window.bootstrap.Collapse = Collapse; if (Joomla && Joomla.getOptions) { // Get the elements/configurations from the PHP const collapses = { ...Joomla.getOptions('bootstrap.collapse'), ...Joomla.getOptions('bootstrap.accordion') }; // Initialise the elements Object.keys(collapses).forEach(collapse => { const opt = collapses[collapse]; const options = { toggle: opt.toggle ? opt.toggle : true }; if (opt.parent) { options.parent = opt.parent; } const elements = Array.from(document.querySelectorAll(collapse)); if (elements.length) { elements.map(el => new window.bootstrap.Collapse(el, options)); } }); } export { Collapse as C }; /* end /media/vendor/bootstrap/js/collapse.min.js */ </script> <script type="module"> /*! inlined from /media/vendor/bootstrap/js/button.min.js by ntb_minifier */ import { E as EventHandler, d as define$Plugin, B as BaseComponent } from './dom.js?5.3.0'; /** * -------------------------------------------------------------------------- * Bootstrap button.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** * Constants */ const NAME = 'button'; const DATA_KEY = 'bs.button'; const EVENT_KEY = `.${DATA_KEY}`; const DATA_API_KEY = '.data-api'; const CLASS_NAME_ACTIVE = 'active'; const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]'; const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`; /** * Class definition */ class Button extends BaseComponent { // Getters static get NAME() { return NAME; } // Public toggle() { // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE)); } // Static static $Interface(config) { return this.each(function () { const data = Button.getOrCreateInstance(this); if (config === 'toggle') { data[config](); } }); } } /** * Data API implementation */ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => { event.preventDefault(); const button = event.target.closest(SELECTOR_DATA_TOGGLE); const data = Button.getOrCreateInstance(button); data.toggle(); }); /** * $ */ define$Plugin(Button); window.bootstrap = window.bootstrap || {}; window.bootstrap.Button = Button; if (Joomla && Joomla.getOptions) { // Get the elements/configurations from the PHP const buttons = Joomla.getOptions('bootstrap.button'); // Initialise the elements if (buttons && buttons.length) { buttons.forEach(selector => { Array.from(document.querySelectorAll(selector)).map(el => new window.bootstrap.Button(el)); }); } } export { Button as B }; /* end /media/vendor/bootstrap/js/button.min.js */ </script> <script type="module"> /*! inlined from /media/vendor/bootstrap/js/alert.min.js by ntb_minifier */ import { e as enableDismissTrigger, d as define$Plugin, B as BaseComponent, E as EventHandler } from './dom.js?5.3.0'; /** * -------------------------------------------------------------------------- * Bootstrap alert.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** * Constants */ const NAME = 'alert'; const DATA_KEY = 'bs.alert'; const EVENT_KEY = `.${DATA_KEY}`; const EVENT_CLOSE = `close${EVENT_KEY}`; const EVENT_CLOSED = `closed${EVENT_KEY}`; const CLASS_NAME_FADE = 'fade'; const CLASS_NAME_SHOW = 'show'; /** * Class definition */ class Alert extends BaseComponent { // Getters static get NAME() { return NAME; } // Public close() { const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); if (closeEvent.defaultPrevented) { return; } this._element.classList.remove(CLASS_NAME_SHOW); const isAnimated = this._element.classList.contains(CLASS_NAME_FADE); this._queueCallback(() => this._destroyElement(), this._element, isAnimated); } // Private _destroyElement() { this._element.remove(); EventHandler.trigger(this._element, EVENT_CLOSED); this.dispose(); } // Static static $Interface(config) { return this.each(function () { const data = Alert.getOrCreateInstance(this); if (typeof config !== 'string') { return; } if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { throw new TypeError(`No method named "${config}"`); } data[config](this); }); } } /** * Data API implementation */ enableDismissTrigger(Alert, 'close'); /** * $ */ define$Plugin(Alert); window.bootstrap = window.bootstrap || {}; window.bootstrap.Alert = Alert; if (Joomla && Joomla.getOptions) { // Get the elements/configurations from the PHP const alerts = Joomla.getOptions('bootstrap.alert'); // Initialise the elements if (alerts && alerts.length) { alerts.forEach(selector => { Array.from(document.querySelectorAll(selector)).map(el => new window.bootstrap.Alert(el)); }); } } export { Alert as A }; /* end /media/vendor/bootstrap/js/alert.min.js */ </script> <script type="module"> /*! inlined from /media/system/js/joomla-hidden-mail.min.js by ntb_minifier */ /** * @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ window.customElements.define('joomla-hidden-mail', class extends HTMLElement { constructor() { super(); this.newElement = ''; this.base = ''; } /** * Lifecycle */ disconnectedCallback() { this.innerHTML = ''; } /** * Lifecycle */ connectedCallback() { this.base = `${this.getAttribute('base')}/`; if (this.getAttribute('is-link') === '1') { this.newElement = document.createElement('a'); this.newElement.setAttribute('href', `mailto:${this.constructor.b64DecodeUnicode(this.getAttribute('first'))}@${this.constructor.b64DecodeUnicode(this.getAttribute('last'))}`); // Get all of the original element attributes, and pass them to the link [].slice.call(this.attributes).forEach((attribute, index) => { const { nodeName } = this.attributes.item(index); if (nodeName) { // We do care for some attributes if (['is-link', 'is-email', 'first', 'last', 'text'].indexOf(nodeName) === -1) { const { nodeValue } = this.attributes.item(index); this.newElement.setAttribute(nodeName, nodeValue); } } }); } else { this.newElement = document.createElement('span'); } if (this.getAttribute('text')) { let innerStr = this.constructor.b64DecodeUnicode(this.getAttribute('text')); innerStr = innerStr.replace('src="images/', `src="${this.base}images/`).replace('src="media/', `src="${this.base}media/`); this.newElement.innerHTML = Joomla.sanitizeHtml(innerStr); } else { this.newElement.innerText = `${window.atob(this.getAttribute('first'))}@${window.atob(this.getAttribute('last'))}`; } // Remove class and style Attributes this.removeAttribute('class'); this.removeAttribute('style'); // Remove the noscript message this.innerText = ''; // Display the new element this.appendChild(this.newElement); } static b64DecodeUnicode(str) { return decodeURIComponent(Array.prototype.map.call(atob(str), c => `%${`00${c.charCodeAt(0).toString(16)}`.slice(-2)}`).join('')); } }); /* end /media/system/js/joomla-hidden-mail.min.js */ </script> <script type="module"> /*! inlined from /media/system/js/keepalive.min.js by ntb_minifier */ /** * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ /** * Keepalive javascript behavior * * Used for keeping the session alive * * @package Joomla.JavaScript * @since 3.7.0 */ if (!window.Joomla) { throw new Error('Joomla API was not properly initialised'); } const keepAliveOptions = Joomla.getOptions('system.keepalive'); const keepAliveInterval = keepAliveOptions && keepAliveOptions.interval ? parseInt(keepAliveOptions.interval, 10) : 45 * 1000; let keepAliveUri = keepAliveOptions && keepAliveOptions.uri ? keepAliveOptions.uri.replace(/&amp;/g, '&') : ''; // Fallback in case no keepalive uri was found. if (keepAliveUri === '') { const systemPaths = Joomla.getOptions('system.paths'); keepAliveUri = `${systemPaths ? `${systemPaths.root}/index.php` : window.location.pathname}?option=com_ajax&format=json`; } setInterval(() => fetch(keepAliveUri, { method: 'POST' }), keepAliveInterval); /* end /media/system/js/keepalive.min.js */ </script> <meta name="pubdate" content="20240614"> <!-- Google Tag Manager --> <script>(function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-NBC2RTV');</script> <!-- End Google Tag Manager --> <!-- favicons --> <link rel="apple-touch-icon-precomposed" sizes="57x57" href="/templates/ctf_2019/favicos/apple-touch-icon-57x57.png" /> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/templates/ctf_2019/favicos/apple-touch-icon-114x114.png" /> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/templates/ctf_2019/favicos/apple-touch-icon-72x72.png" /> <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/templates/ctf_2019/favicos/apple-touch-icon-144x144.png" /> <link rel="apple-touch-icon-precomposed" sizes="60x60" href="/templates/ctf_2019/favicos/apple-touch-icon-60x60.png" /> <link rel="apple-touch-icon-precomposed" sizes="120x120" href="/templates/ctf_2019/favicos/apple-touch-icon-120x120.png" /> <link rel="apple-touch-icon-precomposed" sizes="76x76" href="/templates/ctf_2019/favicos/apple-touch-icon-76x76.png" /> <link rel="apple-touch-icon-precomposed" sizes="152x152" href="/templates/ctf_2019/favicos/apple-touch-icon-152x152.png" /> <link rel="icon" type="image/png" href="/templates/ctf_2019/favicos/favicon-196x196.png" sizes="196x196" /> <link rel="icon" type="image/png" href="/templates/ctf_2019/favicos/favicon-96x96.png" sizes="96x96" /> <link rel="icon" type="image/png" href="/templates/ctf_2019/favicos/favicon-32x32.png" sizes="32x32" /> <link rel="icon" type="image/png" href="/templates/ctf_2019/favicos/favicon-16x16.png" sizes="16x16" /> <link rel="icon" type="image/png" href="/templates/ctf_2019/favicos/favicon-128.png" sizes="128x128" /> <meta name="application-name" content="&nbsp;" /> <meta name="msapplication-TileColor" content="#FFFFFF" /> <meta name="msapplication-TileImage" content="/templates/ctf_2019/favicos/mstile-144x144.png" /> <meta name="msapplication-square70x70logo" content="/templates/ctf_2019/favicos/mstile-70x70.png" /> <meta name="msapplication-square150x150logo" content="/templates/ctf_2019/favicos/mstile-150x150.png" /> <meta name="msapplication-wide310x150logo" content="/templates/ctf_2019/favicos/mstile-310x150.png" /> <meta name="msapplication-square310x310logo" content="/templates/ctf_2019/favicos/mstile-310x310.png" /> </head> <body> <!-- Google Tag Manager (noscript) --> <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NBC2RTV" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> <!-- End Google Tag Manager (noscript) --> <!--googleoff: all--> <header class="header"> <div class="header-container container-fluid p-0"> <nav class="header-nav navbar navbar-expand-sm navbar-dark bg-primary px-0 py-1"> <div class="row w-100"> <div class="col-xl-2 col-lg-2 col-md-1 col-sm-1 col-xs-1 col-2 align-top h-100"> <button type="button" id="navbar-side-button-small" class="hamburger navbar-toggler navbar-toggler-left" data-bs-toggle="collapse" data-bs-target=".navbar-side"> <span class="fas fa-bars"></span> </button> <div id="hamburger-menu" class="navbar-collapse collapse d-none"> <ul class="navbar-nav me-auto"> <li class="nav-item active"> <a id="navbar-side-button-large" class="nav-link ms-3"> <span class="fas fa-bars"></span> </a></li></ul></div></div> <div class="col-xl-4 col-lg-4 col-md-4 col-sm-5 col-xs-4 col-4 py-2 ctf-logo"> <div class="d-flex justify-content-around align-items-end"> <div> <a href="/"> <svg class="logolarge py-1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2734.14 1993.33"><defs><style>.cls-1{fill:#6fccdd;}.cls-2{fill:#fff;}.cls-3{fill:#06b0d8;}.cls-4{fill:#f79420;}.cls-5{fill:#fbb03a;}.cls-6{fill:#faed23;}.cls-7{fill:#f7ec13;}.cls-8{fill:#6abd45;}.cls-9{fill:#b9529f;}.cls-10{fill:#c1272d;}.cls-11{fill:#ec2027;}.cls-12{fill:#d2d3d4;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><polygon class="cls-1" points="1112.55 1624.74 1112.34 1683.17 606.53 1681.18 606.95 1622.8 1112.55 1624.74"/><path class="cls-2" d="M634.37,536.36V519.21h37.84v78.34H634.37q-16.71-42.43-55.73-42.43-19.36,0-34.37,10.06a67.37,67.37,0,0,0-23.36,27.42,87.79,87.79,0,0,0-8.35,38.5,82.63,82.63,0,0,0,7.91,36.28,66,66,0,0,0,22.1,26.32q14.19,9.82,32.66,9.82a55.9,55.9,0,0,0,39.54-15.74q16.77-15.75,22.54-41.47l43.9,20.84q-24.83,77.46-110.12,77.45-36.66,0-64.07-14t-42.2-39.91Q450,664.79,450,630.2q0-32.67,15.22-58.83a108.58,108.58,0,0,1,42.05-41q26.84-14.85,60.09-14.86Q607.77,515.52,634.37,536.36Z"/><path class="cls-2" d="M830.61,584.84V631.4q-20.4,1.33-32.45,6.43a37.17,37.17,0,0,0-18.62,17.51Q773,667.76,773,690.81v15.38h30.89V742H694.91V706.19h28.53V623H696.39V586.61h72.43v39.46a59.48,59.48,0,0,1,20.25-29.7q14.77-11.82,36.66-11.82A29.45,29.45,0,0,1,830.61,584.84Z"/><path class="cls-2" d="M1007.93,674.7H892q1.77,17.89,12.34,28.31t27.27,10.42q18.47,0,36.06-18.32l38.43,12.41q-12.72,19.07-31.49,28.6t-44.49,9.54q-25.73,0-45.45-9.68a72.26,72.26,0,0,1-30.6-27.42q-10.87-17.73-10.86-41.69A83,83,0,0,1,854.55,624a81.23,81.23,0,0,1,30.6-30.09,84,84,0,0,1,41.91-10.86q24.54,0,42.72,11.31t28,32.08Q1007.63,647.21,1007.93,674.7ZM924.71,616q-13.31,0-21.36,7.68t-10.12,23.51H958q-2.07-13.89-11.31-22.55A31.05,31.05,0,0,0,924.71,616Z"/><path class="cls-2" d="M1172,648.69v57.5h25.12V742h-74.49V729.84q-21.15,14.48-42.27,14.48-25.57,0-40.94-13.16T1024,695.69q0-23.66,17.22-37.91T1087,643.51a66.94,66.94,0,0,1,17.67,2.14,100.08,100.08,0,0,1,18,7.32V640.56q0-11.82-7.39-18.92T1093,614.55q-16.11,0-28.53,12.41l-39.91-7.24q18.18-36.68,75.09-36.67,39,0,55.65,16T1172,648.69Zm-80.56,64.74q13.29,0,31.19-16v-13.9q-16-10.35-29.27-10.35-10.63,0-16.26,5t-5.61,14.34Q1071.44,713.45,1091.39,713.43Z"/><path class="cls-2" d="M1296.05,586.61V623h-28.67v67.84c0,4.83.93,8.46,2.81,10.86s5.37,3.63,10.49,3.63q6.35,0,15.37-3.25v34.44q-20,7.83-37.54,7.83-20.25,0-30.37-10.27T1218,705V623h-19.66V586.6H1218V562.51L1267.38,527v59.57Z"/><path class="cls-2" d="M1475.57,674.7H1359.68Q1361.45,692.6,1372,703t27.27,10.42q18.48,0,36.07-18.32l38.42,12.41q-12.7,19.07-31.48,28.6t-44.49,9.54q-25.72,0-45.46-9.68t-30.59-27.42q-10.87-17.73-10.86-41.69A82.87,82.87,0,0,1,1322.22,624a81.27,81.27,0,0,1,30.59-30.09,84,84,0,0,1,41.91-10.86q24.52,0,42.71,11.31t28,32.08Q1475.27,647.21,1475.57,674.7ZM1392.35,616q-13.3,0-21.36,7.68t-10.13,23.51h64.74q-2.05-13.89-11.3-22.55A31.05,31.05,0,0,0,1392.35,616Z"/><path class="cls-2" d="M1590.06,653.17V674h-16.39v38.78q0,4.14,1.61,6.21t6,2.07a26.65,26.65,0,0,0,8.78-1.86v19.69a59,59,0,0,1-21.46,4.48q-11.58,0-17.36-5.87t-5.79-16.6V674h-11.24V653.17h11.24V639.41l28.22-20.28v34h16.39Z"/><path class="cls-2" d="M1667.11,651.15q13.52,0,20.32,8.19t6.8,23.83v38.35h13.18V742h-41.57V684.52c0-3.67-.7-6.29-2.07-7.86s-3.68-2.36-6.88-2.36q-6.6,0-14.88,5.41v41.82h12.42V742h-55V721.53h14.36V635h-14.36V614.66H1642v45.79Q1655.71,651.14,1667.11,651.15Z"/><path class="cls-2" d="M1808.42,703.52h-66.23q1,10.23,7,16.18t15.58,6q10.56,0,20.62-10.48l22,7.09a47.23,47.23,0,0,1-18,16.35q-10.74,5.45-25.44,5.45t-26-5.54a41.29,41.29,0,0,1-17.49-15.66q-6.19-10.14-6.21-23.83a47.35,47.35,0,0,1,6.47-24.5,46.44,46.44,0,0,1,17.48-17.19,48,48,0,0,1,24-6.21q14,0,24.42,6.46a42.39,42.39,0,0,1,16,18.33Q1808.26,687.81,1808.42,703.52ZM1760.86,670c-5.06,0-9.14,1.47-12.21,4.39s-5,7.41-5.78,13.44h37a21.33,21.33,0,0,0-6.47-12.89A17.69,17.69,0,0,0,1760.86,670Z"/><path class="cls-2" d="M651.51,873V831.77H562.24v68.59h64.64v50.45H562.24v77.06h46.12v50.45H442.41v-50.45h42.38V831.77H442.41V781.32H708.47V873Z"/><path class="cls-2" d="M829.42,1027.08q17,0,36.66-15V919.67H834.35V871.18H931.9v159.44h33.9v47.69H866.08V1061q-30.95,20.49-60.11,20.5-30.15,0-46.9-16.76t-16.76-46.11V919.67H711.17V871.18h96.57v130.47q0,14.58,4.63,20T829.42,1027.08Z"/><path class="cls-2" d="M1106.65,871.18v48.49h-38.23v90.46q0,9.66,3.74,14.48t14,4.83q8.47,0,20.5-4.34V1071q-26.61,10.46-50.06,10.45-27,0-40.5-13.69t-13.5-38.73V919.66H976.38V871.17h26.21V839.05l65.83-47.3v79.41h38.23Z"/><path class="cls-2" d="M1244.36,1027.08q17,0,36.65-15V919.67h-31.72V871.18h97.55v159.44h33.9v47.69H1281V1061q-30.94,20.49-60.1,20.5-30.17,0-46.91-16.76t-16.75-46.11V919.67h-31.14V871.18h96.56v130.47q0,14.58,4.63,20T1244.36,1027.08Z"/><path class="cls-2" d="M1576.57,868.81v62.08q-27.19,1.77-43.25,8.58t-24.83,23.35q-8.77,16.56-8.77,47.31v20.5h41.19v47.69H1395.66v-47.69h38v-111h-36.06V871.18h96.56V923.8a79.4,79.4,0,0,1,27-39.61q19.71-15.77,48.87-15.78A42.06,42.06,0,0,1,1576.57,868.81Z"/><path class="cls-2" d="M1813.41,988.64H1658.9q2.37,23.85,16.46,37.74t36.36,13.9q24.63,0,48.08-24.44l51.24,16.55q-16.95,25.42-42,38.14t-59.31,12.71q-34.29,0-60.61-12.92t-40.8-36.55q-14.47-23.65-14.48-55.57,0-31.53,15.08-57.16a108.09,108.09,0,0,1,40.8-40.1,111.91,111.91,0,0,1,55.87-14.49q32.72,0,57,15.08t37.34,42.77Q1813,952,1813.41,988.64Zm-111-78.24q-17.73,0-28.48,10.25T1660.47,952h86.33q-2.76-18.53-15.08-30.06A41.38,41.38,0,0,0,1702.45,910.4Z"/><polygon class="cls-3" points="467.4 1239.41 513.45 1275.39 345.54 1489.76 299.6 1453.74 467.4 1239.41"/><polygon class="cls-4" points="380.34 1144.36 417.01 1189.68 205.2 1360.76 168.6 1315.47 380.34 1144.36"/><polygon class="cls-5" points="316.86 1032.07 342.43 1084.63 97.53 1203.67 71.99 1151.15 316.86 1032.07"/><polygon class="cls-6" points="280.26 908.45 293.35 965.35 27.88 1026.22 14.89 969.38 280.26 908.45"/><polygon class="cls-7" points="272.44 779.72 272.33 838.04 0 837.66 0.14 779.34 272.44 779.72"/><polygon class="cls-8" points="293.77 652.66 280.53 709.42 15.23 647.8 28.43 590.99 293.77 652.66"/><polygon class="cls-1" points="343.05 533.51 317.45 585.94 72.85 466.17 98.5 413.82 343.05 533.51"/><polygon class="cls-9" points="417.98 428.53 381.24 473.85 169.91 302.15 206.58 256.87 417.98 428.53"/><polygon class="cls-10" points="514.58 343.14 468.61 378.97 301.25 164.12 347.33 128.32 514.58 343.14"/><polygon class="cls-11" points="632.12 295.88 577.39 316.08 483.37 60.48 538.08 40.37 632.12 295.88"/><polygon class="cls-4" points="758.83 271.78 700.95 279.15 666.86 9 724.66 1.62 758.83 271.78"/><polygon class="cls-5" points="887.66 276.82 829.67 270.95 857.18 0 915.23 5.97 887.66 276.82"/><polygon class="cls-7" points="1025.69 305.78 969.84 288.91 1048.85 28.33 1104.63 45.15 1025.69 305.78"/><polygon class="cls-7" points="1141.27 362.9 1090.71 333.9 1226.3 97.71 1276.88 126.83 1141.27 362.9"/><path class="cls-2" d="M604.15,1337.13h27.74c21,0,38.23,17.12,38.23,39.11s-17.37,39.11-38.23,39.11H604.15Zm19.56,61h4.39c11.68,0,21.66-6.64,21.66-21.89,0-14-8.88-21.89-21.46-21.89h-4.59v43.78Z"/><path class="cls-2" d="M723.65,1354.35v13.07h22.06v17.22H723.65v13.49H746.9v17.22H704.09v-78.22H746.9v17.22Z"/><path class="cls-2" d="M825.2,1357.25a20.13,20.13,0,0,0-13-5.18c-3.59,0-8.38,2.18-8.38,6.54,0,4.56,5.29,6.33,8.68,7.47l5,1.56c10.48,3.21,18.56,8.71,18.56,21.37,0,7.77-1.79,15.77-7.78,21s-13.77,7.37-21.36,7.37a45.22,45.22,0,0,1-26.45-8.92l8.39-16.39c4.89,4.47,10.68,8.1,17.36,8.1,4.59,0,9.48-2.39,9.48-7.88,0-5.71-7.68-7.68-11.87-8.92-12.27-3.63-20.36-7-20.36-22.09,0-15.88,10.88-26.26,26-26.26a50,50,0,0,1,23.55,6.44Z"/><path class="cls-2" d="M889.82,1415.35H870.26v-78.22h19.56Z"/><path class="cls-2" d="M1002.55,1371.67c-.2,11.41-1,21.16-7.69,30.91-7.38,10.69-18.46,15.36-31,15.36-23.65,0-40.12-16.71-40.12-41.29,0-25.42,16.57-42.12,40.82-42.12,15.47,0,27.45,7.27,33.93,21.89l-18.56,8.09c-2.7-7.47-8.38-12.45-16.27-12.45-12.87,0-19.56,12.76-19.56,24.69,0,12.14,7,24.49,19.86,24.49,8.48,0,15-4.57,15.77-13.59h-16v-16Z"/><path class="cls-2" d="M1036.43,1337.13H1056l35.83,47.82h.19v-47.82h19.57v78.22H1092l-35.83-47.93h-.2v47.93h-19.56v-78.22Z"/><path class="cls-2" d="M657.94,1501.79a21,21,0,0,0-17.17-8.61c-12,0-20.06,9.54-20.06,21.68,0,12.35,8.19,21.27,20.36,21.27a22.13,22.13,0,0,0,16.86-8.3v24.38c-6.48,2.07-11.18,3.63-17.27,3.63a41,41,0,0,1-28.24-11.51c-8.28-7.78-12.07-17.95-12.07-29.57a41.78,41.78,0,0,1,11.08-28.63,40,40,0,0,1,28.64-12.66,44.52,44.52,0,0,1,17.86,3.94v24.38Z"/><path class="cls-2" d="M757.9,1513.2c0,25.32-17.46,43.16-41.62,43.16s-41.61-17.85-41.61-43.16c0-23.65,20-40.25,41.61-40.25S757.9,1489.55,757.9,1513.2Zm-62.88.1c0,13.49,9.58,23.35,21.26,23.35s21.26-9.85,21.26-23.35c0-10.78-9.58-20.64-21.26-20.64S695,1502.52,695,1513.3Z"/><path class="cls-2" d="M775.4,1475.55H795l35.83,47.82h.2v-47.82h19.56v78.22H831l-35.83-47.93H795v47.93H775.4Z"/><path class="cls-2" d="M901.69,1553.77H882.13v-61H866v-17.22h51.9v17.22H901.7v61Z"/><path class="cls-2" d="M953,1492.77v13.07H975v17.22H953v13.49H976.2v17.22H933.39v-78.22H976.2v17.22Z"/><path class="cls-2" d="M1038,1495.67a20.13,20.13,0,0,0-13-5.18c-3.59,0-8.38,2.18-8.38,6.54,0,4.56,5.29,6.33,8.68,7.47l5,1.56c10.48,3.21,18.56,8.71,18.56,21.37,0,7.77-1.79,15.77-7.78,21s-13.77,7.37-21.36,7.37a45.22,45.22,0,0,1-26.45-8.92l8.39-16.39c4.89,4.47,10.68,8.1,17.36,8.1,4.59,0,9.48-2.39,9.48-7.88,0-5.71-7.68-7.68-11.87-8.92-12.27-3.63-20.36-6.95-20.36-22.09,0-15.88,10.88-26.26,25.95-26.26a50,50,0,0,1,23.55,6.44Z"/><path class="cls-2" d="M1096.59,1553.77H1077v-61h-16.16v-17.22h51.9v17.22H1096.6v61Z"/><path class="cls-1" d="M631.82,1795.7s46.9,5.65,57.67,11.53c82.71,45.16-9.56,184.55,92.28,184.55,92.28,0-39.51,1.55,141.49,1.55l20-1.55c101.84,0,9.57-139.39,92.28-184.55,10.77-5.88,57.67-11.53,57.67-11.53V1738H631.83v57.67Z"/><g id="Layer_2-2" data-name="Layer 2"><path class="cls-2" d="M1646,1583.28h-10.75v-82.94h12.35c26.54,0,34.77,8.8,34.77,24,0,17.49-13.84,24.2-30.2,24.2H1646v34.76Zm0-44h3.43c11,0,22.88-2,22.88-15.18,0-13-12.81-14.52-23.45-14.52H1646v29.7Z"/><path class="cls-2" d="M1777,1583.28h-13l-25.39-35.09h-4.46v35.09h-10.75v-82.94h13c7.66,0,15.9.11,22.76,3.85a23.21,23.21,0,0,1-9.38,43Zm-42.9-43.67h3.43c11,0,22.88-2,22.88-15.18,0-13-12.81-14.85-23.45-14.85h-2.86v30Z"/><path class="cls-2" d="M1901.18,1541.81c0,24.64-20.25,43.23-45.18,43.23s-45.18-18.59-45.18-43.23c0-23.76,20.47-43.23,45.18-43.23S1901.18,1518.05,1901.18,1541.81Zm-10.76,0c0-18.26-14.18-33.55-34.43-33.55s-34.43,15.29-34.43,33.55c0,18.92,15.78,33.55,34.43,33.55S1890.42,1560.73,1890.42,1541.81Z"/><path class="cls-2" d="M1942.13,1500.34H1960c26.42,0,48.38,13.42,48.38,41,0,28.27-21.5,41.91-48.73,41.91h-17.5v-82.94Zm10.75,73.48h3.77c22,0,40.95-7.92,40.95-32s-19-32-40.95-32h-3.77Z"/><path class="cls-2" d="M2059.83,1500.34v49c0,13.53,4.23,26.07,20.82,26.07s20.82-12.54,20.82-26.07v-49h10.75v52.47c0,18.26-11.78,32.23-31.57,32.23s-31.57-14-31.57-32.23v-52.47Z"/><path class="cls-2" d="M2221.34,1516.18a35.68,35.68,0,0,0-22.76-8.14,33.77,33.77,0,1,0-.23,67.54,35.3,35.3,0,0,0,23-8.58v12.21a48.07,48.07,0,0,1-22.65,5.83c-24.59,0-45-18.81-45-42.79,0-24.53,20.47-43.67,45.87-43.67a42.87,42.87,0,0,1,21.73,5.61v12Z"/><path class="cls-2" d="M2265.61,1500.34h46.32v9.46h-35.57V1533h34.54v9.46h-34.54v31.35h35.57v9.46h-46.32Z"/><path class="cls-2" d="M2355.75,1500.34h17.84c26.42,0,48.38,13.42,48.38,41,0,28.27-21.5,41.91-48.73,41.91h-17.5v-82.94Zm10.75,73.48h3.77c22,0,40.95-7.92,40.95-32s-19-32-40.95-32h-3.77Z"/><path class="cls-2" d="M2527.78,1500.34h10.52c16.24,0,31.57,4.07,31.57,22.77,0,6.05-3.43,13.09-9.26,15.73v.22c10.18,1.76,17.27,11.33,17.27,21,0,16.61-14.75,23.21-30,23.21h-20.13v-82.94Zm10.75,36.74h2.75c10.18,0,18.53-2,18.53-13.86,0-11.66-8.24-13.64-18.3-13.64h-3v27.5Zm0,37h8.24c9.95,0,20.36-2.86,20.36-14.63s-12.35-14.08-22-14.08h-6.63V1574Z"/><path class="cls-2" d="M2612.43,1500.34h12.35l21.16,35.42,21.16-35.42h12.35l-28.14,46.86v36.08h-10.75V1547.2Z"/><path class="cls-2" d="M2035.07,1645.34h43.65l33.5,60.87,33.27-60.87h43.88v165.15h-42v-93l-35.16,61.34h-.7L2076.36,1718v92.48h-41.29Z"/><path class="cls-2" d="M2203.28,1645.34H2317v37.28h-71.72v27.13h64.65v35.15h-64.65v28.31h72.66v37.28H2203.28Z"/><path class="cls-2" d="M2327.14,1645.34h54.26c53.08,0,83.28,32.08,83.28,80.69v2.83c0,48.6-30.43,81.63-84,81.63h-53.56V1645.34Zm42.47,38v89.18h12.27c23.59,0,39.4-13.92,39.4-43.41V1727c0-29.73-15.81-43.65-39.4-43.65Z"/><path class="cls-2" d="M2474.59,1645.34h42.46v165.15h-42.46Z"/><path class="cls-2" d="M2578.63,1644.39h42.94l58.27,166.09h-44.59l-9.67-29.73h-51.9l-9.44,29.73h-43.65ZM2615,1746.78l-15.34-48.36-15.34,48.36Z"/><path class="cls-2" d="M1847.41,1810.75v-35.48h98v35.48Zm89.67-65.94v-35.48h-89.66v35.48Zm8.32-65.94v-35.48h-98v35.48Zm-206.59,41.39-27.61,46c4.78-9.83-2.93-15-7.74-16.49-8.08-3.1-33.43-8.09-49.88-12.9a63.26,63.26,0,0,1-18-8.36,44.17,44.17,0,0,1-18.69-36.26c0-10.21,5.09-51.56,68.51-51.56,52.13,0,66.28,30.48,67.52,48.71h-42.65c-1.51-6.64-7.5-14.45-25.8-14.56-4.22,0-21.13.44-22.77,11.42a9.87,9.87,0,0,0,3.95,9.8c2.62,2,7.31,3.07,9,3.58,7.71,2.32,24.59,5.57,32.89,7.61C1722,1710.77,1732.35,1715.14,1738.81,1720.26Zm-53.68,55.36c-16.77,0-27.73-4.28-31.31-21.54h-43.13c0,6.91,3.62,36.25,29.87,48.56,14.7,6.9,31.12,8.12,43.89,8.12l26.36-43.87C1709,1769.37,1705.32,1775.62,1685.13,1775.62Z"/><path class="cls-12" d="M1847.41,1643.39H1785l-46.19,76.87-27.61,46-.4.67-26.36,43.87h44.49l21.33-35.5h58v35.5h39.2V1643.39Zm-39.19,101.38h-39.65l39.65-66Z"/><path class="cls-12" d="M2680.64,1960.54H1635.71V1841.23H2680.64ZM1945.55,1932a39.4,39.4,0,0,0,23.9-8.09v-31.06h-26v12.92h10.32v9.67a13.43,13.43,0,0,1-7.53,1.95c-8.37,0-14.79-6.6-14.79-18.51v-.93c0-10.79,6.32-18,14.6-18,5.58,0,9.3,2.32,12.74,5.39l9.3-12.74a33.4,33.4,0,0,0-22.41-7.91c-18,0-31.34,13.58-31.34,33.11v1.3C1914.3,1919.42,1927.79,1932,1945.55,1932Zm78.83-1.12H2041v-20.18h6l11.06,20.18h18.88l-13.39-23.62c6.88-3.44,11.62-9.49,11.62-19.16v-.46c0-6.6-2-11.63-5.67-15.25-4.19-4.28-10.79-6.6-19.53-6.6h-25.57Zm16.65-33.47v-17h8.18c5.58,0,9.12,2.79,9.12,8.37v.19c0,5.21-3.35,8.46-9,8.46Zm116.41,34.68c17.48,0,30.23-13.67,30.23-33.11v-1.4c0-19.53-12.56-33-30.13-33s-30.23,13.67-30.23,33.11v1.4C2127.31,1918.58,2139.86,1932.06,2157.44,1932.06Zm.09-15.15c-7.72,0-13.12-6.88-13.12-18.13v-1c0-11.25,5.3-18,13-18s13.11,6.88,13.11,18.13v1C2170.55,1910.12,2165.34,1916.91,2157.53,1916.91ZM2267.61,1932c15.9,0,26.59-8.28,26.59-27.15v-39.06h-16.92v39.8c0,7.72-3.72,11.25-9.58,11.25s-9.58-3.72-9.58-11.53v-39.52h-16.83v39.34C2241.29,1923.6,2251.71,1932,2267.61,1932Zm82.09-1.12h16.65V1912h6.41c14.23-.19,25.58-7.62,25.58-23.25v-.37c0-14.6-10.05-22.6-25.39-22.6H2349.7Zm16.65-32.54v-18.23h5.77c6,0,9.48,3.07,9.48,9v.28c0,5.49-3.53,8.93-9.39,8.93Z"/><path class="cls-12" d="M2696.31,1845h-7.26v-3.71h18.52V1845h-7.26v19.08h-4Z"/><path class="cls-12" d="M2711.73,1841.28H2716l6.94,10.78,6.93-10.78h4.27v22.79h-4v-16.35l-7.2,10.75h-.13l-7.13-10.68v16.28h-3.94v-22.79Z"/></g></g></g></svg></a></div></div></div> <div class="principal-sponsors col-xl-4 col-lg-4 col-md-5 col-sm-6 col-xs-7 col-6 mx-auto bg-light"> <div class="d-flex flex-column "> <div class="principal-sponsors-header mx-auto pt-3 mb-0"> <div class="d-flex justify-content-center"> <h3 class="text-primary">PLATINUM SPONSORS</h3></div></div> <div> <img src='https://res.cloudinary.com/tbmg/f_auto,q_auto:best/v1614086394/ctf/extra/sponsors/sponsors_merged_2021.png' class=' lazyload blur-up' width='725' height='236' alt='Platinum Sponsors' /></div></div></div> <div class="col-xl-2 col-lg-2 col-md-2 d-md-block d-none"> <div class="d-flex flex-row-reverse"> <div id="login-menu" class="navbar-collapse collapse"> <ul class="navbar-nav ms-auto"><li class="nav-item"> <a class="nav-link" href="#" data-bs-toggle="modal" data-bs-target="#cb-form">Login</a></li> <li class="nav-item"> <a class="nav-link" href="/account/registration">Sign Up</a></li></ul></div></div></div></div> </nav> <nav class="main-nav bg-navbar navbar navbar-expand-sm navbar-light main-nav py-0"> <div class="main-nav-container container-xl mx-auto px-0"><div class="menu-top-nav"> <ul class="nav navbar-nav nav-bottom flex-nowrap d-md-flex d-none mx-auto"> <li class="nav-item"> <a class="nav-link " href="/how-to-vote">How to Vote</a></li></ul></div><div class="menu-top-nav"> <ul class="nav navbar-nav nav-bottom flex-nowrap d-md-flex d-none mx-auto"> <li class="nav-item"> <a class="nav-link " href="/about">About</a></li> <li class="nav-item"> <a class="nav-link " href="/contest-rules">Rules &amp; Tips</a></li> <li class="nav-item"> <a class="nav-link " href="/2024/entries">Entries</a></li> <li class="nav-item"> <a class="nav-link " href="/archive">Archive</a></li> <li class="nav-item"> <a class="nav-link " href="/prizes">Prizes</a></li> <li class="nav-item"> <a class="nav-link " href="/faqs">FAQs</a></li> <li class="nav-item"> <a class="nav-link contact-us" href="#contactus">Contact</a></li></ul></div><div id="navbarSideContainer" class="navbar-side h-100 p-0 bg-light"> <ul class="nav flex-column nav"> <li id="navbar-side-close" class="nav-item text-right bg-secondary"> <a class="nav-link pb-0" href="#"> <i class="fas fa-2x fa-window-close"></i> </a></li> <li class="nav-item bg-secondary"><form id="searchform" class="form-inline nav-link w-75" action="/search" method="get"> <div class="input-group"> <input type="text" name="q" placeholder="Search" id="searchbox" class="form-control" value=""> <div class="input-group-append"> <button class="btn btn-primary" type="button" onclick="$('#searchform').submit()"> <span class="fas fa-search"></span> </button></div></div></form></li><li class="nav-item"> <a class="nav-link" href="#" data-bs-toggle="modal" data-bs-target="#cb-form">Login</a></li> <li class="nav-item"> <a class="nav-link" href="/account/registration">Sign Up</a></li> <!--<hr class="border border-secondary w-75">--> <hr class="border-secondary m-0 w-100"> <li class="nav-item"> <a class="nav-link" href="/how-to-vote">How to Vote</a></li><hr class="border-secondary m-0 w-100"> <li class="nav-item"> <a class="nav-link" href="/about">About</a></li> <li class="nav-item"> <a class="nav-link" href="/contest-rules">Rules &amp; Tips</a></li> <li class="nav-item"> <a class="nav-link" href="/2024/entries">Entries</a></li> <li class="nav-item"> <a class="nav-link" href="/archive">Archive</a></li> <li class="nav-item"> <a class="nav-link" href="/prizes">Prizes</a></li> <li class="nav-item"> <a class="nav-link" href="/faqs">FAQs</a></li> <li class="nav-item"> <a class="nav-link" href="#contactus">Contact</a></li></ul></div><div class="overlay"></div></div> </nav></div> </header> <section id="print-only-message" class="printmessage"> </section> <!--googleon: all--> <div class="container"> <nav aria-label="breadcrumb"> <ol itemscope itemtype="https://schema.org/BreadcrumbList" class="breadcrumb pt-3 text-uppercase"> <li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="/" class="pathway"><span itemprop="name">Home</span></a> <meta itemprop="position" content="1"></li> <li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="/2024" class="pathway"><span itemprop="name">2024</span></a> <meta itemprop="position" content="2"></li> <li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="/2024/entries" class="pathway"><span itemprop="name">Entries</span></a> <meta itemprop="position" content="3"></li> <li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="/2024/entries/medical" class="pathway"><span itemprop="name">Medical</span></a> <meta itemprop="position" content="4"></li> <li class="breadcrumb-item active" aria-current="page"> <span itemprop="name"> Entry</span> <meta itemprop="position" content="5"></li></ol> </nav> <!-- Main story section --> <section id="content" class="row my-3"> <section id="mainstory" class="left-column col-lg-8 col-md-7 .col-12"> <div> <!--googleoff: all--> <div id="system-message-container"></div> <!--googlon: all--> <div class="item-page" itemscope itemtype="https://schema.org/Article"> <meta itemprop="inLanguage" content="en-GB"/> <div class="card entry"> <div class="card-header bg-primary"> <h2 class="font-weight-normal text-white mb-0" itemprop="headline">NETrolyze: A Novel Immunotherapy for Triple-Negative Breast Cancer</h2></div><aside class="ms-auto me-2 mt-1 mb-0 d-inline-block"> <ul class="list-inline mb-0"> <li class="list-inline-item"> <a href="https://www.shareaholic.com/api/share/?apikey=18e410eb5fc79f84f064431251ed4713&apitype=1&v=1&service=facebook&link=https://contest.techbriefs.com/2024/entries/medical/12814&title=NETrolyze%3A+A+Novel+Immunotherapy+for+Triple-Negative+Breast+Cancer" rel="nofollow" target="_blank"><i class="fa-brands fa-facebook text-secondary"></i></a></li> <li class="list-inline-item"> <i class=""></i> <a href="https://www.shareaholic.com/api/share/?apikey=18e410eb5fc79f84f064431251ed4713&apitype=1&v=1&service=twitter&link=https://contest.techbriefs.com/2024/entries/medical/12814&title=NETrolyze%3A+A+Novel+Immunotherapy+for+Triple-Negative+Breast+Cancer" rel="nofollow" target="_blank"><i class="fa-brands fa-x-twitter text-secondary"></i></a></li> <li class="list-inline-item"> <a href="https://www.shareaholic.com/api/share/?apikey=18e410eb5fc79f84f064431251ed4713&apitype=1&v=1&service=linkedin&link=https://contest.techbriefs.com/2024/entries/medical/12814&title=NETrolyze%3A+A+Novel+Immunotherapy+for+Triple-Negative+Breast+Cancer" rel="nofollow" target="_blank"><i class="fa-brands fa-linkedin text-secondary"></i></a></li> <li class="list-inline-item"> <a href="#" onclick="$('html, body').animate({scrollTop:($('#disqus_thread').offset().top)},500);"><i class="fa-duotone fa-comment-alt text-secondary"></i></a></li></ul> </aside><div class="card-body entry-header pt-0"> <!--<div class="container">--> <!-- <div class="row">--> <div class="d-flex"> <div class="flex-fill" itemprop="author" itemscope itemtype="https://schema.org/Person" itemref="thisauthor"> <meta itemprop="url" content="https://contest.techbriefs.com/profile?user=121220"/> <a href="/profile?user=121220"> <span itemprop="name">Sam Currier</span> </a> <br/> <span itemprop="address" itemscope itemtype="https://schema.org/PostalAddress"> <span itemprop="addressLocality">West Bloomfield</span>, <span itemprop="addressCountry" itemscope itemtype="https://schema.org/Country"> <span itemprop="name">United States</span> </span> </span></div> <div class="flex-fill px-2"> <a href="/2024/top-votes">Votes</a>:&nbsp;7<br/>Views:&nbsp;1220</div> <div class="flex-fill"> <a href="/2024/entries/medical"> <span itemprop="articleSection">Medical</span> </a> <br/> <span itemprop="datePublished" content="2024-06-14">Jun 14, 2024</span></div></div> <!--</div>--> <!--</div>--> </div> <div itemprop="articleBody"> <div id="entry-carousel-modal-outer-1" class="modal fade " tabindex="-1" role="dialog" aria-labelledby="myExtraLargeModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered modal-xl"> <div class="modal-content"> <div class="modal-header bg-primary"> <a href="#" class="ms-auto" data-bs-dismiss="modal" aria-label="Close"> <span aria-hidden="true"><i class="fas fa-times-square fa-2x text-white"></i></span> </a></div> <div class="modal-body"> <img src='https://res.cloudinary.com/tbmg/c_scale,w_1000,f_auto,q_auto/v1720428918/ctf/entries/2024/0614111502-Create_The_Future_1.png' class='d-block w-100 lazyload blur-up' width='1000' alt='' /></div></div></div></div> <div id="entry-carousel-modal-outer-2" class="modal fade " tabindex="-1" role="dialog" aria-labelledby="myExtraLargeModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered modal-xl"> <div class="modal-content"> <div class="modal-header bg-primary"> <a href="#" class="ms-auto" data-bs-dismiss="modal" aria-label="Close"> <span aria-hidden="true"><i class="fas fa-times-square fa-2x text-white"></i></span> </a></div> <div class="modal-body"> <img src='https://res.cloudinary.com/tbmg/c_scale,w_1000,f_auto,q_auto/v1720428918/ctf/entries/2024/0614111502-Create_the_Future_2.png' class='d-block w-100 lazyload blur-up' width='1000' alt='' /></div></div></div></div> <div id="entry-carousel-modal-outer-3" class="modal fade " tabindex="-1" role="dialog" aria-labelledby="myExtraLargeModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered modal-xl"> <div class="modal-content"> <div class="modal-header bg-primary"> <a href="#" class="ms-auto" data-bs-dismiss="modal" aria-label="Close"> <span aria-hidden="true"><i class="fas fa-times-square fa-2x text-white"></i></span> </a></div> <div class="modal-body"> <img src='https://res.cloudinary.com/tbmg/c_scale,w_1000,f_auto,q_auto/v1720428918/ctf/entries/2024/0614111502-Create_the_future_3.png' class='d-block w-100 lazyload blur-up' width='1000' alt='' /></div></div></div></div> <div class="card-body entry-images border-bottom border-top p-1"> <div id="entry-carousel" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-inner pt-2"> <div class="carousel-item active"> <a class="badge bg-primary float-end position-relative me-4" style="z-index: 10; top: 1rem" href="#" role="button" data-bs-target="#entry-carousel-modal-outer-1" data-bs-toggle="modal"> <div data-bs-toggle="tooltip" data-bs-placement="top" title="View fullsize image"> <i class="fas fa-expand-arrows "></i></div> </a> <a href="#" data-bs-target="#entry-carousel-modal-outer-1" data-bs-toggle="modal"> <span itemprop="associatedMedia" itemscope itemtype="https://schema.org/ImageObject"> <img src='https://res.cloudinary.com/tbmg/c_scale,w_800,f_auto,q_auto/v1720428918/ctf/entries/2024/0614111502-Create_The_Future_1.png' class='d-block w-100 mt-n4 lazyload blur-up' width='800' alt='' /><meta itemprop="url" content="https://contest.techbriefs.com/https://res.cloudinary.com/tbmg/q_auto,f_auto/ctf/stories/entries/2024/0614111502-Create_The_Future_1.png"/> <meta itemprop="height" content="600"/> <meta itemprop="width" content="1200"/> </span> </a></div> <div class="carousel-item"> <a class="badge bg-primary float-end position-relative me-4" style="z-index: 10; top: 1rem" href="#" role="button" data-bs-target="#entry-carousel-modal-outer-2" data-bs-toggle="modal"> <div data-bs-toggle="tooltip" data-bs-placement="top" title="View fullsize image"> <i class="fas fa-expand-arrows "></i></div> </a> <a href="#" data-bs-target="#entry-carousel-modal-outer-2" data-bs-toggle="modal"> <span itemprop="associatedMedia" itemscope itemtype="https://schema.org/ImageObject"> <img src='https://res.cloudinary.com/tbmg/c_scale,w_800,f_auto,q_auto/v1720428918/ctf/entries/2024/0614111502-Create_the_Future_2.png' class='d-block w-100 mt-n4 lazyload blur-up' width='800' alt='' /><meta itemprop="url" content="https://contest.techbriefs.com/https://res.cloudinary.com/tbmg/q_auto,f_auto/ctf/stories/entries/2024/0614111502-Create_the_Future_2.png"/> <meta itemprop="height" content="600"/> <meta itemprop="width" content="1200"/> </span> </a></div> <div class="carousel-item"> <a class="badge bg-primary float-end position-relative me-4" style="z-index: 10; top: 1rem" href="#" role="button" data-bs-target="#entry-carousel-modal-outer-3" data-bs-toggle="modal"> <div data-bs-toggle="tooltip" data-bs-placement="top" title="View fullsize image"> <i class="fas fa-expand-arrows "></i></div> </a> <a href="#" data-bs-target="#entry-carousel-modal-outer-3" data-bs-toggle="modal"> <span itemprop="associatedMedia" itemscope itemtype="https://schema.org/ImageObject"> <img src='https://res.cloudinary.com/tbmg/c_scale,w_800,f_auto,q_auto/v1720428918/ctf/entries/2024/0614111502-Create_the_future_3.png' class='d-block w-100 mt-n4 lazyload blur-up' width='800' alt='' /><meta itemprop="url" content="https://contest.techbriefs.com/https://res.cloudinary.com/tbmg/q_auto,f_auto/ctf/stories/entries/2024/0614111502-Create_the_future_3.png"/> <meta itemprop="height" content="600"/> <meta itemprop="width" content="1200"/> </span> </a></div></div> <div class="container pt-2 pb-1 border-top"> <div class="row"> <div class="col-1"></div> <div class="col-10 carousel-indicators " data-bs-toggle="tooltip" data-bs-placement="bottom" title="Goto slide"> <a class="w-33 px-2 active" href="#" type="button" data-bs-target="#entry-carousel" data-bs-slide-to="0" aria-label="Slide 1" > <img src='https://res.cloudinary.com/tbmg/ar_4:3,c_thumb,g_auto:subject,f_auto,q_auto/c_limit,w_200/v1720428918/ctf/entries/2024/0614111502-Create_The_Future_1.png' class='w-100 mb-0 lazyload blur-up' width='200' alt='' /></a> <a class="w-33 px-2" href="#" type="button" data-bs-target="#entry-carousel" data-bs-slide-to="1" aria-label="Slide 2" > <img src='https://res.cloudinary.com/tbmg/ar_4:3,c_thumb,g_auto:subject,f_auto,q_auto/c_limit,w_200/v1720428918/ctf/entries/2024/0614111502-Create_the_Future_2.png' class='w-100 mb-0 lazyload blur-up' width='200' alt='' /></a> <a class="w-33 px-2" href="#" type="button" data-bs-target="#entry-carousel" data-bs-slide-to="2" aria-label="Slide 3" > <img src='https://res.cloudinary.com/tbmg/ar_4:3,c_thumb,g_auto:subject,f_auto,q_auto/c_limit,w_200/v1720428918/ctf/entries/2024/0614111502-Create_the_future_3.png' class='w-100 mb-0 lazyload blur-up' width='200' alt='' /></a></div> <div class="col-1"></div></div></div></div></div> <div class="card-body entry-description border-bottom p-3"> <img src='https://res.cloudinary.com/tbmg/f_auto,q_auto:best/v1727585420/ctf/extra/badges/2024/grand_prize.jpg' class='img-thumbnail ms-2 w-35 lazyload blur-up' width='200' alt='' /><img src='https://res.cloudinary.com/tbmg/f_auto,q_auto:best/v1727585420/ctf/extra/badges/2024/top_100.jpg' class='img-thumbnail ms-2 w-35 lazyload blur-up' width='200' alt='' /><p><p>Triple-negative breast cancer (TNBC) is a highly aggressive subtype of breast cancer that poses significant challenges in treatment. The primary problem with TNBC is the lack of effective treatments to stop cancer metastasis, the spread of malignant cancer cells from the primary tumor to distant organs. TNBC tumors exhibit high rates of metastasis and are becoming increasingly more prevalent, disproportionately affecting African American women. The current standard of care strategies, such as notoriously toxic chemotherapy, require weeks to months to demonstrate efficacy and often fail due to tumor resistance. Shockingly, there is currently no therapeutic option that specifically targets and prevents metastasis following the initial detection of TNBC.</p> <p>We have designed an innovative first-in-class therapeutic injectable that directly targets the metastatic process in TNBC. Our product, NETrolyze, consists of a small molecule loaded into a slow-release gel, designed to continuously fight off metastasis. It systematically targets only the cancerous tumor while preserving the integrity of the body’s overall immune system. NETrolyze works by degrading neutrophil extracellular traps (NETs), a recently discovered metastasis-promoting material found in the microenvironment of TNBC tumors. By attacking this immune material rather than the tumor itself, NETrolyze has been developed around the problem that prevents others from conquering cancer metastasis. The localized delivery mechanism of NETrolyze circumvents the complications associated with chemotherapy by effectively preventing cancer spread while maintaining the patient's overall health.</p> <p>Over a decade of research and development has been dedicated to creating and rigorously testing NETrolyze. Proof of concept studies conducted in mouse models have confirmed its clinical efficacy and safety. NETrolyze has been manufactured in collaboration with a contract laboratory, resulting in a GMP-certified safe formulation, and the intellectual property is protected through patents and licensing agreements.</p> <p>It is estimated that NETrolyze could enable thousands of TNBC patients to avoid toxic chemotherapies and prohibitively expensive treatments associated with advanced metastatic disease. The successful development of NETrolyze represents a significant step forward in the fight against TNBC and has the potential to transform the lives of countless patients and their families, offering hope in the face of this devastating disease.</p> <p> </p></p></div> <div class="card-body"></div><ul class="list-group list-group-flush entry-prize-list"> <li class="list-group-item"> <h3>Awards</h3></li> <li class="list-group-item"> <img src='https://res.cloudinary.com/tbmg/f_auto,q_auto:best/v1727585420/ctf/extra/badges/2024/grand_prize.jpg' class=' lazyload blur-up' width='200' alt='' />2024 Grand Prize Winner</li> <li class="list-group-item"> <img src='https://res.cloudinary.com/tbmg/f_auto,q_auto:best/v1727585420/ctf/extra/badges/2024/top_100.jpg' class=' lazyload blur-up' width='200' alt='' />2024 Top 100 Entries</li></ul> <div class="card-body entry-voting border-bottom p-3"> <h3 class="mb-0">Voting</h3> <p class="voting-message"> Voting is closed!</p></div> <div class="card-body"></div><ul class="list-group list-group-flush entry-prize-list border-top-0"> <li class="list-group-item"> <h3>ABOUT THE ENTRANT</h3></li> <li class="list-group-item"> <div class="row"> <div class="col-4"><b>Name: </b></div> <div class="col">Sam Currier</div></div></li> <li class="list-group-item"> <div class="row"> <div class="col-4"><b>Type of entry: </b></div> <div class="col">team<br/></div></div> <div class="row"> <div class="col-4"><b>Team members:</b></div> <div class="col"> <ul class="blah list-group"> <li class="list-group-item"> Sam Currier</li> <li class="list-group-item"> Priyan Weerrappuli</li></ul></div></div></li></ul></div></div></div></div> </section> <!--googleoff: all--> <section id="sidebar" class="right-column col-lg-4 col-md-5 d-md-block d-none"> <div><div class="module card text-center mb-3"> <div class="card-header py-1"> <h4>Gold Sponsor</h4></div> <div id="mod-custom237" class="mod-custom custom"> <p><a href="/sponsors/12071" target="_blank" rel="noopener noreferrer"> <img style="padding-top: 10px;" data-src="https://res.cloudinary.com/tbmg/q_auto,f_auto/ctf/extra/sponsors/Zeus-Logo-200.png" alt="Zeus logo" border="0" / class="lazyload"></a></p></div></div> <div class="module card text-center mb-3"> <div class="card-header py-1"> <h4>View Entries by</h4></div> <div id="mod-custom260" class="mod-custom custom"> <div class="card-body"> <h4>Contest Category</h4></div> <ul class="list-group list-group-flush"> <li class="list-group-item"><a href="/2024/entries/aerospace-and-defense/by-date">Aerospace &amp; Defense</a></li> <li class="list-group-item"><a href="/2024/entries/automotive-transportation/by-date">Automotive/​​​Transportation</a></li> <li class="list-group-item"><a href="/2024/entries/medical/by-date">Medical</a></li> <li class="list-group-item"><a href="/2024/entries/electronics/by-date">Electronics</a></li> <li class="list-group-item"><a href="/2024/entries/manufacturing-and-materials/by-date">Manufacturing &amp; Materials</a></li> <li class="list-group-item"><a href="/2024/entries/robotics-and-automation/by-date">Robotics &amp; Automation</a></li> <li class="list-group-item"><a href="/2024/entries/sustainable-technology/by-date">Sustainable Technology</a></li></ul> <div class="card-body"> <h4>Also</h4></div> <ul class="list-group list-group-flush"> <li class="list-group-item"><a href="/tags">Tag Cloud</a></li> <li class="list-group-item"><a href="/2024/entrants">2024 Entrants</a></li> <li class="list-group-item"><a href="/2024/top-votes">Number of Votes</a></li> <li class="list-group-item"><a href="/2024/entries/by-views">Number of Page Views</a></li> <li class="list-group-item"><a href="/2024/entries">View All Entries</a></li></ul></div></div> <div class="module card text-center mb-3"> <div class="card-header py-1"> <h4>2024 Contest Results</h4></div> <div id="mod-custom216" class="mod-custom custom"> <ul class="list-group list-group-flush"> <li class="list-group-item"><a href="/2024/winners">Grand Prize &amp; Category Winners</a></li> <li class="list-group-item"><a href="/2024/top-100">Top 100 Entries</a></li> <li class="list-group-item"><a href="/2024/entries">Browse All the Entries</a></li> <li class="list-group-item"><a href="/2024/top-votes">Final Voting Scoreboard</a></li> <li class="list-group-item"><a href="/2024/judges">Meet the Judges </a></li></ul></div></div> <div class="_right"> <h3>Follow Us</h3> <div id="ctf_followus" class="mt-3"> <a class="text-info fs-5" href="https://www.shareaholic.com/v2/follow/?apikey=18e410eb5fc79f84f064431251ed4713&service_nickname=facebook&username=CreateTheFutureContest" rel="nofollow" target="_blank"><i class="fa-brands fa-facebook fa-2xl"></i></a> <a class="text-info fs-5 ms-4" href="https://www.shareaholic.com/v2/follow/?apikey=18e410eb5fc79f84f064431251ed4713&service_nickname=twitter&username=CTFcontest" rel="nofollow" target="_blank"><i class="fa-brands fa-twitter fa-2xl"></i></a> <a class="text-info fs-5 ms-4" href="https://www.shareaholic.com/v2/follow/?apikey=18e410eb5fc79f84f064431251ed4713&service_nickname=linkedin_company&username=sae-media-group" rel="nofollow" target="_blank"><i class="fa-brands fa-linkedin fa-2xl"></i></a></div></div></div> </section> <!--googlon: all--> </section> <!--googleoff: all--> <div id="footer"> <footer> <div class="loginbar"> <div id="cb-form" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" > <div class="modal-dialog modal-sm mt-5" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Sign In</h5> <button type="button" class="btn btn-secondary" data-bs_dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button></div> <div class="modal-body"> <form action="https://contest.techbriefs.com/account/login" method="post" id="login-form" class="form-inline cbLoginForm" data-bs-target="#cb-form"> <input type="hidden" name="option" value="com_comprofiler"/> <input type="hidden" name="view" value="login"/> <input type="hidden" name="op2" value="login"/> <input type="hidden" name="return" value="B:aHR0cHM6Ly9jb250ZXN0LnRlY2hicmllZnMuY29tLzIwMjQvZW50cmllcy9tZWRpY2FsLzEyODE0"/> <input type="hidden" name="message" value="0"/> <input type="hidden" name="loginfrom" value="loginmodule"/> <input type="hidden" name="5033ef8958a3a2518dabc722fbaac5b0" value="1" /> <div class="form-group mb-3 w-100"> <input name="username" type="username" class="form-control col-8" id="inputUserName" aria-describedby="userNameHelp" placeholder="Username"></div> <div class="form-group mb-3 w-100"> <input name="passwd" type="password" class="form-control col-8" id="inputPassword" placeholder="Password"></div> <button type="submit" class="btn btn-primary offset-2 col-8 mb-3">Submit <i class="fas fa-sign-in"></i></button> <a href="https://contest.techbriefs.com/account/forgot-login" class=" offset-2 col-8"> <span class="fas fa-unlock-alt"></span></span> Forgot Login? </a></form></div></div></div></div></div> <div class=" notify"> <div id="mod-custom142" class="mod-custom custom"> <p> Contest Notifications: <a href="/2023/winners">Click here for the full list of 2023 winning entries</a></p></div></div> <div class=""> <ul class="mod-menu mod-list nav "> <li class="nav-item item-10"><a href="https://www.saemediagroup.com/" >© 2024 SAE Media Group</a></li><li class="nav-item item-9"><a href="/privacy" class="ms-3">Privacy Policy</a></li><li class="nav-item item-854"><a href="https://status.saemediagroup.com/" class="ms-3">Service Status</a></li></ul></div> </footer> <!-- End of footer --> </div> <!--googleon: all--> </div> <!--googleoff: all--> <script src="https://cdnjs.cloudflare.com/ajax/libs/cloudinary-core/2.13.1/cloudinary-core-shrinkwrap.min.js" tb-donotmove crossorigin="anonymous" referrerpolicy="no-referrer" integrity="sha512-stp48jOOmT4TXnB4bMJ0rlcR7XagE92cqr7pEb+oFQox6qNSyKiN31GajDsg5VVn+HgM5mhOZinSRXowsRmgPg=="></script><script src="https://kit.fontawesome.com/796c614b26.js" tb-donotmove async crossorigin="anonymous" referrerpolicy="no-referrer"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/masonry/4.2.2/masonry.pkgd.min.js" tb-donotmove async crossorigin="anonymous" referrerpolicy="no-referrer" integrity="sha512-JRlcvSZAXT8+5SQQAvklXGJuxXTouyq8oIMaYERZQasB8SBDHZaUbeASsJWpk0UUrf89DP3/aefPPrlMR1h1yQ=="></script><script src="https://cdnjs.cloudflare.com/ajax/libs/lazysizes/5.3.2/lazysizes.min.js" tb-donotmove async crossorigin="anonymous" referrerpolicy="no-referrer" integrity="sha512-q583ppKrCRc7N5O0n2nzUiJ+suUv7Et1JGels4bXOaMFQcamPk9HjdUknZuuFjBNs7tsMuadge5k9RzdmO+1GQ=="></script><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" tb-donotmove crossorigin="anonymous" referrerpolicy="no-referrer" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g=="></script><script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.3/js/bootstrap.bundle.min.js" tb-donotmove crossorigin="anonymous" referrerpolicy="no-referrer" integrity="sha512-i9cEfJwUwViEPFKdC1enz4ZRGBj8YQo6QByFTF92YXHi7waCqyexvRD75S5NVTsSiTv7rKWqG9Y5eFxmRsOn0A=="></script><script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.14.0-beta3/js/bootstrap-select.min.js" defer tb-donotmove crossorigin="anonymous" referrerpolicy="no-referrer" integrity="sha512-yrOmjPdp8qH8hgLfWpSFhC/+R9Cj9USL8uJxYIveJZGAiedxyIxwNw4RsLDlcjNlIRR4kkHaDHSmNHAkxFTmgg=="></script><script type="text/javascript" tb-donotmove> $(function () { var cl = cloudinary.Cloudinary.new({ cloud_name: "tbmg" }); cl.config({ defaultBreakpoints: [100,200,400,500,800,1000,1200], responsive_use_breakpoints: true, }); cl.responsive(); }); var match_md_max = window.matchMedia("(max-width: 991px)"); $(function () { var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')) var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) { return new bootstrap.Tooltip(tooltipTriggerEl) }) }); </script> <link rel="preload" href="https://cdn.shareaholic.net/assets/pub/shareaholic.js" as="script"/> <meta name="shareaholic:site_id" content="18e410eb5fc79f84f064431251ed4713"/> <script data-cfasync="false" async src="https://cdn.shareaholic.net/assets/pub/shareaholic.js"></script> <script tb-donotmove> window.fwSettings = { 'widget_id': 30000000144 }; !function () { if ("function" != typeof window.FreshworksWidget) { var n = function () { n.q.push(arguments) }; n.q = [], window.FreshworksWidget = n } }() </script> <script type='text/javascript' src='https://widget.freshworks.com/widgets/30000000144.js' async defer tb-donotmove> </script> <script src="/media/system/js/core.js" tb-donotmove></script> <!--googleon: all--> <!-- moved to end by ntb_minifier --> <link href="https://olytics.omeda.com/olytics/css/v3/p/olytics.css" rel="stylesheet" /> <link href="/components/com_comprofiler/plugin/templates/default/bootstrap.min.css?v=49a2bdfe30936590" rel="stylesheet" /> <link href="/components/com_comprofiler/plugin/templates/default/fontawesome.min.css?v=49a2bdfe30936590" rel="stylesheet" /> <link href="/components/com_comprofiler/plugin/templates/default/template.min.css?v=49a2bdfe30936590" rel="stylesheet" /> <script src="/media/system/js/core.js?37ffe4186289eba9c5df81bea44080aff77b9684"></script> <script src="/media/vendor/webcomponentsjs/js/webcomponents-bundle.min.js?2.8.0" nomodule defer></script> <script src="/media/vendor/bootstrap/js/bootstrap-es5.min.js?5.3.2" nomodule defer></script> <script src="/media/vendor/bootstrap/js/tab.min.js?5.3.2" type="module"></script> <script src="/media/vendor/bootstrap/js/popover.min.js?5.3.2" type="module"></script> <script src="/media/vendor/bootstrap/js/dropdown.min.js?5.3.2" type="module"></script> <script src="/media/vendor/bootstrap/js/modal.min.js?5.3.2" type="module"></script> <script src="/media/vendor/bootstrap/js/carousel.min.js?5.3.2" type="module"></script> <link rel="stylesheet" href="/templates/ctf_2019/css/template.min.css?t=1716788610" crossorigin="anonymous" referrerpolicy="no-referrer" integrity="sha512-F9gZzNqGLMtFzYq2oxq8kTyzLIjCuSsA2lb2mTTPvqkKnEZ0oqTEpujAJ5zywetxQT4izs4tIjAWmpw/QYCXPQ=="/> <script src="https://cdnjs.cloudflare.com/ajax/libs/lazysizes/5.3.2/plugins/print/ls.print.min.js" defer crossorigin="anonymous" referrerpolicy="no-referrer" integrity="sha512-tY3D/iSWSdQE2NSLW/mRWQd/bvHAGjyCLRwSd23sqNbbgVnUaah2t+ZpX7hdBOskZ7PqYvwe4E+qxNARGojJGQ=="></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/11.14.5/sweetalert2.all.min.js" crossorigin="anonymous" referrerpolicy="no-referrer" integrity="sha512-m4zOGknNg3h+mK09EizkXi9Nf7B3zwsN9ow+YkYIPZoA6iX2vSzLezg4FnW0Q6Z1CPaJdwgUFQ3WSAUC4E/5Hg=="></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.14.0-beta3/css/bootstrap-select.min.css" media="print" onload="this.media='all'" crossorigin="anonymous" referrerpolicy="no-referrer" integrity="sha512-g2SduJKxa4Lbn3GW+Q7rNz+pKP9AWMR++Ta8fgwsZRCUsawjPvF/BxSMkGS61VsR9yinGoEgrHPGPn2mrj8+4w=="/> <!-- inline scripts moved by ntb_minifier --> <script> /*! inlined from /media/plg_system_webauthn/js/login.min.js by ntb_minifier */ window.Joomla=window.Joomla||{};((Joomla,document)=>{const interpolateParameters=(object,prefix='')=>{let encodedString='';Object.keys(object).forEach(prop=>{if(typeof object[prop]!=='object'){if(encodedString.length>0){encodedString+='&';} if(prefix===''){encodedString+=`${encodeURIComponent(prop)}=${encodeURIComponent(object[prop])}`;}else{encodedString+=`${encodeURIComponent(prefix)}[${encodeURIComponent(prop)}]=${encodeURIComponent(object[prop])}`;} return;} encodedString+=`${interpolateParameters(object[prop], prop)}`;});return encodedString;};const findField=(form,fieldSelector)=>{const elInputs=form.querySelectorAll(fieldSelector);if(!elInputs.length){return null;} return elInputs[0];};const lookForField=(outerElement,fieldSelector)=>{let elInput=null;if(!outerElement){return elInput;} const elElement=outerElement.parentElement;if(elElement.nodeName==='FORM'){elInput=findField(elElement,fieldSelector);return elInput;} const elForms=elElement.querySelectorAll('form');if(elForms.length){for(let i=0;i<elForms.length;i+=1){elInput=findField(elForms[i],fieldSelector);if(elInput!==null){return elInput;}}} return null;};const handleLoginError=message=>{Joomla.renderMessages({error:[message]});};const handleLoginChallenge=publicKey=>{const arrayToBase64String=a=>btoa(String.fromCharCode(...a));const base64url2base64=input=>{let output=input.replace(/-/g,'+').replace(/_/g,'/');const pad=output.length%4;if(pad){if(pad===1){throw new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding');} output+=new Array(5-pad).join('=');} return output;};if(!publicKey.challenge){handleLoginError(Joomla.Text._('PLG_SYSTEM_WEBAUTHN_ERR_INVALID_USERNAME'));return;} publicKey.challenge=Uint8Array.from(window.atob(base64url2base64(publicKey.challenge)),c=>c.charCodeAt(0));if(publicKey.allowCredentials){publicKey.allowCredentials=publicKey.allowCredentials.map(data=>{data.id=Uint8Array.from(window.atob(base64url2base64(data.id)),c=>c.charCodeAt(0));return data;});} navigator.credentials.get({publicKey}).then(data=>{const publicKeyCredential={id:data.id,type:data.type,rawId:arrayToBase64String(new Uint8Array(data.rawId)),response:{authenticatorData:arrayToBase64String(new Uint8Array(data.response.authenticatorData)),clientDataJSON:arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),signature:arrayToBase64String(new Uint8Array(data.response.signature)),userHandle:data.response.userHandle?arrayToBase64String(new Uint8Array(data.response.userHandle)):null}};const paths=Joomla.getOptions('system.paths');window.location=`${paths ? `${paths.base}/index.php` : window.location.pathname}?${Joomla.getOptions('csrf.token')}=1&option=com_ajax&group=system&plugin=webauthn&`+`format=raw&akaction=login&encoding=redirect&data=${btoa(JSON.stringify(publicKeyCredential))}`;}).catch(error=>{handleLoginError(error);});};Joomla.plgSystemWebauthnLogin=formId=>{const elFormContainer=document.getElementById(formId);const elUsername=lookForField(elFormContainer,'input[name=username]');const elReturn=lookForField(elFormContainer,'input[name=return]');if(elUsername===null){Joomla.renderMessages({error:[Joomla.Text._('PLG_SYSTEM_WEBAUTHN_ERR_CANNOT_FIND_USERNAME')]});return false;} const username=elUsername.value;const returnUrl=elReturn?elReturn.value:null;if(username===''){Joomla.renderMessages({error:[Joomla.Text._('PLG_SYSTEM_WEBAUTHN_ERR_EMPTY_USERNAME')]});return false;} const postBackData={option:'com_ajax',group:'system',plugin:'webauthn',format:'raw',akaction:'challenge',encoding:'raw',username,returnUrl};postBackData[Joomla.getOptions('csrf.token')]=1;const paths=Joomla.getOptions('system.paths');Joomla.request({url:`${paths ? `${paths.base}/index.php` : window.location.pathname}?${Joomla.getOptions('csrf.token')}=1`,method:'POST',data:interpolateParameters(postBackData),onSuccess(rawResponse){let jsonData={};try{jsonData=JSON.parse(rawResponse);}catch(e){} handleLoginChallenge(jsonData);},onError:xhr=>{handleLoginError(`${xhr.status} ${xhr.statusText}`);}});return false;};const loginButtons=[].slice.call(document.querySelectorAll('.plg_system_webauthn_login_button'));if(loginButtons.length){loginButtons.forEach(button=>{button.addEventListener('click',({currentTarget})=>{Joomla.plgSystemWebauthnLogin(currentTarget.getAttribute('data-webauthn-form'));});});}})(Joomla,document); /*! inlined from /media/system/js/keepalive-es5.min.js by ntb_minifier */ (function(){'use strict';if(!window.Joomla){throw new Error('Joomla API was not properly initialised');} var keepAliveOptions=Joomla.getOptions('system.keepalive');var keepAliveInterval=keepAliveOptions&&keepAliveOptions.interval?parseInt(keepAliveOptions.interval,10):45*1000;var keepAliveUri=keepAliveOptions&&keepAliveOptions.uri?keepAliveOptions.uri.replace(/&amp;/g,'&'):'';if(keepAliveUri===''){var systemPaths=Joomla.getOptions('system.paths');keepAliveUri=(systemPaths?systemPaths.root+"/index.php":window.location.pathname)+"?option=com_ajax&format=json";} setInterval(function(){return fetch(keepAliveUri,{method:'POST'});},keepAliveInterval);})(); /*! inlined from /media/system/js/joomla-hidden-mail-es5.min.js by ntb_minifier */ (function(){'use strict';function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;_setPrototypeOf(subClass,superClass);} function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);} function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);} function _isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true;}catch(e){return false;}} function _construct(Parent,args,Class){if(_isNativeReflectConstruct()){_construct=Reflect.construct.bind();}else{_construct=function _construct(Parent,args,Class){var a=[null];a.push.apply(a,args);var Constructor=Function.bind.apply(Parent,a);var instance=new Constructor();if(Class)_setPrototypeOf(instance,Class.prototype);return instance;};} return _construct.apply(null,arguments);} function _isNativeFunction(fn){return Function.toString.call(fn).indexOf("[native code]")!==-1;} function _wrapNativeSuper(Class){var _cache=typeof Map==="function"?new Map():undefined;_wrapNativeSuper=function _wrapNativeSuper(Class){if(Class===null||!_isNativeFunction(Class))return Class;if(typeof Class!=="function"){throw new TypeError("Super expression must either be null or a function");} if(typeof _cache!=="undefined"){if(_cache.has(Class))return _cache.get(Class);_cache.set(Class,Wrapper);} function Wrapper(){return _construct(Class,arguments,_getPrototypeOf(this).constructor);} Wrapper.prototype=Object.create(Class.prototype,{constructor:{value:Wrapper,enumerable:false,writable:true,configurable:true}});return _setPrototypeOf(Wrapper,Class);};return _wrapNativeSuper(Class);} window.customElements.define('joomla-hidden-mail',function(_HTMLElement){_inheritsLoose(_class,_HTMLElement);function _class(){var _this;_this=_HTMLElement.call(this)||this;_this.newElement='';_this.base='';return _this;} var _proto=_class.prototype;_proto.disconnectedCallback=function disconnectedCallback(){this.innerHTML='';};_proto.connectedCallback=function connectedCallback(){var _this2=this;this.base=this.getAttribute('base')+"/";if(this.getAttribute('is-link')==='1'){this.newElement=document.createElement('a');this.newElement.setAttribute('href',"mailto:"+this.constructor.b64DecodeUnicode(this.getAttribute('first'))+"@"+this.constructor.b64DecodeUnicode(this.getAttribute('last')));[].slice.call(this.attributes).forEach(function(attribute,index){var _this2$attributes$ite=_this2.attributes.item(index),nodeName=_this2$attributes$ite.nodeName;if(nodeName){if(['is-link','is-email','first','last','text'].indexOf(nodeName)===-1){var _this2$attributes$ite2=_this2.attributes.item(index),nodeValue=_this2$attributes$ite2.nodeValue;_this2.newElement.setAttribute(nodeName,nodeValue);}}});}else{this.newElement=document.createElement('span');} if(this.getAttribute('text')){var innerStr=this.constructor.b64DecodeUnicode(this.getAttribute('text'));innerStr=innerStr.replace('src="images/',"src=\""+this.base+"images/").replace('src="media/',"src=\""+this.base+"media/");this.newElement.innerHTML=Joomla.sanitizeHtml(innerStr);}else{this.newElement.innerText=window.atob(this.getAttribute('first'))+"@"+window.atob(this.getAttribute('last'));} this.removeAttribute('class');this.removeAttribute('style');this.innerText='';this.appendChild(this.newElement);};_class.b64DecodeUnicode=function b64DecodeUnicode(str){return decodeURIComponent(Array.prototype.map.call(atob(str),function(c){return"%"+("00"+c.charCodeAt(0).toString(16)).slice(-2);}).join(''));};return _class;}(_wrapNativeSuper(HTMLElement)));})(); /*! inlined from /media/mod_menu/js/menu-es5.min.js by ntb_minifier */ (function(){'use strict';(function(){function topLevelMouseOver(el,settings){var ulChild=el.querySelector('ul');if(ulChild){ulChild.setAttribute('aria-hidden','false');ulChild.classList.add(settings.menuHoverClass);}} function topLevelMouseOut(el,settings){var ulChild=el.querySelector('ul');if(ulChild){ulChild.setAttribute('aria-hidden','true');ulChild.classList.remove(settings.menuHoverClass);}} function setupNavigation(nav){var settings={menuHoverClass:'show-menu',dir:'ltr'};var topLevelChilds=nav.querySelectorAll(':scope > li');topLevelChilds.forEach(function(topLevelEl){var linkEl=topLevelEl.querySelector('a');if(linkEl){linkEl.tabIndex='0';linkEl.addEventListener('mouseover',topLevelMouseOver(topLevelEl,settings));linkEl.addEventListener('mouseout',topLevelMouseOut(topLevelEl,settings));} var spanEl=topLevelEl.querySelector('span');if(spanEl){spanEl.tabIndex='0';spanEl.addEventListener('mouseover',topLevelMouseOver(topLevelEl,settings));spanEl.addEventListener('mouseout',topLevelMouseOut(topLevelEl,settings));} topLevelEl.addEventListener('mouseover',function(_ref){var target=_ref.target;var ulChild=target.querySelector('ul');if(ulChild){ulChild.setAttribute('aria-hidden','false');ulChild.classList.add(settings.menuHoverClass);}});topLevelEl.addEventListener('mouseout',function(_ref2){var target=_ref2.target;var ulChild=target.querySelector('ul');if(ulChild){ulChild.setAttribute('aria-hidden','true');ulChild.classList.remove(settings.menuHoverClass);}});topLevelEl.addEventListener('focus',function(_ref3){var target=_ref3.target;var ulChild=target.querySelector('ul');if(ulChild){ulChild.setAttribute('aria-hidden','true');ulChild.classList.add(settings.menuHoverClass);}});topLevelEl.addEventListener('blur',function(_ref4){var target=_ref4.target;var ulChild=target.querySelector('ul');if(ulChild){ulChild.setAttribute('aria-hidden','false');ulChild.classList.remove(settings.menuHoverClass);}});topLevelEl.addEventListener('keydown',function(event){var keyName=event.key;var curEl=event.target;var curLiEl=curEl.parentElement;var curUlEl=curLiEl.parentElement;var prevLiEl=curLiEl.previousElementSibling;var nextLiEl=curLiEl.nextElementSibling;if(!prevLiEl){prevLiEl=curUlEl.children[curUlEl.children.length-1];} if(!nextLiEl){var _curUlEl$children=curUlEl.children;nextLiEl=_curUlEl$children[0];} switch(keyName){case'ArrowLeft':event.preventDefault();if(settings.dir==='rtl'){nextLiEl.children[0].focus();}else{prevLiEl.children[0].focus();} break;case'ArrowRight':event.preventDefault();if(settings.dir==='rtl'){prevLiEl.children[0].focus();}else{nextLiEl.children[0].focus();} break;case'ArrowUp':{event.preventDefault();var parent=curLiEl.parentElement.parentElement;if(parent.nodeName==='LI'){parent.children[0].focus();}else{prevLiEl.children[0].focus();} break;} case'ArrowDown':event.preventDefault();if(curLiEl.classList.contains('parent')){var child=curLiEl.querySelector('ul');if(child!=null){var childLi=child.querySelector('li');childLi.children[0].focus();}else{nextLiEl.children[0].focus();}}else{nextLiEl.children[0].focus();} break;}});});} document.addEventListener('DOMContentLoaded',function(){var navs=document.querySelectorAll('.nav');[].forEach.call(navs,function(nav){setupNavigation(nav);});});})();})();(function(){var cx='015407278790088682131:yshqqymtj30';var gcse=document.createElement('script');gcse.type='text/javascript';gcse.async=true;gcse.src=(document.location.protocol=='https:'?'https:':'http:')+'//www.google.com/cse/cse.js?cx='+cx;var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(gcse,s);})();window.olytics||(window.olytics=[]),window.olytics.methods=["fire","confirm"],window.olytics.factory=function(i){return function(){var t=Array.prototype.slice.call(arguments);return t.unshift(i),window.olytics.push(t),window.olytics}};for(var i=0;i<window.olytics.methods.length;i++){var method=window.olytics.methods[i];window.olytics[method]=window.olytics.factory(method)} olytics.load=function(i){if(!document.getElementById("olyticsImport")){window.a=window.olytics;var t=document.createElement("script");t.async=!0,t.id="olyticsImport",t.type="text/javascript";var o="";void 0!==i&&void 0!==i.oid&&(o=i.oid),t.setAttribute("data-oid",o),t.src="https://olytics.omeda.com/olytics/js/v3/p/olytics.min.js",t.addEventListener("load",function(t){for(olytics.initialize({Olytics:i});window.a.length>0;){var o=window.a.shift(),s=o.shift();olytics[s]&&olytics[s].apply(olytics,o)}},!1);var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(t,s)}},olytics.load({oid:"c1d61b8c10b7440fb3c59fe5b6424a6b"});$(document).ready(function(){olytics.fire({behaviorId:'7566A8018245A8G',category:'Entry',tag:'Medical,["Health","Surgical"]'});});$(document).ready(function(){$('#cb-form').on('shown.bs.modal',function(){$('#inputUserName').focus();})});var _extraWatchParams=_extraWatchParams||[];_extraWatchParams.projectId='db832384-b716-4141-b539-b453c5613e25';(function(){var ew=document.createElement('script');ew.type='text/javascript';ew.async=true;ew.src='https://agent.extrawatch.com/agent/js/ew.js';var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(ew,s);})();FreshworksWidget('hide','launcher');FreshworksWidget('identify','ticketForm',{name:'',email:'',});FreshworksWidget('prefill','ticketForm',{group_id:30000055696,});FreshworksWidget('hide','ticketForm',['group_id']);$(function(){$("a.contact-us").click(function(){FreshworksWidget('open');});}); /*! inlined from /templates/ctf_2019/js/custom.min.js by ntb_minifier */ $(window).scroll(function(){if($(document).scrollTop()>202){$('nav').addClass('shrink');$('.main-nav').addClass('main-nav-stick');$('body').addClass('body-pad');}else{$('nav').removeClass('shrink');$('.main-nav').removeClass('main-nav-stick');$('body').removeClass('body-pad');}});$(function(){function showNavbarSide(){$('#navbarSideContainer').addClass('reveal');$('.overlay').show();} function hideNavbarSide(){$('#navbarSideContainer').removeClass('reveal');$('.overlay').hide();} $('[id*=navbar-side-button]').on('click',function(){showNavbarSide();});$('[id*=search-side-button]').on('click',function(){showNavbarSide();$('#searchbox').focus();});$('.overlay').on('click',function(){hideNavbarSide();});$('#navbar-side-close').on('click',function(){hideNavbarSide();});});function checkWidth(){if($(window).width()>=768)$('.tb-filter-show').addClass("show");else $('.tb-filter-show').removeClass("show");} $(document).ready(checkWidth);$(window).resize(checkWidth); </script> <!-- JoomlaWorks "Disqus Comments (for Joomla)" (v3.7.0) --> <script>var disqus_config = function(){this.language = '';};</script> <script id="dsq-count-scr" src="//createthefuture.disqus.com/count.js" async></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10