@learnpack/learnpack 5.0.191 → 5.0.198

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,7 +10,7 @@
10
10
  />
11
11
 
12
12
  <title>Learnpack Creator: Craft tutorials in seconds!</title>
13
- <script type="module" crossorigin src="/creator/assets/index-CXaPa6wN.js"></script>
13
+ <script type="module" crossorigin src="/creator/assets/index-DszesaEz.js"></script>
14
14
  <link rel="stylesheet" crossorigin href="/creator/assets/index-Bnq3eZ3T.css">
15
15
  </head>
16
16
  <body>
@@ -1 +1 @@
1
- .lesson-container-component{max-width:1145px;margin:0 auto;padding:0 15px;overflow-y:scroll;color:var(--read-font-color);display:flex;flex-direction:column;gap:10px;line-height:1.5rem}.simple-button-svg{max-height:100%!important;display:flex;align-items:center;gap:10px;font-size:var(--font-size-medium);opacity:1;transition:opacity .1s ease-in-out;border:1px solid transparent}.simple-button-svg:hover{opacity:1}.simple-button-svg.big{padding:10px 20px!important}.simple-button-svg.bg-success svg path{stroke:#fff!important}.simple-button-svg.bg-blue svg path{stroke:#fff!important}.simple-button-svg.small{padding:5px 15px}.simple-button-svg.mini{padding:0}.simple-button-svg.mini svg{max-height:20px!important;max-width:20px!important}.simple-button-svg:disabled{opacity:.5;cursor:not-allowed}.simple-button-svg svg{max-height:30px!important;max-width:30px!important}.simple-button-svg img{max-height:18px!important;max-width:18px!important;filter:saturate(90%)}.feedback-container{background-color:#1f1f1fd1;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);position:absolute;z-index:2;width:100%!important;min-height:100%!important}.feedback-component{width:min(99%,600px);background-color:#fff;padding:10px;border-radius:10px;position:absolute;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);top:10%;display:flex;flex-direction:column;gap:13px;left:50%;transform:translate(-50%)}.feedback-component>.-header{font-weight:700;padding:5px;display:flex;align-items:center;justify-content:space-between}.feedback-component>.-header>button{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:600}.feedback-component>p{font-size:16px}.feedback-component>.-content{padding:10px;background-color:#f9f9f9}.feedback-component>.-footer{padding:10px;display:flex;flex-direction:column;text-align:center}.feedback-component>.-footer>div{display:flex;justify-content:space-around}#socket-disconnected{display:none}.test-button{background-color:red;display:flex;align-items:center;padding:10px;border-radius:10px;color:#ff0;font-weight:700}.button{background-color:var(--color-active);border-radius:7px;color:#fff;padding:10px}.button:hover{color:#fff}.text-center{text-align:center}.centered{margin-inline:auto}.on-hover-active:hover{background-color:var(--color-active);color:#fff}.rounded{border-radius:var(--standard-border-radius)}.rounded-medium{border-radius:10px!important}.rounded-big{border-radius:15px!important}.rigo-thumbnail{position:fixed;bottom:20px;cursor:pointer;right:10px;background-color:var(--color-blue-rigo);border-radius:50%;width:50px;height:50px;display:flex;justify-content:center;align-items:center;z-index:2;border:var(--read-font-color) 2px solid}.quiz-button{padding:10px;border-radius:10px;border:1px solid var(--color-active);width:fit-content;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;gap:10px}.rigo-toggle{cursor:pointer;width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:var(--standard-border-radius)}@media only screen and (min-width: 768px){.rigo-toggle{border-radius:0;border-top-left-radius:var(--standard-border-radius);border-top-right-radius:var(--standard-border-radius)}}.quiz-container{display:flex;flex-direction:column;gap:10px;padding:10px;border-radius:10px}.quiz-container .button-wrapper{margin-top:10px;position:sticky;bottom:50px;padding:10px;display:flex;justify-content:right}.quiz-answer{padding:10px;border-radius:50vh;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;gap:10px}.quiz-answer-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:22px;min-width:22px;height:22px;min-height:22px;border-radius:50%;position:relative;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.quiz-answer-checkbox:empty{background-color:transparent;border:1px solid var(--color-active)}.quiz-answer-checkbox.selected:empty{background-color:var(--bg-color);border:1px solid var(--color-active)}.quiz-answer-checkbox.selected:empty:after{content:"";position:absolute;width:11px;height:11px;background-color:var(--color-active);border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%);box-sizing:border-box}.language-component{width:fit-content!important;border:1px solid var(--bg-color);padding:7px;border-radius:10px;background-color:transparent;position:relative}.language-dropdown{display:flex;position:absolute;top:101%;left:50%;transform:translate(-50%);border:1px solid var(--color-hovered);padding:6px;gap:5px;border-radius:9px;flex-direction:column;z-index:3;background-color:var(--bg-color)}.language-dropdown>button{display:flex;padding:2px;gap:7px;align-items:center}.language-dropdown>button img{width:21px;height:16px;border-radius:3px}.language-component>button{display:flex;gap:6px;align-items:center}.z-index-2{z-index:2}.w-min-content{width:fit-content}.nowrap{white-space:nowrap}:root{--bg-color-dark-gray: #a1a1a1;--bg-color: #f9f9f9;--app-bg-color: white;--color-active: #02a9ea;--header-height: 90px;--4geeks-yellow: #ffd900;--color-warning: #ffd900;--opaque-blue-editor: #a5d9f8;--color-blue-opaque: #eef9fe;--heavy-blue: #9fbdf0;--color-blue: #c1dfed;--soft-blue: #eef9fe;--color-blue-rigo: #0084ff;--tabs-bg-color: #f4faff;--color-hovered: rgba(224, 224, 224, .665);--light-grey: #dadada;--color-success: #21b761;--color-fail: #eb5757;--bg-color-code: #f1fcffd5;--link-inactive-color: #c1c1c1;--backdrop-background: rgba(0, 0, 0, .7);--soft-green: #a4ffbd;--soft-red: #ffbebe;--modals-bg-color: var(--bg-color);--font-color-secondary: #9c9c9c;--font-size-small: 16px;--font-size-mini: 12px;--font-size-medium: 18px;--app-width: min(100%, 1111px);--read-font-color: black;--font-color-secondary: #4c648f;--gray-blue-color: #9fbdf0;--dropdown-bg-color: white;--standard-border-radius: 8px;--bg-1: #fafdff;--bg-2: #f3fafe;--white: #ffffff;--sidebar-bg-color: #e4e8ee;font-size:16px}:root:has(main.dark){font-size:16px;--bg-color-dark-gray: #a1a1a1;--bg-color: #111f39;--app-bg-color: #111f39;--app-bg-color-opaque: #00041a38;--color-active: #02a9ea;--4geeks-yellow: #ffd900;--opaque-blue-editor: #a5d9f8;--soft-blue: #dff5ff;--color-blue-opaque: #012c57;--color-hovered: rgba(95, 95, 95, .311);--color-success: #21b761;--color-fail: #eb5757;--bg-color-code: #2d3748;--link-inactive-color: #a9a9a9;--backdrop-background: rgba(0, 0, 0, .7);--tabs-bg-color: #1e1e1e;--font-color-secondary: #9c9c9c;--font-size-small: 16px;--font-size-medium: 18px;--dropdown-bg-color: var(--bg-color);--read-font-color: white;--font-color-secondary: #6e90d1;--gray-blue-color: #9fbdf0;--white: #000000;--bg-1: #111f39;--bg-2: #1a2d50;--sidebar-bg-color: #131b25}*{margin:0;padding:0;box-sizing:border-box;font-family:Inter,sans-serif}html{font-size:14px;font-family:Inter,sans-serif}html:has(main.dark){color-scheme:dark light}body{background-color:var(--bg-color);overflow-x:hidden;overflow-y:scroll}img{width:100%}button{border:0;background:transparent}h1{font-size:26px;font-weight:700}hr{margin-top:15px}pre{border-left:2px solid var(--color-active);overflow:auto;padding:10px!important;margin:0!important;border-radius:0!important}code:not(pre code){padding:2px 6px;border-radius:5px;background-color:#cff3ff;color:#001926}li{padding-left:0!important;margin-left:20px!important}ul>li{list-style-type:disc}ol>li{list-style-type:decimal}blockquote{border-left:2px solid var(--color-active);padding:1px 10px;border-radius:5px;background-color:var(--bg-2)}button{cursor:pointer}table{border-collapse:collapse;width:100%}th{background-color:var(--bg-color-code);padding:6px;color:var(--read-font-color);border:1px solid rgb(130,130,130)}td{border:1px solid rgb(130,130,130);text-align:center;padding:4px}h1,h2,h3,h4,h5,h6,p{margin-block:15px;line-height:1.7}form button{width:fit-content;padding:7px;cursor:pointer;border-radius:6px}form input{border:1px solid gray;border-radius:8px;padding:10px;width:100%}a{word-break:break-all}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-thumb{background:rgba(0,0,0,.433)}::-webkit-scrollbar-thumb:hover{background:var(--color-active)}.pill{border-radius:7px;padding:5px;display:flex;align-items:center}.bg-blue{background-color:var(--color-active)!important;color:#fff}.border-blue{border:1px solid var(--color-blue-rigo)}.border-none{border:none!important}.color-blue{color:var(--color-active)}.bg-blue-rigo{background-color:var(--color-blue-rigo)!important}.bg-secondary{background-color:#e7e7e7c2}.scrolleable{overflow-y:auto!important}.blue-circle{background-color:var(--color-active);border-radius:50%;padding:10px;margin-left:10px;width:40px;height:40px;position:relative}.blue-circle>*{position:absolute;left:50%;font-size:10px;color:#fff;top:50%;transform:translate(-50%,-50%)}.pos-relative{position:relative}.pos-absolute{position:absolute}.bg-fail{background-color:var(--color-fail)!important}.bg-fail .set-path-fill path{fill:#fff}.bg-success{background-color:var(--color-success)!important}.dropdown{display:flex;flex-direction:column;position:relative}.dropdown-content{display:none;position:absolute;min-width:230px}.dropdown:hover .dropdown-content{display:flex;flex-direction:column;background-color:var(--dropdown-bg-color);padding:5px;width:fit-content;border-radius:var(--standard-border-radius)}.dropdown.up .dropdown-content{bottom:100%;left:0}.dropdown.down .dropdown-content{top:100%;left:0}.modal-container{width:100%;height:100vh!important;position:absolute;z-index:10;background-color:var(--backdrop-background);display:flex;flex-direction:column;padding:10px}.modal-container>div{display:flex;flex-direction:column;gap:8px;background-color:#fff;padding:10px;position:absolute;top:50%;width:min(99%,750px);left:50%;transform:translate(-50%,-50%);border-radius:10px}.modal-container>div .modal-header{font-weight:bolder;font-size:16px}.modal-container>div .modal-content{background-color:#ece8e8;padding:inherit;border-radius:inherit;position:relative}.float-right{position:absolute;top:10px;right:10px}.text-white{border:white;color:#fff!important;--read-font-color: white}.d-flex{display:flex}.space-between{justify-content:space-between}.justify-center{justify-content:center}.align-center{align-items:center}.palpitate{animation:palpitate 1s ease-in infinite;animation-play-state:running}@keyframes palpitate{0%{opacity:1}0%{opacity:.5}to{opacity:1}}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.separator{justify-content:center;display:flex;color:var(--font-color-secondary);align-items:center;gap:20px}.separator>div{width:100%;height:1px;background-color:var(--font-color-secondary)}.btn-dark{border:1px solid var(--bg-color-dark-gray)}.w-100{width:100%!important}.btn-dark:hover{background-color:var(--color-hovered)}#main-container{width:var(--app-width);margin-inline:auto;height:99dvh}#main-container.iframe-mode{width:100vw!important}@media only screen and (min-width: 1111px){#main-container.iframe-mode{margin-top:0}}.badge{width:100%;text-align:center;padding:10px;border-radius:4px;cursor:pointer}.clickeable:hover{background-color:var(--color-hovered)}.min-width{width:var(--app-width)}.gap-small{gap:5px}.gap-medium{gap:10px}.gap-big{gap:20px}.my-2{margin-block:20px}.my-small{margin-block:10px}.d-none{display:none}@media only screen and (min-width: 769px){.hide-continue-button{display:none!important}}.browser{height:max-content!important;background-color:var(--opaque-blue-editor);padding:3px}.browser-tab{padding:4px 20px;border-radius:5px;background-color:var(--soft-blue);color:var(--color-active);max-width:100%;text-overflow:ellipsis;overflow-x:hidden;white-space:nowrap}.browser-header{background-color:#8585852f;border-radius:5px;width:100%;padding:2px}.browser-body{background-color:var(--app-bg-color);overflow-y:auto;min-height:200px;border-radius:5px;margin-top:3px}.danger-on-hover:hover{background-color:var(--soft-red);color:#fff}.danger-on-hover:hover svg.set-path-fill path{fill:#fff!important}.success-on-hover:hover{background-color:var(--soft-green);color:#000}.success-on-hover:hover svg{--read-font-color: black}.svg-success svg path{stroke:var(--color-success)!important}.svg-danger svg path{stroke:var(--color-fail)!important}.hover:hover{background-color:#a39e9e53!important}.preview-iframe{border-radius:var(--standard-border-radius);color:var(--read-font-color)!important}.padding-medium{padding:10px}.padding-small{padding:5px}.bg-secondary{background-color:var(--color-hovered)}.bg-danger{background-color:var(--color-fail)}.bg-selected{background-color:var(--opaque-blue-editor)}.input{padding:10px;border-radius:8px;border:1px solid var(--color-hovered)}.text-blue{color:var(--color-blue-rigo)}.text-danger{color:var(--color-fail)}.circle-small{width:30px;height:30px;border-radius:50%}.vh100{height:100vh}.overflow-y-hidden{overflow-y:hidden}.justify-end{justify-content:flex-end}.flex-x{display:flex}.font-size-m{font-size:var(--font-size-medium)}.pos-fixed{position:fixed}.hiddenOnMobile{display:none}.active-hr{border-bottom:2px solid var(--color-active)}.inline-auto{margin-inline:auto}.d-block{display:block}.padding-big{padding:20px}.m-0{margin:0}.bg-rigo{background-color:var(--color-blue-rigo)}.bg-gray{background-color:var(--color-hovered)}.conector-blue{position:relative}@media only screen and (min-width: 768px){.hiddenOnMobile{display:block;text-align:center}.conector-blue:after{content:"";position:absolute;width:100%;height:100%;background-color:var(--color-blue-rigo);left:50%;transform:translate(-50%);top:95%}}.svg-white .set-stroke>path{stroke:#fff}.continue-button{animation:show-continue-button 1s ease-in-out forwards}@keyframes show-continue-button{0%{visibility:hidden}to{visibility:visible;display:block}}.opaque-blue-on-hover:hover{background-color:var(--color-blue-opaque)}.info-bubble-container{position:relative;width:fit-content;overflow:visible}.info-bubble-message{display:none;position:absolute;bottom:100%;right:0;background-color:var(--color-blue-rigo);color:#fff;padding:10px;border-radius:5px}.info-bubble-opener:hover+.info-bubble-message{display:block}.info-bubble-message:hover{display:block}.pointer{cursor:pointer}.text-small{font-size:12px}.text-medium{font-size:16px}.text-big{font-size:20px}.text-large{font-size:24px}.margin-children-none>*{margin:0!important}.padding-mini{padding:3px}.circle{border-radius:50%;width:20px;height:20px}.big-circle{border-radius:50%;width:40px;height:40px}.hidden{display:none}.margin-0{margin:0}.bg-warning{background-color:var(--color-warning)}.text-black{color:#000!important}.svg-black svg{--read-font-color: black}.stdout-prefix{color:var(--color-active);margin:0;font-weight:700;font-size:12px}.stdout{background-color:#000;padding:10px;color:#fff}.stdin{background-color:var(--bg-2);padding:10px;color:var(--read-font-color)}.stderr{background-color:#000;padding:10px;color:var(--color-fail)}.flex-y{display:flex;flex-direction:column}.bg-soft-green{color:#000;background-color:var(--soft-green)!important}.bg-soft-red{color:#000;background-color:var(--soft-red)!important}.bg-soft-blue{background-color:var(--soft-blue)!important}.fit-content{width:fit-content}.text-bold{font-weight:700}.border-gray{border:1px solid var(--color-hovered)}.scale-on-hover{transition:scale .3s ease}.scale-on-hover:hover{scale:1.05}.bg-transparent{background-color:transparent}.gray-on-hover{transition:background-color .3s ease}.gray-on-hover:hover{background-color:var(--color-hovered)}.text-dark{color:#181818}.mr-10{margin-right:40px}.wrap-wrap{flex-wrap:wrap}.h-100{height:100%}.z-index-1{z-index:1}.text-secondary{color:var(--font-color-secondary)}.svg-blue svg{--read-font-color: var(--color-blue-rigo)}.blank-input{background:transparent;border:0;padding:8px;font-size:16px}.blank-input::placeholder{color:var(--gray-blue-color)}.active-on-hover{transition:all .3s ease;cursor:pointer}.active-on-hover:hover{background-color:var(--color-blue-rigo);color:#fff;scale:1.01}.active-on-hover:hover svg{--read-font-color: white}.active-on-hover:active{scale:.99}.border-bottom-blue{border-bottom:1px solid var(--opaque-blue-editor)}.bg-1{background-color:var(--bg-1)!important}.bg-2{background-color:var(--bg-2)!important}.bg-white{background-color:var(--white)!important}.margin-left-small{margin-left:10px}.svg-blue{--read-font-color: var(--color-blue-rigo)}.textarea{border:1px solid var(--color-hovered);border-radius:5px;padding:5px;font-size:16px;resize:none}.border-warning{border:1px solid var(--color-warning)}.mermaid{display:flex;justify-content:center}.right-bottom-corner{position:absolute;bottom:10px;right:10px}.text-dark-red{color:var(--color-fail)}.text-dark-red svg{--read-font-color: var(--color-fail)}.text-dark-green{color:var(--color-success)!important}.text-dark-green svg{--read-font-color: var(--color-success)}.margin-left-medium{margin-left:20px}.top-centered{position:absolute;top:-10px;left:50%;transform:translate(-50%)}.bottom-centered{position:absolute;bottom:-10px;left:50%;transform:translate(-50%)}.align-self-end{align-self:flex-end}.row-reverse{flex-direction:row-reverse}.vertical-line{height:20px;width:1px;background-color:#0060ba;display:inline-block}.big-svg svg{width:50px!important;height:50px!important}.padding-x-small{padding-inline:10px}.d-inline-flex{display:inline-flex}.bg-lesson{background-color:var(--app-bg-color)}.above-all{z-index:1000}.border-heavy-blue{border:1px solid var(--heavy-blue)}.text-trimmed{white-space:nowrap;word-break:break-all;overflow:hidden;text-overflow:ellipsis}.w-150px{width:150px}.w-200px{width:200px}.w-250px{width:min(250px,100%)}@media only screen and (max-width: 768px){.hidden-mobile{display:none!important}}.rounded-full{border-radius:50%}.text-7xl{font-size:4rem;font-weight:900;font-family:Inter,sans-serif;line-height:1.4;letter-spacing:-.01em}.px-big{padding-inline:60px}.mt-50px{margin-top:50px}.preview-card{max-width:560px;position:relative}.preview-card .click{margin-inline:auto;display:block;background-color:transparent!important;display:flex;justify-content:center;height:100%;position:absolute;top:0;left:0;width:100%;align-items:center;cursor:pointer;font-size:100px;animation-fill-mode:backwards}.preview-card .click:hover{background-color:#00000080;animation:scaleOnHover .5s ease 1 both}@keyframes scaleOnHover{0%{scale:1}to{scale:1.05}}.video-modal{display:flex;justify-content:center;align-items:center;position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--backdrop-background);z-index:1}.video-modal .modal-content{position:relative;background-color:transparent;display:flex;flex-direction:column;border-radius:8px;box-shadow:0 0 20px #9999994d;width:fit-content}.video-modal .click svg{width:150px}.video-modal .close{background-color:var(--color-active);margin-top:10px;border-radius:10px;font-size:21px;cursor:pointer;text-align:center;padding:10px;width:100%;opacity:.8;color:#fff;font-weight:600}.video-modal .close:hover{opacity:1;background-color:var(--color-active)}.chat-modal{overflow-y:hidden;position:fixed;z-index:2;bottom:10px;right:50%;transform:translate(50%)}.chat-tab{background-color:#fff;overflow-y:auto;display:flex;flex-direction:column;justify-content:space-between;width:min(100vw - 5px,460px)!important;margin-inline:auto}.chat-messages{overflow-y:scroll;min-height:min(450px,50vh);padding:10px;max-height:calc(100dvh - 200px)!important}@media (max-width: 768px){.chat-tab{width:calc(100vw - 20px)!important;border-radius:0}.chat-messages{min-height:unset;max-height:calc(100dvh - 100px)}}.chat-tab-header{display:flex;background-color:var(--color-blue-rigo);justify-content:space-between;align-items:center;height:50px;border-radius:10px 10px 0 0;padding:10px}.chat-header{position:relative;align-items:center;justify-content:center;text-align:center}.chat-header button{color:var(--background-color-code);position:absolute;top:50%;right:0;transform:translateY(-50%)}.chat-input{display:flex;position:relative;width:100%;align-items:center;background-color:#d8e2f0;padding:10px;gap:10px}.chat-input input{width:100%;padding:10px 40px 10px 10px;border-radius:8px;border:0;outline:none;background-color:#fff;color:#000}.chat-input button{display:flex;border-radius:50%;right:10px;border:1px solid var(--font-color-secondary);background-color:var(--color-blue-rigo)}.chat-input button svg path{stroke:var(--font-color-secondary)}.chat-input button:hover{background-color:#02a8ea;color:var(--read-font-color)}.chat-input :hover svg path{stroke:var(--read-font-color)}.chat-footer{font-size:16px;color:var(--read-font-color);position:relative;display:flex;justify-content:end}.chat-footer:has(.informative-opener:hover) .informative-message{display:block}.informative-opener{bottom:calc(100% + 10px);right:10px;opacity:.4}.chat-footer .informative-message{display:none;position:absolute;bottom:calc(100% + 50px);background-color:var(--app-bg-color);border:1px solid var(--font-color-secondary);border-radius:10px;padding:10px}.next-button{background-color:#9f9f9f;margin-top:5px;border-radius:7px;font-weight:600;color:#000;padding:10px}.message{background-color:var(--soft-blue);padding:10px;color:var(--color-blue-rigo);border-radius:9px;margin-top:5px;line-height:25px;word-break:break-word}.message.user{background-color:#f5f5f57b;color:#000}.message p:not(:first-child){margin-top:15px}.alert{background-color:var(--4geeks-yellow);padding:3px 10px;border-radius:10px;color:#000;font-weight:700;text-align:center}.self-closing-modal{position:fixed;top:0;left:0;background-color:var(--backdrop-background);width:100vw!important;height:100%!important;display:grid;place-content:center;z-index:2}.self-closing-modal>div.modal-content{display:block;border-radius:20px;flex-direction:column;background-color:var(--modals-bg-color);padding:20px;width:min(600px,98vw);gap:10px;margin-inline:auto;overflow:auto;max-height:95vh;position:relative}.self-closing-modal .modal-closer{position:absolute;right:20px;top:25px;z-index:2;cursor:pointer}.icon-component{background-color:red}.loader{display:flex;align-items:center;gap:10px;justify-content:center;animation:glowing 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loader-icon{width:40px;height:40px;border:2px solid var(--loader-color);border-top-color:transparent;position:relative;display:flex;align-items:center;justify-content:center}.loader-icon:after{content:"";display:block;width:100%;top:0;left:0;position:absolute;height:100%;border:2px solid var(--color-hovered);border-top:2px solid var(--color-active);border-radius:50%;animation:spin 2s linear infinite}@keyframes glowing{0%{opacity:.6}to{opacity:1}}.input-modal{text-align:center;background-color:var(--modals-bg-color);color:var(--read-font-color);padding:20px;display:flex;flex-direction:column;gap:10px}.presentator{position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(141,141,141,.402);z-index:0;cursor:initial}._badge{position:fixed;width:min(90%,330px);border-radius:5px;text-align:left;background-color:#fff;border:1px solid rgba(127,127,127,.3);padding:15px;top:50vh;left:50%;z-index:2;box-shadow:0 4px 8px #0000001a}._badge>h2{color:#000;margin-bottom:10px;font-size:25px}._badge>div._content>*{margin-top:5px;line-height:1.5rem}._badge>._footer{display:flex;justify-content:space-between;flex-direction:row}._badge>p{color:#000;font-size:1rem;font-weight:400;margin-top:0}._container_1cky8_1{width:100%;background-color:#e0e0e0;border-radius:4px;overflow:hidden}._filler_1cky8_15{height:100%;background-color:var(--color-blue-rigo);border-radius:4px 0 0 4px;transition:width .3s ease}.reset-modal{text-align:center}.reset-modal>section{display:flex;justify-content:center;width:100%;gap:20px}.login-modal{font-size:16px}.login-modal h2{text-align:center}.login-modal>div div:has(button){display:flex;align-items:center;justify-content:center;gap:5px}.login-modal button,.login-modal input{font-size:16px}._header_1u10v_1{display:flex;justify-content:space-between;padding-inline:10px;padding-block:10px;align-items:center;background-color:var(--app-bg-color);border-top-left-radius:10px;border-top-right-radius:10px}._header_1u10v_1>section{display:flex;gap:8px}._header_1u10v_1>section:last-child{display:flex;gap:15px}._header_1u10v_1>section>button:disabled{cursor:not-allowed;opacity:.5}._container_ezryg_1{display:flex;gap:8px;background-color:var(--bg-color);flex-wrap:nowrap;min-height:calc(100dvh - 200px);max-height:calc(100dvh - var(--header-height))}._container_ezryg_1>div{width:65%}._container_ezryg_1>div:only-child{width:100%}._content_ezryg_31{display:flex;position:relative}._content_ezryg_31>section{padding:8px;width:100%;max-height:90vh;overflow:auto}._appTabs_ezryg_55{display:flex;background-color:var(--tabs-bg-color);justify-content:space-between;position:absolute;top:0;left:0;width:100%}._appTabs_ezryg_55>div{width:100%;text-align:center;padding:10px;color:#728ec0;border-bottom:1px solid transparent;cursor:pointer}._appTabs_ezryg_55>div[data-visible=true]{background-color:var(--bg-color);color:var(--color-active);border-bottom:3px solid var(--color-active)}._hiddenOnMobile_ezryg_103{display:none}@media only screen and (min-width: 768px){._container_ezryg_1{gap:8px}._content_ezryg_31>section{padding:8px;width:100%}._appTabs_ezryg_55{display:none}._hiddenOnMobile_ezryg_103{display:block;text-align:center}}.tabs{display:flex;align-items:center;gap:2px}.tab{display:flex;background-color:var(--bg-color);border-top-right-radius:6px;border-top-left-radius:6px;cursor:pointer;transition:background-color .3s ease;padding:5px 6px}.tab.active{background-color:var(--opaque-blue-editor)}.tab.active button{color:var(--color-active)}.editor{border:7px solid var(--opaque-blue-editor);border-radius:0 5px 0 0;position:relative}.editor-monaco .view-lines,.editor-monaco .margin-view-overlays{height:min(400px,fit-content)!important}.terminal{border:3px solid var(--opaque-blue-editor);border-top:0;overflow-y:auto;position:relative;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.terminal.html{height:min(400px,fit-content);overflow-y:auto;border:none}.terminal.only{margin-top:0;border:0;max-height:70vh;border-radius:5px}.terminal.only .editor-footer{margin-top:20px;display:block;position:relative}.terminal.hidden{display:none}.terminal>h5{border-bottom:1px solid #dadada;display:flex;justify-content:space-between;align-items:center;margin:0;font-size:16px}.terminal>pre{background-color:var(--bg-color);border:none;max-width:100%;height:fit-content F;word-break:break-word!important;white-space:pre-wrap}.terminal>pre>code{word-wrap:break-word}.editor-footer{background-color:var(--app-bg-color);position:absolute;bottom:8px;width:calc(100% - 16px);left:8px;border-radius:8px;font-size:12px}.editor-footer .compiler{background-color:var(--color-active);color:#fff!important}.editor-footer .compiler .set-stroke path{stroke:#fff}.editor-footer.UNMODIFIED,.editor-footer.MODIFIED{background-color:var(--modals-bg-color)}.editor .editor-footer.success{background-color:var(--soft-green)}.editor .editor-footer.error{color:#fff!important;background-color:var(--soft-red)}.editor-footer .not-started{display:flex;align-items:center;gap:9px;color:var(--color-active);padding:4px;justify-content:space-between;font-size:12px}.editor-footer .not-started span{font-size:12px}.editor-footer .not-started>div:first-child{display:flex;align-items:center;gap:5px}.editor-footer .footer-actions{display:flex;align-items:center;justify-content:space-between;gap:4px;padding:4px}.editor-footer .footer-actions>div>button,.editor-footer .footer-actions>button,.editor-footer .footer-actions>div{width:100%;border-radius:4px;display:flex;font-size:12px;justify-content:center;align-items:center;gap:5px;color:var(--color-active)}.editor-footer.success{background-color:var(--soft-green)}.editor-footer.success .footer-actions>button svg path{stroke:var(--color-success)}.editor-footer.success .footer-actions>div>button>svg path{stroke:var(--color-success)}.editor-footer.success .footer-actions>div{color:var(--color-success)}.editor-footer.success .footer-actions>button{color:#000}.editor-footer.success .footer-actions>div>button{color:#000}.editor-footer.success .editor-footer-child .set-path-fill path{fill:var(--color-success)}.editor-footer.success .compiler{background-color:var(--color-success);color:#fff!important}.editor-footer.success .compiler .set-path-fill path{stroke:#fff}.editor-footer.error{background-color:var(--soft-red)}.editor-footer.error .footer-actions>button svg path{stroke:var(--color-fail)}.editor-footer.error .footer-actions>div>button>svg path{stroke:var(--color-fail)}.editor-footer.error .footer-actions>div>button{color:var(--color-fail)}.editor-footer.error .footer-actions>button{color:var(--color-fail)}.editor-footer.error .footer-actions>div{color:var(--color-fail)}.editor-footer.error .editor-footer-child .set-path-fill path{fill:var(--color-fail)}.editor-footer.error .compiler{background-color:var(--color-fail);color:#fff!important}.editor-footer.error .compiler .set-path-fill path{stroke:#fff}.footer-actions button{font-size:15px!important}.app-header{animation:scale-navbar auto linear both;animation-timeline:scroll();animation-range:10px 150px;position:sticky;top:0}.app-header:hover{opacity:1!important}.navbar-component{padding:10px;background-color:var(--bg-color);display:flex;width:100%;transition:all 2s;margin:0 auto;max-width:1145px;justify-content:space-between}.navbar-component>section{display:flex;gap:3px;align-items:center}.navbar-component>section>button,.navbar-component>section>div{border:1px solid var(--color-active);border-radius:5px}.lesson-options{display:flex;align-items:center;background-color:var(--bg-color);margin:0 auto;max-width:1145px;padding:8px;justify-content:space-between}.lesson-options>div{display:flex;gap:10px;align-items:center}.lesson-options button:disabled{opacity:.5;cursor:not-allowed}@keyframes scale-navbar{to{opacity:0}}.feedback-dropdown{position:absolute;width:250px!important;padding:2px;border:1px solid var(--color-active);background-color:var(--modals-bg-color);border-radius:7px;max-width:300px;font-size:var(--font-size-small);display:flex;gap:5px;align-items:baseline!important;z-index:4;flex-direction:column}.feedback-dropdown.up{bottom:103%;right:0}.feedback-dropdown.down{top:103%;left:-75%}.feedback-dropdown>*{width:fit-content}.feedback-dropdown>button{color:var(--color-active);width:100%;padding:7px;text-align:left;display:flex;justify-content:left;align-items:center}.feedback-dropdown>button:hover{background-color:var(--color-blue-opaque)}.feedback-dropdown>p{padding:3px;background-color:var(--bg-color);margin:0;font-size:var(--font-size-mini);color:var(--read-font-color)}.feedback-dropdown>p>a{font-weight:600;color:var(--color-active);cursor:pointer}#feedback-button{min-width:fit-content}.sidebar-component{position:absolute;left:0%;font-size:17px;z-index:2;background-color:var(--sidebar-bg-color);display:flex;flex-direction:column;align-items:center;width:100%}@media (min-width: 768px){.sidebar-component{width:min(100vw - 5px,460px)!important;position:relative;height:calc(100vh - var(--header-height))}.sidebar-component .footer{width:100%;position:fixed;bottom:0}}.sidebar-component section h2{text-align:center;padding:10px;margin-block:0;width:100%}.sidebar-component>section:not(:last-child){display:flex;justify-content:space-between;padding:2px 14px}.sidebar-component .footer{background-color:transparent;position:relative;width:100%;padding:15px;display:flex;align-items:center;justify-content:space-between}.sidebar-component .footer>a{padding:10px;text-decoration:none;color:var(--read-font-color);display:block;border-radius:8px}.sidebar-component .footer>a:hover{background-color:var(--color-hovered)}.sidebar-component .exercise-list{display:flex;flex-direction:column;width:100%;gap:5px;padding:5px;max-height:83vh!important;overflow-y:scroll;width:var(--app-width);margin-inline:auto}.exercise-list .exercise-card{background-color:var(--bg-1);display:flex;padding:5px 10px;cursor:pointer;width:100%;justify-content:space-between;font-size:18px;border-radius:10px;align-items:center;position:relative}.exercise-circle{background-color:var(--bg-1);border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;color:#0097cf;padding:10px}.exercise-circle.done{background-color:#0097cf;color:#fff}.sidebar-component .exercise-list .exercise-card:hover{background-color:var(--bg-2)}.sidebar-component .exercise-list .exercise-card:active{background-color:var(--color-blue-opaque);transition:all .3s ease}.sidebar-disappear{animation:disappear-4-right .4s ease 1 forwards}@keyframes appear-4-right{0%{left:101%}to{left:0}}@keyframes disappear-4-right{0%{left:0}to{left:101%}}.bg-blue-opaque{background-color:var(--color-blue-opaque)}.lesson-content{padding-bottom:70px;font-size:20px;padding-inline:16px;line-height:24px}.lesson-content img{margin:5px auto;max-width:750px;display:block}.lesson-content h1{font-size:32px}.lesson-content h2{font-size:25px}.lesson-content h3{font-size:20px}.lesson-content{line-height:2rem}.creator-wrapper{position:relative}.creator-wrapper .display-on-hover{display:none}.creator-wrapper:hover .display-on-hover{display:block}.inverted{transform:scaleY(-1)}.inverted>*{transform:scaleY(-1)}.creator-options{display:flex;border-radius:5px;gap:3px;position:absolute;top:0;left:0;flex-direction:column;z-index:1000}.creator-options-buttons{background-color:var(--color-blue-opaque);width:fit-content;padding:5px;border-radius:5px}.text-in-editor{position:relative}.creator-options-opener{display:none;position:absolute;right:100%;top:5px;z-index:1000;padding:2px;border-radius:5px;background-color:var(--app-bg-color)}.creator-wrapper:hover>.text-in-editor>.creator-options-opener{display:block}.creator-wrapper:hover{background-color:var(--color-blue-opaque);border-radius:2px}.creator-target-content{color:var(--color-success)}.creator-target{border-radius:5px}.code-buttons{background-color:var(--color-blue-opaque);border-top-left-radius:5px;border-top-right-radius:5px;padding-left:10px;padding-right:10px;font-size:12px;color:var(--color-blue-rigo)}.custom-code-block{position:relative}.execution-result{background-color:var(--color-blue-opaque);padding:10px;border-bottom-left-radius:5px;border-bottom-right-radius:5px;font-size:12px;color:var(--color-success)}.katex{font-size:1.2rem;line-height:2rem}.rigo-input{border-radius:5px;font-size:16px;padding:5px;width:min(600px,90vw)!important;display:flex;align-items:center;gap:5px}.rigo-button{background:linear-gradient(132deg,#0fb0fc,#022cc2);border:2px solid white;color:var(--white);opacity:1;border-radius:50%;padding:5px;display:flex;justify-content:center;align-items:center;width:50px;height:50px;margin-right:-12px;z-index:1}.rigo-textarea{border:0;background:#c8dbfc;font-size:16px;padding:7px;outline:none;width:100%;border-radius:10px;color:#000}.rigo-textarea::placeholder{color:var(--color-blue-rigo)}._button_1y12h_5{background-color:var(--color-blue-rigo);color:#fff;border:none;padding:.5rem 1rem;border-radius:.25rem;cursor:pointer;display:flex;align-items:center}._icon_1y12h_27{margin-left:.5rem;color:currentColor}._menu_1y12h_37{position:absolute;right:0;margin-top:.25rem;width:15rem;background-color:#dce9ff;border-radius:.25rem;box-shadow:0 2px 8px #0000001a;z-index:100;padding:.5rem 10px}
1
+ .lesson-container-component{max-width:1145px;margin:0 auto;padding:0 15px;overflow-y:scroll;color:var(--read-font-color);display:flex;flex-direction:column;gap:10px;line-height:1.5rem}.simple-button-svg{max-height:100%!important;display:flex;align-items:center;gap:10px;font-size:var(--font-size-medium);opacity:1;transition:opacity .1s ease-in-out;border:1px solid transparent}.simple-button-svg:hover{opacity:1}.simple-button-svg.big{padding:10px 20px!important}.simple-button-svg.bg-success svg path{stroke:#fff!important}.simple-button-svg.bg-blue svg path{stroke:#fff!important}.simple-button-svg.small{padding:5px 15px}.simple-button-svg.mini{padding:0}.simple-button-svg.mini svg{max-height:20px!important;max-width:20px!important}.simple-button-svg:disabled{opacity:.5;cursor:not-allowed}.simple-button-svg svg{max-height:30px!important;max-width:30px!important}.simple-button-svg img{max-height:18px!important;max-width:18px!important;filter:saturate(90%)}.feedback-container{background-color:#1f1f1fd1;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);position:absolute;z-index:2;width:100%!important;min-height:100%!important}.feedback-component{width:min(99%,600px);background-color:#fff;padding:10px;border-radius:10px;position:absolute;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);top:10%;display:flex;flex-direction:column;gap:13px;left:50%;transform:translate(-50%)}.feedback-component>.-header{font-weight:700;padding:5px;display:flex;align-items:center;justify-content:space-between}.feedback-component>.-header>button{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:600}.feedback-component>p{font-size:16px}.feedback-component>.-content{padding:10px;background-color:#f9f9f9}.feedback-component>.-footer{padding:10px;display:flex;flex-direction:column;text-align:center}.feedback-component>.-footer>div{display:flex;justify-content:space-around}#socket-disconnected{display:none}.test-button{background-color:red;display:flex;align-items:center;padding:10px;border-radius:10px;color:#ff0;font-weight:700}.button{background-color:var(--color-active);border-radius:7px;color:#fff;padding:10px}.button:hover{color:#fff}.text-center{text-align:center}.centered{margin-inline:auto}.on-hover-active:hover{background-color:var(--color-active);color:#fff}.rounded{border-radius:var(--standard-border-radius)}.rounded-medium{border-radius:10px!important}.rounded-big{border-radius:15px!important}.rigo-thumbnail{position:fixed;bottom:20px;cursor:pointer;right:10px;background-color:var(--color-blue-rigo);border-radius:50%;width:50px;height:50px;display:flex;justify-content:center;align-items:center;z-index:2;border:var(--read-font-color) 2px solid}.quiz-button{padding:10px;border-radius:10px;border:1px solid var(--color-active);width:fit-content;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;gap:10px}.rigo-toggle{cursor:pointer;width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:var(--standard-border-radius)}@media only screen and (min-width: 768px){.rigo-toggle{border-radius:0;border-top-left-radius:var(--standard-border-radius);border-top-right-radius:var(--standard-border-radius)}}.quiz-container{display:flex;flex-direction:column;gap:10px;padding:10px;border-radius:10px}.quiz-container .button-wrapper{margin-top:10px;position:sticky;bottom:50px;padding:10px;display:flex;justify-content:right}.quiz-answer{padding:10px;border-radius:50vh;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;gap:10px}.quiz-answer-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:22px;min-width:22px;height:22px;min-height:22px;border-radius:50%;position:relative;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.quiz-answer-checkbox:empty{background-color:transparent;border:1px solid var(--color-active)}.quiz-answer-checkbox.selected:empty{background-color:var(--bg-color);border:1px solid var(--color-active)}.quiz-answer-checkbox.selected:empty:after{content:"";position:absolute;width:11px;height:11px;background-color:var(--color-active);border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%);box-sizing:border-box}.language-component{width:fit-content!important;border:1px solid var(--bg-color);padding:7px;border-radius:10px;background-color:transparent;position:relative}.language-dropdown{display:flex;position:absolute;top:101%;left:50%;transform:translate(-50%);border:1px solid var(--color-hovered);padding:6px;gap:5px;border-radius:9px;flex-direction:column;z-index:3;background-color:var(--bg-color)}.language-dropdown>button{display:flex;padding:2px;gap:7px;align-items:center}.language-dropdown>button img{width:21px;height:16px;border-radius:3px}.language-component>button{display:flex;gap:6px;align-items:center}.z-index-2{z-index:2}.w-min-content{width:fit-content}.nowrap{white-space:nowrap}:root{--bg-color-dark-gray: #a1a1a1;--bg-color: #f9f9f9;--app-bg-color: white;--color-active: #02a9ea;--header-height: 90px;--4geeks-yellow: #ffd900;--color-warning: #ffd900;--opaque-blue-editor: #a5d9f8;--color-blue-opaque: #eef9fe;--heavy-blue: #9fbdf0;--color-blue: #c1dfed;--soft-blue: #eef9fe;--color-blue-rigo: #0084ff;--tabs-bg-color: #f4faff;--color-hovered: rgba(224, 224, 224, .665);--light-grey: #dadada;--color-success: #21b761;--color-fail: #eb5757;--bg-color-code: #f1fcffd5;--link-inactive-color: #c1c1c1;--backdrop-background: rgba(0, 0, 0, .7);--soft-green: #a4ffbd;--soft-red: #ffbebe;--modals-bg-color: var(--bg-color);--font-color-secondary: #9c9c9c;--font-size-small: 16px;--font-size-mini: 12px;--font-size-medium: 18px;--app-width: min(100%, 1111px);--read-font-color: black;--font-color-secondary: #4c648f;--gray-blue-color: #9fbdf0;--dropdown-bg-color: white;--standard-border-radius: 8px;--bg-1: #fafdff;--bg-2: #f3fafe;--white: #ffffff;--sidebar-bg-color: #e4e8ee;font-size:16px}:root:has(main.dark){font-size:16px;--bg-color-dark-gray: #a1a1a1;--bg-color: #111f39;--app-bg-color: #111f39;--app-bg-color-opaque: #00041a38;--color-active: #02a9ea;--4geeks-yellow: #ffd900;--opaque-blue-editor: #a5d9f8;--soft-blue: #dff5ff;--color-blue-opaque: #012c57;--color-hovered: rgba(95, 95, 95, .311);--color-success: #21b761;--color-fail: #eb5757;--bg-color-code: #2d3748;--link-inactive-color: #a9a9a9;--backdrop-background: rgba(0, 0, 0, .7);--tabs-bg-color: #1e1e1e;--font-color-secondary: #9c9c9c;--font-size-small: 16px;--font-size-medium: 18px;--dropdown-bg-color: var(--bg-color);--read-font-color: white;--font-color-secondary: #6e90d1;--gray-blue-color: #9fbdf0;--white: #000000;--bg-1: #111f39;--bg-2: #1a2d50;--sidebar-bg-color: #131b25}*{margin:0;padding:0;box-sizing:border-box;font-family:Inter,sans-serif}html{font-size:14px;font-family:Inter,sans-serif;overflow-x:hidden;overflow-y:hidden}html:has(main.dark){color-scheme:dark light}body{background-color:var(--bg-color);overflow-x:hidden;overflow-y:hidden}img{width:100%}button{border:0;background:transparent}h1{font-size:26px;font-weight:700}hr{margin-top:15px}pre{border-left:2px solid var(--color-active);overflow:auto;padding:10px!important;margin:0!important;border-radius:0!important}code:not(pre code){padding:2px 6px;border-radius:5px;background-color:#cff3ff;color:#001926}li{padding-left:0!important;margin-left:20px!important}ul>li{list-style-type:disc}ol>li{list-style-type:decimal}blockquote{border-left:2px solid var(--color-active);padding:1px 10px;border-radius:5px;background-color:var(--bg-2)}button{cursor:pointer}table{border-collapse:collapse;width:100%}th{background-color:var(--bg-color-code);padding:6px;color:var(--read-font-color);border:1px solid rgb(130,130,130)}td{border:1px solid rgb(130,130,130);text-align:center;padding:4px}h1,h2,h3,h4,h5,h6,p{margin-block:15px;line-height:1.7}form button{width:fit-content;padding:7px;cursor:pointer;border-radius:6px}form input{border:1px solid gray;border-radius:8px;padding:10px;width:100%}a{word-break:break-all}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-thumb{background:rgba(0,0,0,.433)}::-webkit-scrollbar-thumb:hover{background:var(--color-active)}.pill{border-radius:7px;padding:5px;display:flex;align-items:center}.bg-blue{background-color:var(--color-active)!important;color:#fff}.border-blue{border:1px solid var(--color-blue-rigo)}.border-none{border:none!important}.color-blue{color:var(--color-active)}.bg-blue-rigo{background-color:var(--color-blue-rigo)!important}.bg-secondary{background-color:#e7e7e7c2}.scrolleable{overflow-y:auto!important}.blue-circle{background-color:var(--color-active);border-radius:50%;padding:10px;margin-left:10px;width:40px;height:40px;position:relative}.blue-circle>*{position:absolute;left:50%;font-size:10px;color:#fff;top:50%;transform:translate(-50%,-50%)}.pos-relative{position:relative}.pos-absolute{position:absolute}.bg-fail{background-color:var(--color-fail)!important}.bg-fail .set-path-fill path{fill:#fff}.bg-success{background-color:var(--color-success)!important}.dropdown{display:flex;flex-direction:column;position:relative}.dropdown-content{display:none;position:absolute;min-width:230px}.dropdown:hover .dropdown-content{display:flex;flex-direction:column;background-color:var(--dropdown-bg-color);padding:5px;width:fit-content;border-radius:var(--standard-border-radius)}.dropdown.up .dropdown-content{bottom:100%;left:0}.dropdown.down .dropdown-content{top:100%;left:0}.modal-container{width:100%;height:100vh!important;position:absolute;z-index:10;background-color:var(--backdrop-background);display:flex;flex-direction:column;padding:10px}.modal-container>div{display:flex;flex-direction:column;gap:8px;background-color:#fff;padding:10px;position:absolute;top:50%;width:min(99%,750px);left:50%;transform:translate(-50%,-50%);border-radius:10px}.modal-container>div .modal-header{font-weight:bolder;font-size:16px}.modal-container>div .modal-content{background-color:#ece8e8;padding:inherit;border-radius:inherit;position:relative}.float-right{position:absolute;top:10px;right:10px}.text-white{border:white;color:#fff!important;--read-font-color: white}.d-flex{display:flex}.space-between{justify-content:space-between}.justify-center{justify-content:center}.align-center{align-items:center}.palpitate{animation:palpitate 1s ease-in infinite;animation-play-state:running}@keyframes palpitate{0%{opacity:1}0%{opacity:.5}to{opacity:1}}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.separator{justify-content:center;display:flex;color:var(--font-color-secondary);align-items:center;gap:20px}.separator>div{width:100%;height:1px;background-color:var(--font-color-secondary)}.btn-dark{border:1px solid var(--bg-color-dark-gray)}.w-100{width:100%!important}.btn-dark:hover{background-color:var(--color-hovered)}#main-container{width:var(--app-width);margin-inline:auto;height:99dvh}#main-container.iframe-mode{width:100vw!important}@media only screen and (min-width: 1111px){#main-container.iframe-mode{margin-top:0}}.badge{width:100%;text-align:center;padding:10px;border-radius:4px;cursor:pointer}.clickeable:hover{background-color:var(--color-hovered)}.min-width{width:var(--app-width)}.gap-small{gap:5px}.gap-medium{gap:10px}.gap-big{gap:20px}.my-2{margin-block:20px}.my-small{margin-block:10px}.d-none{display:none}@media only screen and (min-width: 769px){.hide-continue-button{display:none!important}}.browser{height:max-content!important;background-color:var(--opaque-blue-editor);padding:3px}.browser-tab{padding:4px 20px;border-radius:5px;background-color:var(--soft-blue);color:var(--color-active);max-width:100%;text-overflow:ellipsis;overflow-x:hidden;white-space:nowrap}.browser-header{background-color:#8585852f;border-radius:5px;width:100%;padding:2px}.browser-body{background-color:var(--app-bg-color);overflow-y:auto;min-height:200px;border-radius:5px;margin-top:3px}.danger-on-hover:hover{background-color:var(--soft-red);color:#fff}.danger-on-hover:hover svg.set-path-fill path{fill:#fff!important}.success-on-hover:hover{background-color:var(--soft-green);color:#000}.success-on-hover:hover svg{--read-font-color: black}.svg-success svg path{stroke:var(--color-success)!important}.svg-danger svg path{stroke:var(--color-fail)!important}.hover:hover{background-color:#a39e9e53!important}.preview-iframe{border-radius:var(--standard-border-radius);color:var(--read-font-color)!important}.padding-medium{padding:10px}.padding-small{padding:5px}.bg-secondary{background-color:var(--color-hovered)}.bg-danger{background-color:var(--color-fail)}.bg-selected{background-color:var(--opaque-blue-editor)}.input{padding:10px;border-radius:8px;border:1px solid var(--color-hovered)}.text-blue{color:var(--color-blue-rigo)}.text-danger{color:var(--color-fail)}.circle-small{width:30px;height:30px;border-radius:50%}.vh100{height:100vh}.overflow-y-hidden{overflow-y:hidden}.justify-end{justify-content:flex-end}.flex-x{display:flex}.font-size-m{font-size:var(--font-size-medium)}.pos-fixed{position:fixed}.hiddenOnMobile{display:none}.active-hr{border-bottom:2px solid var(--color-active)}.inline-auto{margin-inline:auto}.d-block{display:block}.padding-big{padding:20px}.m-0{margin:0}.bg-rigo{background-color:var(--color-blue-rigo)}.bg-gray{background-color:var(--color-hovered)}.conector-blue{position:relative}@media only screen and (min-width: 768px){.hiddenOnMobile{display:block;text-align:center}.conector-blue:after{content:"";position:absolute;width:100%;height:100%;background-color:var(--color-blue-rigo);left:50%;transform:translate(-50%);top:95%}}.svg-white .set-stroke>path{stroke:#fff}.continue-button{animation:show-continue-button 1s ease-in-out forwards}@keyframes show-continue-button{0%{visibility:hidden}to{visibility:visible;display:block}}.opaque-blue-on-hover:hover{background-color:var(--color-blue-opaque)}.info-bubble-container{position:relative;width:fit-content;overflow:visible}.info-bubble-message{display:none;position:absolute;bottom:100%;right:0;background-color:var(--color-blue-rigo);color:#fff;padding:10px;border-radius:5px}.info-bubble-opener:hover+.info-bubble-message{display:block}.info-bubble-message:hover{display:block}.pointer{cursor:pointer}.text-small{font-size:12px}.text-medium{font-size:16px}.text-big{font-size:20px}.text-large{font-size:24px}.margin-children-none>*{margin:0!important}.padding-mini{padding:3px}.circle{border-radius:50%;width:20px;height:20px}.big-circle{border-radius:50%;width:40px;height:40px}.hidden{display:none}.margin-0{margin:0}.bg-warning{background-color:var(--color-warning)}.text-black{color:#000!important}.svg-black svg{--read-font-color: black}.stdout-prefix{color:var(--color-active);margin:0;font-weight:700;font-size:12px}.stdout{background-color:#000;padding:10px;color:#fff}.stdin{background-color:var(--bg-2);padding:10px;color:var(--read-font-color)}.stderr{background-color:#000;padding:10px;color:var(--color-fail)}.flex-y{display:flex;flex-direction:column}.bg-soft-green{color:#000;background-color:var(--soft-green)!important}.bg-soft-red{color:#000;background-color:var(--soft-red)!important}.bg-soft-blue{background-color:var(--soft-blue)!important}.fit-content{width:fit-content}.text-bold{font-weight:700}.border-gray{border:1px solid var(--color-hovered)}.scale-on-hover{transition:scale .3s ease}.scale-on-hover:hover{scale:1.05}.bg-transparent{background-color:transparent}.gray-on-hover{transition:background-color .3s ease}.gray-on-hover:hover{background-color:var(--color-hovered)}.text-dark{color:#181818}.mr-10{margin-right:40px}.wrap-wrap{flex-wrap:wrap}.h-100{height:100%}.z-index-1{z-index:1}.text-secondary{color:var(--font-color-secondary)}.svg-blue svg{--read-font-color: var(--color-blue-rigo)}.blank-input{background:transparent;border:0;padding:8px;font-size:16px}.blank-input::placeholder{color:var(--gray-blue-color)}.active-on-hover{transition:all .3s ease;cursor:pointer}.active-on-hover:hover{background-color:var(--color-blue-rigo);color:#fff;scale:1.01}.active-on-hover:hover svg{--read-font-color: white}.active-on-hover:active{scale:.99}.border-bottom-blue{border-bottom:1px solid var(--opaque-blue-editor)}.bg-1{background-color:var(--bg-1)!important}.bg-2{background-color:var(--bg-2)!important}.bg-white{background-color:var(--white)!important}.margin-left-small{margin-left:10px}.svg-blue{--read-font-color: var(--color-blue-rigo)}.textarea{border:1px solid var(--color-hovered);border-radius:5px;padding:5px;font-size:16px;resize:none}.border-warning{border:1px solid var(--color-warning)}.mermaid{display:flex;justify-content:center}.right-bottom-corner{position:absolute;bottom:10px;right:10px}.text-dark-red{color:var(--color-fail)}.text-dark-red svg{--read-font-color: var(--color-fail)}.text-dark-green{color:var(--color-success)!important}.text-dark-green svg{--read-font-color: var(--color-success)}.margin-left-medium{margin-left:20px}.top-centered{position:absolute;top:-10px;left:50%;transform:translate(-50%)}.bottom-centered{position:absolute;bottom:-10px;left:50%;transform:translate(-50%)}.align-self-end{align-self:flex-end}.row-reverse{flex-direction:row-reverse}.vertical-line{height:20px;width:1px;background-color:#0060ba;display:inline-block}.big-svg svg{width:50px!important;height:50px!important}.padding-x-small{padding-inline:10px}.d-inline-flex{display:inline-flex}.bg-lesson{background-color:var(--app-bg-color)}.above-all{z-index:1000}.border-heavy-blue{border:1px solid var(--heavy-blue)}.text-trimmed{white-space:nowrap;word-break:break-all;overflow:hidden;text-overflow:ellipsis}.w-150px{width:150px}.w-200px{width:200px}.w-250px{width:min(250px,100%)}@media only screen and (max-width: 768px){.hidden-mobile{display:none!important}}.rounded-full{border-radius:50%}.text-7xl{font-size:4rem;font-weight:900;font-family:Inter,sans-serif;line-height:1.4;letter-spacing:-.01em}.px-big{padding-inline:60px}.mt-50px{margin-top:50px}.preview-card{max-width:560px;position:relative}.preview-card .click{margin-inline:auto;display:block;background-color:transparent!important;display:flex;justify-content:center;height:100%;position:absolute;top:0;left:0;width:100%;align-items:center;cursor:pointer;font-size:100px;animation-fill-mode:backwards}.preview-card .click:hover{background-color:#00000080;animation:scaleOnHover .5s ease 1 both}@keyframes scaleOnHover{0%{scale:1}to{scale:1.05}}.video-modal{display:flex;justify-content:center;align-items:center;position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--backdrop-background);z-index:1}.video-modal .modal-content{position:relative;background-color:transparent;display:flex;flex-direction:column;border-radius:8px;box-shadow:0 0 20px #9999994d;width:fit-content}.video-modal .click svg{width:150px}.video-modal .close{background-color:var(--color-active);margin-top:10px;border-radius:10px;font-size:21px;cursor:pointer;text-align:center;padding:10px;width:100%;opacity:.8;color:#fff;font-weight:600}.video-modal .close:hover{opacity:1;background-color:var(--color-active)}.chat-modal{overflow-y:hidden;position:fixed;z-index:2;bottom:10px;right:50%;transform:translate(50%)}.chat-tab{background-color:#fff;overflow-y:auto;display:flex;flex-direction:column;justify-content:space-between;width:min(100vw - 5px,460px)!important;margin-inline:auto}.chat-messages{overflow-y:scroll;min-height:min(450px,50vh);padding:10px;max-height:calc(100dvh - 200px)!important}@media (max-width: 768px){.chat-tab{width:calc(100vw - 20px)!important;border-radius:0}.chat-messages{min-height:unset;max-height:calc(100dvh - 100px)}}.chat-tab-header{display:flex;background-color:var(--color-blue-rigo);justify-content:space-between;align-items:center;height:50px;border-radius:10px 10px 0 0;padding:10px}.chat-header{position:relative;align-items:center;justify-content:center;text-align:center}.chat-header button{color:var(--background-color-code);position:absolute;top:50%;right:0;transform:translateY(-50%)}.chat-input{display:flex;position:relative;width:100%;align-items:center;background-color:#d8e2f0;padding:10px;gap:10px}.chat-input input{width:100%;padding:10px 40px 10px 10px;border-radius:8px;border:0;outline:none;background-color:#fff;color:#000}.chat-input button{display:flex;border-radius:50%;right:10px;border:1px solid var(--font-color-secondary);background-color:var(--color-blue-rigo)}.chat-input button svg path{stroke:var(--font-color-secondary)}.chat-input button:hover{background-color:#02a8ea;color:var(--read-font-color)}.chat-input :hover svg path{stroke:var(--read-font-color)}.chat-footer{font-size:16px;color:var(--read-font-color);position:relative;display:flex;justify-content:end}.chat-footer:has(.informative-opener:hover) .informative-message{display:block}.informative-opener{bottom:calc(100% + 10px);right:10px;opacity:.4}.chat-footer .informative-message{display:none;position:absolute;bottom:calc(100% + 50px);background-color:var(--app-bg-color);border:1px solid var(--font-color-secondary);border-radius:10px;padding:10px}.next-button{background-color:#9f9f9f;margin-top:5px;border-radius:7px;font-weight:600;color:#000;padding:10px}.message{background-color:var(--soft-blue);padding:10px;color:var(--color-blue-rigo);border-radius:9px;margin-top:5px;line-height:25px;word-break:break-word}.message.user{background-color:#f5f5f57b;color:#000}.message p:not(:first-child){margin-top:15px}.alert{background-color:var(--4geeks-yellow);padding:3px 10px;border-radius:10px;color:#000;font-weight:700;text-align:center}.self-closing-modal{position:fixed;top:0;left:0;background-color:var(--backdrop-background);width:100vw!important;height:100%!important;display:grid;place-content:center;z-index:2}.self-closing-modal>div.modal-content{display:block;border-radius:20px;flex-direction:column;background-color:var(--modals-bg-color);padding:20px;width:min(600px,98vw);gap:10px;margin-inline:auto;overflow:auto;max-height:95vh;position:relative}.self-closing-modal .modal-closer{position:absolute;right:20px;top:25px;z-index:2;cursor:pointer}.icon-component{background-color:red}.loader{display:flex;align-items:center;gap:10px;justify-content:center;animation:glowing 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loader-icon{width:40px;height:40px;border:2px solid var(--loader-color);border-top-color:transparent;position:relative;display:flex;align-items:center;justify-content:center}.loader-icon:after{content:"";display:block;width:100%;top:0;left:0;position:absolute;height:100%;border:2px solid var(--color-hovered);border-top:2px solid var(--color-active);border-radius:50%;animation:spin 2s linear infinite}@keyframes glowing{0%{opacity:.6}to{opacity:1}}.input-modal{text-align:center;background-color:var(--modals-bg-color);color:var(--read-font-color);padding:20px;display:flex;flex-direction:column;gap:10px}.presentator{position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(141,141,141,.402);z-index:0;cursor:initial}._badge{position:fixed;width:min(90%,330px);border-radius:5px;text-align:left;background-color:#fff;border:1px solid rgba(127,127,127,.3);padding:15px;top:50vh;left:50%;z-index:2;box-shadow:0 4px 8px #0000001a}._badge>h2{color:#000;margin-bottom:10px;font-size:25px}._badge>div._content>*{margin-top:5px;line-height:1.5rem}._badge>._footer{display:flex;justify-content:space-between;flex-direction:row}._badge>p{color:#000;font-size:1rem;font-weight:400;margin-top:0}._container_1cky8_1{width:100%;background-color:#e0e0e0;border-radius:4px;overflow:hidden}._filler_1cky8_15{height:100%;background-color:var(--color-blue-rigo);border-radius:4px 0 0 4px;transition:width .3s ease}.reset-modal{text-align:center}.reset-modal>section{display:flex;justify-content:center;width:100%;gap:20px}.login-modal{font-size:16px}.login-modal h2{text-align:center}.login-modal>div div:has(button){display:flex;align-items:center;justify-content:center;gap:5px}.login-modal button,.login-modal input{font-size:16px}._header_1u10v_1{display:flex;justify-content:space-between;padding-inline:10px;padding-block:10px;align-items:center;background-color:var(--app-bg-color);border-top-left-radius:10px;border-top-right-radius:10px}._header_1u10v_1>section{display:flex;gap:8px}._header_1u10v_1>section:last-child{display:flex;gap:15px}._header_1u10v_1>section>button:disabled{cursor:not-allowed;opacity:.5}._container_ezryg_1{display:flex;gap:8px;background-color:var(--bg-color);flex-wrap:nowrap;min-height:calc(100dvh - 200px);max-height:calc(100dvh - var(--header-height))}._container_ezryg_1>div{width:65%}._container_ezryg_1>div:only-child{width:100%}._content_ezryg_31{display:flex;position:relative}._content_ezryg_31>section{padding:8px;width:100%;max-height:90vh;overflow:auto}._appTabs_ezryg_55{display:flex;background-color:var(--tabs-bg-color);justify-content:space-between;position:absolute;top:0;left:0;width:100%}._appTabs_ezryg_55>div{width:100%;text-align:center;padding:10px;color:#728ec0;border-bottom:1px solid transparent;cursor:pointer}._appTabs_ezryg_55>div[data-visible=true]{background-color:var(--bg-color);color:var(--color-active);border-bottom:3px solid var(--color-active)}._hiddenOnMobile_ezryg_103{display:none}@media only screen and (min-width: 768px){._container_ezryg_1{gap:8px}._content_ezryg_31>section{padding:8px;width:100%}._appTabs_ezryg_55{display:none}._hiddenOnMobile_ezryg_103{display:block;text-align:center}}.tabs{display:flex;align-items:center;gap:2px}.tab{display:flex;background-color:var(--bg-color);border-top-right-radius:6px;border-top-left-radius:6px;cursor:pointer;transition:background-color .3s ease;padding:5px 6px}.tab.active{background-color:var(--opaque-blue-editor)}.tab.active button{color:var(--color-active)}.editor{border:7px solid var(--opaque-blue-editor);border-radius:0 5px 0 0;position:relative}.editor-monaco .view-lines,.editor-monaco .margin-view-overlays{height:min(400px,fit-content)!important}.terminal{border:3px solid var(--opaque-blue-editor);border-top:0;overflow-y:auto;position:relative;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.terminal.html{height:min(400px,fit-content);overflow-y:auto;border:none}.terminal.only{margin-top:0;border:0;max-height:70vh;border-radius:5px}.terminal.only .editor-footer{margin-top:20px;display:block;position:relative}.terminal.hidden{display:none}.terminal>h5{border-bottom:1px solid #dadada;display:flex;justify-content:space-between;align-items:center;margin:0;font-size:16px}.terminal>pre{background-color:var(--bg-color);border:none;max-width:100%;height:fit-content F;word-break:break-word!important;white-space:pre-wrap}.terminal>pre>code{word-wrap:break-word}.editor-footer{background-color:var(--app-bg-color);position:absolute;bottom:8px;width:calc(100% - 16px);left:8px;border-radius:8px;font-size:12px}.editor-footer .compiler{background-color:var(--color-active);color:#fff!important}.editor-footer .compiler .set-stroke path{stroke:#fff}.editor-footer.UNMODIFIED,.editor-footer.MODIFIED{background-color:var(--modals-bg-color)}.editor .editor-footer.success{background-color:var(--soft-green)}.editor .editor-footer.error{color:#fff!important;background-color:var(--soft-red)}.editor-footer .not-started{display:flex;align-items:center;gap:9px;color:var(--color-active);padding:4px;justify-content:space-between;font-size:12px}.editor-footer .not-started span{font-size:12px}.editor-footer .not-started>div:first-child{display:flex;align-items:center;gap:5px}.editor-footer .footer-actions{display:flex;align-items:center;justify-content:space-between;gap:4px;padding:4px}.editor-footer .footer-actions>div>button,.editor-footer .footer-actions>button,.editor-footer .footer-actions>div{width:100%;border-radius:4px;display:flex;font-size:12px;justify-content:center;align-items:center;gap:5px;color:var(--color-active)}.editor-footer.success{background-color:var(--soft-green)}.editor-footer.success .footer-actions>button svg path{stroke:var(--color-success)}.editor-footer.success .footer-actions>div>button>svg path{stroke:var(--color-success)}.editor-footer.success .footer-actions>div{color:var(--color-success)}.editor-footer.success .footer-actions>button{color:#000}.editor-footer.success .footer-actions>div>button{color:#000}.editor-footer.success .editor-footer-child .set-path-fill path{fill:var(--color-success)}.editor-footer.success .compiler{background-color:var(--color-success);color:#fff!important}.editor-footer.success .compiler .set-path-fill path{stroke:#fff}.editor-footer.error{background-color:var(--soft-red)}.editor-footer.error .footer-actions>button svg path{stroke:var(--color-fail)}.editor-footer.error .footer-actions>div>button>svg path{stroke:var(--color-fail)}.editor-footer.error .footer-actions>div>button{color:var(--color-fail)}.editor-footer.error .footer-actions>button{color:var(--color-fail)}.editor-footer.error .footer-actions>div{color:var(--color-fail)}.editor-footer.error .editor-footer-child .set-path-fill path{fill:var(--color-fail)}.editor-footer.error .compiler{background-color:var(--color-fail);color:#fff!important}.editor-footer.error .compiler .set-path-fill path{stroke:#fff}.footer-actions button{font-size:15px!important}.app-header{animation:scale-navbar auto linear both;animation-timeline:scroll();animation-range:10px 150px;position:sticky;top:0}.app-header:hover{opacity:1!important}.navbar-component{padding:10px;background-color:var(--bg-color);display:flex;width:100%;transition:all 2s;margin:0 auto;max-width:1145px;justify-content:space-between}.navbar-component>section{display:flex;gap:3px;align-items:center}.navbar-component>section>button,.navbar-component>section>div{border:1px solid var(--color-active);border-radius:5px}.lesson-options{display:flex;align-items:center;background-color:var(--bg-color);margin:0 auto;max-width:1145px;padding:8px;justify-content:space-between}.lesson-options>div{display:flex;gap:10px;align-items:center}.lesson-options button:disabled{opacity:.5;cursor:not-allowed}@keyframes scale-navbar{to{opacity:0}}.feedback-dropdown{position:absolute;width:250px!important;padding:2px;border:1px solid var(--color-active);background-color:var(--modals-bg-color);border-radius:7px;max-width:300px;font-size:var(--font-size-small);display:flex;gap:5px;align-items:baseline!important;z-index:4;flex-direction:column}.feedback-dropdown.up{bottom:103%;right:0}.feedback-dropdown.down{top:103%;left:-75%}.feedback-dropdown>*{width:fit-content}.feedback-dropdown>button{color:var(--color-active);width:100%;padding:7px;text-align:left;display:flex;justify-content:left;align-items:center}.feedback-dropdown>button:hover{background-color:var(--color-blue-opaque)}.feedback-dropdown>p{padding:3px;background-color:var(--bg-color);margin:0;font-size:var(--font-size-mini);color:var(--read-font-color)}.feedback-dropdown>p>a{font-weight:600;color:var(--color-active);cursor:pointer}#feedback-button{min-width:fit-content}.sidebar-component{position:absolute;left:0%;font-size:17px;z-index:2;background-color:var(--sidebar-bg-color);display:flex;flex-direction:column;align-items:center;width:100%}@media (min-width: 768px){.sidebar-component{width:min(100vw - 5px,460px)!important;position:relative;height:calc(100vh - var(--header-height))}.sidebar-component .footer{width:100%;position:fixed;bottom:0}}.sidebar-component section h2{text-align:center;padding:10px;margin-block:0;width:100%}.sidebar-component>section:not(:last-child){display:flex;justify-content:space-between;padding:2px 14px}.sidebar-component .footer{background-color:transparent;position:relative;width:100%;padding:15px;display:flex;align-items:center;justify-content:space-between}.sidebar-component .footer>a{padding:10px;text-decoration:none;color:var(--read-font-color);display:block;border-radius:8px}.sidebar-component .footer>a:hover{background-color:var(--color-hovered)}.sidebar-component .exercise-list{display:flex;flex-direction:column;width:100%;gap:5px;padding:5px;max-height:83vh!important;overflow-y:scroll;width:var(--app-width);margin-inline:auto}.exercise-list .exercise-card{background-color:var(--bg-1);display:flex;padding:5px 10px;cursor:pointer;width:100%;justify-content:space-between;font-size:18px;border-radius:10px;align-items:center;position:relative}.exercise-circle{background-color:var(--bg-1);border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;color:#0097cf;padding:10px}.exercise-circle.done{background-color:#0097cf;color:#fff}.sidebar-component .exercise-list .exercise-card:hover{background-color:var(--bg-2)}.sidebar-component .exercise-list .exercise-card:active{background-color:var(--color-blue-opaque);transition:all .3s ease}.sidebar-disappear{animation:disappear-4-right .4s ease 1 forwards}@keyframes appear-4-right{0%{left:101%}to{left:0}}@keyframes disappear-4-right{0%{left:0}to{left:101%}}.bg-blue-opaque{background-color:var(--color-blue-opaque)}.lesson-content{padding-bottom:70px;font-size:20px;padding-inline:16px;line-height:24px}.lesson-content img{margin:5px auto;max-width:750px;display:block}.lesson-content h1{font-size:32px}.lesson-content h2{font-size:25px}.lesson-content h3{font-size:20px}.lesson-content{line-height:2rem}.creator-wrapper{position:relative}.creator-wrapper .display-on-hover{display:none}.creator-wrapper:hover .display-on-hover{display:block}.inverted{transform:scaleY(-1)}.inverted>*{transform:scaleY(-1)}.creator-options{display:flex;border-radius:5px;gap:3px;position:absolute;top:0;left:0;flex-direction:column;z-index:1000}.creator-options-buttons{background-color:var(--color-blue-opaque);width:fit-content;padding:5px;border-radius:5px}.text-in-editor{position:relative}.creator-options-opener{display:none;position:absolute;right:100%;top:5px;z-index:1000;padding:2px;border-radius:5px;background-color:var(--app-bg-color)}.creator-wrapper:hover>.text-in-editor>.creator-options-opener{display:block}.creator-wrapper:hover{background-color:var(--color-blue-opaque);border-radius:2px}.creator-target-content{color:var(--color-success)}.creator-target{border-radius:5px}.code-buttons{background-color:var(--color-blue-opaque);border-top-left-radius:5px;border-top-right-radius:5px;padding-left:10px;padding-right:10px;font-size:12px;color:var(--color-blue-rigo)}.custom-code-block{position:relative}.execution-result{background-color:var(--color-blue-opaque);padding:10px;border-bottom-left-radius:5px;border-bottom-right-radius:5px;font-size:12px;color:var(--color-success)}.katex{font-size:1.2rem;line-height:2rem}.rigo-input{border-radius:5px;font-size:16px;padding:5px;width:min(600px,90vw)!important;display:flex;align-items:center;gap:5px}.rigo-button{background:linear-gradient(132deg,#0fb0fc,#022cc2);border:2px solid white;color:var(--white);opacity:1;border-radius:50%;padding:5px;display:flex;justify-content:center;align-items:center;width:50px;height:50px;margin-right:-12px;z-index:1}.rigo-textarea{border:0;background:#c8dbfc;font-size:16px;padding:7px;outline:none;width:100%;border-radius:10px;color:#000}.rigo-textarea::placeholder{color:var(--color-blue-rigo)}._button_1y12h_5{background-color:var(--color-blue-rigo);color:#fff;border:none;padding:.5rem 1rem;border-radius:.25rem;cursor:pointer;display:flex;align-items:center}._icon_1y12h_27{margin-left:.5rem;color:currentColor}._menu_1y12h_37{position:absolute;right:0;margin-top:.25rem;width:15rem;background-color:#dce9ff;border-radius:.25rem;box-shadow:0 2px 8px #0000001a;z-index:100;padding:.5rem 10px}
@@ -332,7 +332,7 @@ to {
332
332
  `+t.slice(s+1):l+=t.slice(a),l.slice(1)}function ZUe(t){for(var e="",r,n,a,i=0;i<t.length;i++){if(r=t.charCodeAt(i),r>=55296&&r<=56319&&(n=t.charCodeAt(i+1),n>=56320&&n<=57343)){e+=uee((r-55296)*1024+n-56320+65536),i++;continue}a=Zi[r],e+=!a&&J0(r)?t[i]:a||uee(r)}return e}function JUe(t,e,r){var n="",a=t.tag,i,s;for(i=0,s=r.length;i<s;i+=1)mp(t,e,r[i],!1,!1)&&(i!==0&&(n+=","+(t.condenseFlow?"":" ")),n+=t.dump);t.tag=a,t.dump="["+n+"]"}function e$e(t,e,r,n){var a="",i=t.tag,s,o;for(s=0,o=r.length;s<o;s+=1)mp(t,e+1,r[s],!0,!0)&&((!n||s!==0)&&(a+=wL(t,e)),t.dump&&Gy===t.dump.charCodeAt(0)?a+="-":a+="- ",a+=t.dump);t.tag=i,t.dump=a||"[]"}function t$e(t,e,r){var n="",a=t.tag,i=Object.keys(r),s,o,l,u,d;for(s=0,o=i.length;s<o;s+=1)d="",s!==0&&(d+=", "),t.condenseFlow&&(d+='"'),l=i[s],u=r[l],mp(t,e,l,!1,!1)&&(t.dump.length>1024&&(d+="? "),d+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),mp(t,e,u,!1,!1)&&(d+=t.dump,n+=d));t.tag=a,t.dump="{"+n+"}"}function r$e(t,e,r,n){var a="",i=t.tag,s=Object.keys(r),o,l,u,d,h,f;if(t.sortKeys===!0)s.sort();else if(typeof t.sortKeys=="function")s.sort(t.sortKeys);else if(t.sortKeys)throw new Qy("sortKeys must be a boolean or a function");for(o=0,l=s.length;o<l;o+=1)f="",(!n||o!==0)&&(f+=wL(t,e)),u=s[o],d=r[u],mp(t,e+1,u,!0,!0,!0)&&(h=t.tag!==null&&t.tag!=="?"||t.dump&&t.dump.length>1024,h&&(t.dump&&Gy===t.dump.charCodeAt(0)?f+="?":f+="? "),f+=t.dump,h&&(f+=wL(t,e)),mp(t,e+1,d,!0,h)&&(t.dump&&Gy===t.dump.charCodeAt(0)?f+=":":f+=": ",f+=t.dump,a+=f));t.tag=i,t.dump=a||"{}"}function wee(t,e,r){var n,a,i,s,o,l;for(a=r?t.explicitTypes:t.implicitTypes,i=0,s=a.length;i<s;i+=1)if(o=a[i],(o.instanceOf||o.predicate)&&(!o.instanceOf||typeof e=="object"&&e instanceof o.instanceOf)&&(!o.predicate||o.predicate(e))){if(t.tag=r?o.tag:"?",o.represent){if(l=t.styleMap[o.tag]||o.defaultStyle,tee.call(o.represent)==="[object Function]")n=o.represent(e,l);else if(ree.call(o.represent,l))n=o.represent[l](e,l);else throw new Qy("!<"+o.tag+'> tag resolver accepts not "'+l+'" style');t.dump=n}return!0}return!1}function mp(t,e,r,n,a,i){t.tag=null,t.dump=r,wee(t,r,!1)||wee(t,r,!0);var s=tee.call(t.dump);n&&(n=t.flowLevel<0||t.flowLevel>e);var o=s==="[object Object]"||s==="[object Array]",l,u;if(o&&(l=t.duplicates.indexOf(r),u=l!==-1),(t.tag!==null&&t.tag!=="?"||u||t.indent!==2&&e>0)&&(a=!1),u&&t.usedDuplicates[l])t.dump="*ref_"+l;else{if(o&&u&&!t.usedDuplicates[l]&&(t.usedDuplicates[l]=!0),s==="[object Object]")n&&Object.keys(t.dump).length!==0?(r$e(t,e,t.dump,a),u&&(t.dump="&ref_"+l+t.dump)):(t$e(t,e,t.dump),u&&(t.dump="&ref_"+l+" "+t.dump));else if(s==="[object Array]"){var d=t.noArrayIndent&&e>0?e-1:e;n&&t.dump.length!==0?(e$e(t,d,t.dump,a),u&&(t.dump="&ref_"+l+t.dump)):(JUe(t,d,t.dump),u&&(t.dump="&ref_"+l+" "+t.dump))}else if(s==="[object String]")t.tag!=="?"&&KUe(t,t.dump,e,i);else{if(t.skipInvalid)return!1;throw new Qy("unacceptable kind of an object to dump "+s)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function n$e(t,e){var r=[],n=[],a,i;for(kL(t,r,n),a=0,i=n.length;a<i;a+=1)e.duplicates.push(r[n[a]]);e.usedDuplicates=new Array(i)}function kL(t,e,r){var n,a,i;if(t!==null&&typeof t=="object")if(a=e.indexOf(t),a!==-1)r.indexOf(a)===-1&&r.push(a);else if(e.push(t),Array.isArray(t))for(a=0,i=t.length;a<i;a+=1)kL(t[a],e,r);else for(n=Object.keys(t),a=0,i=n.length;a<i;a+=1)kL(t[n[a]],e,r)}function xee(t,e){e=e||{};var r=new QUe(e);return r.noRefs||n$e(t,r),mp(r,0,t,!0,!0)?r.dump+`
333
333
  `:""}function a$e(t,e){return xee(t,jy.extend({schema:CUe},e))}bL.dump=xee,bL.safeDump=a$e;var A5=$y,kee=bL;function m5(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}oa.Type=fi,oa.Schema=W0,oa.FAILSAFE_SCHEMA=gL,oa.JSON_SCHEMA=RJ,oa.CORE_SCHEMA=IJ,oa.DEFAULT_SAFE_SCHEMA=Vy,oa.DEFAULT_FULL_SCHEMA=u5,oa.load=A5.load,oa.loadAll=A5.loadAll,oa.safeLoad=A5.safeLoad,oa.safeLoadAll=A5.safeLoadAll,oa.dump=kee.dump,oa.safeDump=kee.safeDump,oa.YAMLException=Hy,oa.MINIMAL_SCHEMA=gL,oa.SAFE_SCHEMA=Vy,oa.DEFAULT_SCHEMA=u5,oa.scan=m5("scan"),oa.parse=m5("parse"),oa.compose=m5("compose"),oa.addConstructor=m5("addConstructor");var i$e=oa,s$e=i$e,_ee=s$e,o$e="\\ufeff?",l$e=typeof process<"u"?process.platform:"",c$e="^("+o$e+"(= yaml =|---)$([\\s\\S]*?)^(?:\\2|\\.\\.\\.)\\s*$"+(l$e==="win32"?"\\r?":"")+"(?:\\n)?)",Eee=new RegExp(c$e,"m");hL.exports=u$e,hL.exports.test=f$e;function u$e(t,e){t=t||"";var r={allowUnsafe:!1};e=e instanceof Object?{...r,...e}:r,e.allowUnsafe=!!e.allowUnsafe;var n=t.split(/(\r?\n)/);return n[0]&&/= yaml =|---/.test(n[0])?h$e(t,e.allowUnsafe):{attributes:{},body:t,bodyBegin:1}}function d$e(t,e){for(var r=1,n=e.indexOf(`
334
334
  `),a=t.index+t[0].length;n!==-1;){if(n>=a)return r;r++,n=e.indexOf(`
335
- `,n+1)}return r}function h$e(t,e){var r=Eee.exec(t);if(!r)return{attributes:{},body:t,bodyBegin:1};var n=e?_ee.load:_ee.safeLoad,a=r[r.length-1].replace(/^\s+|\s+$/g,""),i=n(a)||{},s=t.replace(r[0],""),o=d$e(r,t);return{attributes:i,body:s,bodyBegin:o,frontmatter:a}}function f$e(t){return t=t||"",Eee.test(t)}var p$e=hL.exports;const g$e=aa(p$e),Fn={get:(t,e=!0)=>{const r=localStorage.getItem(t);return r?e?JSON.parse(r):r:null},set:(t,e)=>{localStorage.setItem(t,JSON.stringify(e))},remove:t=>{localStorage.removeItem(t)},clear:()=>{localStorage.clear()},getEditorTabs:t=>Fn.get(`editorTabs_${t}`)||[],setEditorTabs:(t,e)=>{Fn.set(`editorTabs_${t}`,e)}},A$e=1;class m$e{calculateStepIndicator(e,r){return r.status!=="skipped"&&r.status!=="unread"?Math.min(r.time_spent/3600*100,100):0}calculateGlobalIndicator(e,r){const n={total_time:.3,num_sessions:.2,completion_rate:.3,interactions:.2},a=Math.min(r.total_time_on_platform/36e3,1)*100,i=Math.min(r.num_sessions/5,1)*100,s=r.completion_rate,o=Math.min(r.total_interactions/100,1)*100;return(a*n.total_time+i*n.num_sessions+s*n.completion_rate+o*n.interactions)/100*100}}class y$e{calculateStepIndicator(e,r){return r.status==="completed"?Math.min((r.comp_struggles+r.test_struggles)/20*100,100):r.status==="attempted"?Math.min(r.time_spent/1800*100,100):r.status==="skipped"?25:0}calculateGlobalIndicator(e,r){const n={steps_not_completed:.3,time_on_incomplete:.2,avg_comp_struggles:.2,avg_test_struggles:.2,skipped_steps:.1},a=r.total_steps>0?r.steps_not_completed/r.total_steps*100:0,i=Math.min(r.time_on_incomplete/18e3,1)*100,s=Math.min(r.avg_comp_struggles/10,1)*100,o=Math.min(r.avg_test_struggles/10,1)*100,l=r.total_steps>0?r.skipped_steps/r.total_steps*100:0;return(a*n.steps_not_completed+i*n.time_on_incomplete+s*n.avg_comp_struggles+o*n.avg_test_struggles+l*n.skipped_steps)/100*100}}function Cee(t){var o,l,u,d;let e=t.completed_at?"completed":t.opened_at?"attempted":"unread";const r=t.completed_at&&t.opened_at?(t.completed_at-t.opened_at)/1e3:0,n=((o=t.compilations)==null?void 0:o.filter(h=>h.exit_code!==0).length)||0,a=((l=t.tests)==null?void 0:l.filter(h=>h.exit_code!==0).length)||0;let i=0,s=0;for(let h=((u=t.compilations)==null?void 0:u.length)-1;h>=0&&t.compilations[h].exit_code!==0;h--)i++;for(let h=((d=t.tests)==null?void 0:d.length)-1;h>=0&&t.tests[h].exit_code!==0;h--)s++;return{status:e,time_spent:r,comp_struggles:n,test_struggles:a,streak_comp_struggles:i,streak_test_struggle:s}}function v$e(t){const e=t.length,r=t.map(Cee),n=r.filter(p=>p.status==="completed").length,a=r.filter(p=>p.status==="attempted").length,i=r.filter(p=>p.status==="skipped").length,s=e?n/e*100:0,o=t.reduce((p,g)=>{var A,m;return p+(((A=g.compilations)==null?void 0:A.length)||0)+(((m=g.tests)==null?void 0:m.length)||0)},0),l=r.reduce((p,g)=>p+g.time_spent,0),u=a+i,d=e?r.reduce((p,g)=>p+g.comp_struggles,0)/e:0,h=e?r.reduce((p,g)=>p+g.test_struggles,0)/e:0;let f=0;for(const p of t){let g=0;for(const A of p.tests||[])A.exit_code===0?g++:g=0,f=Math.max(f,g)}return{total_time_on_platform:l,num_sessions:1,completion_rate:s,total_interactions:o,steps_not_completed:u,time_on_incomplete:l,avg_comp_struggles:d,avg_test_struggles:h,skipped_steps:i,total_steps:e,global_test_success_streak:f}}function See(t){const e=[new m$e,new y$e],r=t.steps.map(s=>Cee(s)),n=v$e(t.steps),a=t.steps.map((s,o)=>{const l=r[o],u={};return e.forEach(d=>{u[d.constructor.name]=d.calculateStepIndicator(s,l)}),{slug:s.slug,metrics:l,indicators:u}}),i={};return e.forEach(s=>{i[s.constructor.name]=s.calculateGlobalIndicator(a.map(o=>o.indicators[s.constructor.name]),n)}),{algo_version:A$e,global:{metrics:n,indicators:i},steps:a}}const Tee={name:"learnpack-ai",private:!0,version:"5.0.173",scripts:{dev:"node src/utils/development.js --turn on && vite",build:"node src/utils/development.js --turn off && tsc && vite build && node src/utils/uploadLearnpack.js && node bin/publish.js && node src/utils/createVersionsFile.js ","dev-build":"node src/utils/development.js --turn on && tsc && vite build",lint:"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",preview:"vite preview","compile-command":"tsc src/utils/development.ts && node src/utils/development.js --turn on"},dependencies:{"@monaco-editor/react":"^4.6.0",axios:"^1.7.7","front-matter":"^4.0.2","highlight.js":"^11.11.1",html2canvas:"^1.4.1",i18next:"^23.10.1","js-yaml":"^4.1.0",mermaid:"^11.6.0","monaco-editor":"^0.50.0",react:"^18.2.0","react-dom":"^18.2.0","react-draggable":"^4.4.6","react-gtm-module":"^2.0.11","react-hot-toast":"^2.4.1","react-i18next":"^14.1.0","react-markdown":"^9.0.1","react-monaco-editor":"^0.56.1","react-router-dom":"^6.27.0","react-syntax-highlighter":"^15.6.1","rehype-katex":"^7.0.1","remark-emoji":"^5.0.1","remark-gfm":"^4.0.0","remark-math":"^6.0.0","socket.io":"^4.7.2","socket.io-client":"^4.7.2",uuid:"^10.0.0",zustand:"^4.4.1"},devDependencies:{"@aws-sdk/client-s3":"^3.709.0","@types/js-yaml":"^4.0.9","@types/markdown-it":"^14.1.2","@types/react":"^18.2.15","@types/react-dom":"^18.2.7","@types/react-gtm-module":"^2.0.3","@types/react-syntax-highlighter":"^15.5.13","@types/remarkable":"^2.0.3","@types/uuid":"^10.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","@vitejs/plugin-react-swc":"^3.3.2",archiver:"^6.0.1",dotenv:"^16.4.7",eslint:"^8.45.0","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-react-refresh":"^0.4.3",inquirer:"^9.2.12",typescript:"^5.0.2",vite:"^4.5.13"}},Lee="http://localhost:3000",b$e=async(t,e,r)=>{try{const n=to();return(await _s.post(`/exercise/${t}/create?slug=${n}`,{title:t,readme:e,language:r})).data}catch(n){throw console.error("Error creating exercise:",n),n}},w$e=async t=>{try{const e=to();return(await _s.delete(`/exercise/${t}/delete?slug=${e}`)).data}catch(e){throw console.error("Error deleting exercise:",e),e}},x$e=async(t,e)=>{try{const r=to();return(await _s.put(`/actions/rename?slug=${r}`,{slug:t,newSlug:e})).data}catch(r){throw console.error("Error renaming exercise:",r),r}},k$e=async(t,e)=>{try{const r=to(),n={"x-breathecode-token":t,"x-rigo-token":e};return(await _s.post(`${My?"http://localhost:3000":""}/actions/publish/${r}`,{categoryId:"663296363296363296363296",academyId:"663296363296363296363296"},{headers:n})).data}catch(r){throw console.error("Error publishing tutorial:",r),r}},_$e=async function(t,e,r){if(!t||!r){console.error("URL and token are required");return}r=r.trim();const n={"Content-Type":"application/json",Authorization:`Token ${r}`};try{return(await _s.post(t,e,{headers:n})).data}catch(a){throw console.error("Error while sending batch telemetry",a),_s.isAxiosError(a)&&a.response&&(console.error("Response data:",a.response.data),console.error("Response status:",a.response.status),console.error("Response headers:",a.response.headers)),a}},E$e=async function(t,e,r){!t||!r||fetch(t,{method:"POST",body:JSON.stringify(e)}).then(n=>n).catch(n=>{console.log("Error while sending stream Telemetry",n)})},C$e=async function(){try{return(await _s.get(`${Lee}/telemetry`)).data}catch(t){return console.error("Error while retrieving telemetry from CLI",t),null}},S$e=async function(t){try{const e=await _s.post(`${Lee}/telemetry`,t);return console.debug("Saved telemetry in CLI",e.data),e.data}catch(e){return console.error("Error while saving telemetry in CLI",e),null}};function T$e(){return Math.random().toString(36).slice(2,10)+Math.random().toString(36).slice(2,10)}function _L(t){if(typeof t!="string")throw new TypeError("Input must be a string");return btoa(encodeURIComponent(t))}const kh={current:null,urls:{},telemetryKey:"",listeners:{},agent:"cloud",user:{token:"",id:"",email:""},tutorialSlug:"",started:!1,version:`CLOUD:${Tee.version}`||"CLOUD:0.0.0",salute:t=>{console.log(t)},start:function(t,e,r,n,a){this.telemetryKey=n,this.tutorialSlug=r,this.agent=t,this.user.id=a.user_id,this.user.token=a.token,this.current||this.retrieve().then(i=>{if(i?(this.current=i,this.finishWorkoutSession()):(console.debug("No previous telemetry found, creating new one. Agent: ",t),this.current={telemetry_id:T$e(),slug:r,version:`CLOUD:${this.version}`,agent:t,tutorial_started_at:Date.now(),last_interaction_at:Date.now(),steps:e,workout_session:[{started_at:Date.now()}]}),this.current.user_id=this.user.id,this.current.version||(this.current.version=`CLOUD:${this.version}`),this.save(),this.started=!0,!this.user.id){console.warn("No user ID found, impossible to submit telemetry at start");return}this.submit()}).catch(i=>{throw console.log("ERROR: There was a problem starting the Telemetry"),console.error(i),new Error(`There was a problem starting, reload LearnPack
335
+ `,n+1)}return r}function h$e(t,e){var r=Eee.exec(t);if(!r)return{attributes:{},body:t,bodyBegin:1};var n=e?_ee.load:_ee.safeLoad,a=r[r.length-1].replace(/^\s+|\s+$/g,""),i=n(a)||{},s=t.replace(r[0],""),o=d$e(r,t);return{attributes:i,body:s,bodyBegin:o,frontmatter:a}}function f$e(t){return t=t||"",Eee.test(t)}var p$e=hL.exports;const g$e=aa(p$e),Fn={get:(t,e=!0)=>{const r=localStorage.getItem(t);return r?e?JSON.parse(r):r:null},set:(t,e)=>{localStorage.setItem(t,JSON.stringify(e))},remove:t=>{localStorage.removeItem(t)},clear:()=>{localStorage.clear()},getEditorTabs:t=>Fn.get(`editorTabs_${t}`)||[],setEditorTabs:(t,e)=>{Fn.set(`editorTabs_${t}`,e)}},A$e=1;class m$e{calculateStepIndicator(e,r){return r.status!=="skipped"&&r.status!=="unread"?Math.min(r.time_spent/3600*100,100):0}calculateGlobalIndicator(e,r){const n={total_time:.3,num_sessions:.2,completion_rate:.3,interactions:.2},a=Math.min(r.total_time_on_platform/36e3,1)*100,i=Math.min(r.num_sessions/5,1)*100,s=r.completion_rate,o=Math.min(r.total_interactions/100,1)*100;return(a*n.total_time+i*n.num_sessions+s*n.completion_rate+o*n.interactions)/100*100}}class y$e{calculateStepIndicator(e,r){return r.status==="completed"?Math.min((r.comp_struggles+r.test_struggles)/20*100,100):r.status==="attempted"?Math.min(r.time_spent/1800*100,100):r.status==="skipped"?25:0}calculateGlobalIndicator(e,r){const n={steps_not_completed:.3,time_on_incomplete:.2,avg_comp_struggles:.2,avg_test_struggles:.2,skipped_steps:.1},a=r.total_steps>0?r.steps_not_completed/r.total_steps*100:0,i=Math.min(r.time_on_incomplete/18e3,1)*100,s=Math.min(r.avg_comp_struggles/10,1)*100,o=Math.min(r.avg_test_struggles/10,1)*100,l=r.total_steps>0?r.skipped_steps/r.total_steps*100:0;return(a*n.steps_not_completed+i*n.time_on_incomplete+s*n.avg_comp_struggles+o*n.avg_test_struggles+l*n.skipped_steps)/100*100}}function Cee(t){var o,l,u,d;let e=t.completed_at?"completed":t.opened_at?"attempted":"unread";const r=t.completed_at&&t.opened_at?(t.completed_at-t.opened_at)/1e3:0,n=((o=t.compilations)==null?void 0:o.filter(h=>h.exit_code!==0).length)||0,a=((l=t.tests)==null?void 0:l.filter(h=>h.exit_code!==0).length)||0;let i=0,s=0;for(let h=((u=t.compilations)==null?void 0:u.length)-1;h>=0&&t.compilations[h].exit_code!==0;h--)i++;for(let h=((d=t.tests)==null?void 0:d.length)-1;h>=0&&t.tests[h].exit_code!==0;h--)s++;return{status:e,time_spent:r,comp_struggles:n,test_struggles:a,streak_comp_struggles:i,streak_test_struggle:s}}function v$e(t){const e=t.length,r=t.map(Cee),n=r.filter(p=>p.status==="completed").length,a=r.filter(p=>p.status==="attempted").length,i=r.filter(p=>p.status==="skipped").length,s=e?n/e*100:0,o=t.reduce((p,g)=>{var A,m;return p+(((A=g.compilations)==null?void 0:A.length)||0)+(((m=g.tests)==null?void 0:m.length)||0)},0),l=r.reduce((p,g)=>p+g.time_spent,0),u=a+i,d=e?r.reduce((p,g)=>p+g.comp_struggles,0)/e:0,h=e?r.reduce((p,g)=>p+g.test_struggles,0)/e:0;let f=0;for(const p of t){let g=0;for(const A of p.tests||[])A.exit_code===0?g++:g=0,f=Math.max(f,g)}return{total_time_on_platform:l,num_sessions:1,completion_rate:s,total_interactions:o,steps_not_completed:u,time_on_incomplete:l,avg_comp_struggles:d,avg_test_struggles:h,skipped_steps:i,total_steps:e,global_test_success_streak:f}}function See(t){const e=[new m$e,new y$e],r=t.steps.map(s=>Cee(s)),n=v$e(t.steps),a=t.steps.map((s,o)=>{const l=r[o],u={};return e.forEach(d=>{u[d.constructor.name]=d.calculateStepIndicator(s,l)}),{slug:s.slug,metrics:l,indicators:u}}),i={};return e.forEach(s=>{i[s.constructor.name]=s.calculateGlobalIndicator(a.map(o=>o.indicators[s.constructor.name]),n)}),{algo_version:A$e,global:{metrics:n,indicators:i},steps:a}}const Tee={name:"learnpack-ai",private:!0,version:"5.0.174",scripts:{dev:"node src/utils/development.js --turn on && vite",build:"node src/utils/development.js --turn off && tsc && vite build && node src/utils/uploadLearnpack.js && node bin/publish.js && node src/utils/createVersionsFile.js ","dev-build":"node src/utils/development.js --turn on && tsc && vite build",lint:"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",preview:"vite preview","compile-command":"tsc src/utils/development.ts && node src/utils/development.js --turn on"},dependencies:{"@monaco-editor/react":"^4.6.0",axios:"^1.7.7","front-matter":"^4.0.2","highlight.js":"^11.11.1",html2canvas:"^1.4.1",i18next:"^23.10.1","js-yaml":"^4.1.0",mermaid:"^11.6.0","monaco-editor":"^0.50.0",react:"^18.2.0","react-dom":"^18.2.0","react-draggable":"^4.4.6","react-gtm-module":"^2.0.11","react-hot-toast":"^2.4.1","react-i18next":"^14.1.0","react-markdown":"^9.0.1","react-monaco-editor":"^0.56.1","react-router-dom":"^6.27.0","react-syntax-highlighter":"^15.6.1","rehype-katex":"^7.0.1","remark-emoji":"^5.0.1","remark-gfm":"^4.0.0","remark-math":"^6.0.0","socket.io":"^4.7.2","socket.io-client":"^4.7.2",uuid:"^10.0.0",zustand:"^4.4.1"},devDependencies:{"@aws-sdk/client-s3":"^3.709.0","@types/js-yaml":"^4.0.9","@types/markdown-it":"^14.1.2","@types/react":"^18.2.15","@types/react-dom":"^18.2.7","@types/react-gtm-module":"^2.0.3","@types/react-syntax-highlighter":"^15.5.13","@types/remarkable":"^2.0.3","@types/uuid":"^10.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","@vitejs/plugin-react-swc":"^3.3.2",archiver:"^6.0.1",dotenv:"^16.4.7",eslint:"^8.45.0","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-react-refresh":"^0.4.3",inquirer:"^9.2.12",typescript:"^5.0.2",vite:"^4.5.13"}},Lee="http://localhost:3000",b$e=async(t,e,r)=>{try{const n=to();return(await _s.post(`/exercise/${t}/create?slug=${n}`,{title:t,readme:e,language:r})).data}catch(n){throw console.error("Error creating exercise:",n),n}},w$e=async t=>{try{const e=to();return(await _s.delete(`/exercise/${t}/delete?slug=${e}`)).data}catch(e){throw console.error("Error deleting exercise:",e),e}},x$e=async(t,e)=>{try{const r=to();return(await _s.put(`/actions/rename?slug=${r}`,{slug:t,newSlug:e})).data}catch(r){throw console.error("Error renaming exercise:",r),r}},k$e=async(t,e)=>{try{const r=to(),n={"x-breathecode-token":t,"x-rigo-token":e};return(await _s.post(`${My?"http://localhost:3000":""}/actions/publish/${r}`,{categoryId:"663296363296363296363296",academyId:"663296363296363296363296"},{headers:n})).data}catch(r){throw console.error("Error publishing tutorial:",r),r}},_$e=async function(t,e,r){if(!t||!r){console.error("URL and token are required");return}r=r.trim();const n={"Content-Type":"application/json",Authorization:`Token ${r}`};try{return(await _s.post(t,e,{headers:n})).data}catch(a){throw console.error("Error while sending batch telemetry",a),_s.isAxiosError(a)&&a.response&&(console.error("Response data:",a.response.data),console.error("Response status:",a.response.status),console.error("Response headers:",a.response.headers)),a}},E$e=async function(t,e,r){!t||!r||fetch(t,{method:"POST",body:JSON.stringify(e)}).then(n=>n).catch(n=>{console.log("Error while sending stream Telemetry",n)})},C$e=async function(){try{return(await _s.get(`${Lee}/telemetry`)).data}catch(t){return console.error("Error while retrieving telemetry from CLI",t),null}},S$e=async function(t){try{const e=await _s.post(`${Lee}/telemetry`,t);return console.debug("Saved telemetry in CLI",e.data),e.data}catch(e){return console.error("Error while saving telemetry in CLI",e),null}};function T$e(){return Math.random().toString(36).slice(2,10)+Math.random().toString(36).slice(2,10)}function _L(t){if(typeof t!="string")throw new TypeError("Input must be a string");return btoa(encodeURIComponent(t))}const kh={current:null,urls:{},telemetryKey:"",listeners:{},agent:"cloud",user:{token:"",id:"",email:""},tutorialSlug:"",started:!1,version:`CLOUD:${Tee.version}`||"CLOUD:0.0.0",salute:t=>{console.log(t)},start:function(t,e,r,n,a){this.telemetryKey=n,this.tutorialSlug=r,this.agent=t,this.user.id=a.user_id,this.user.token=a.token,this.current||this.retrieve().then(i=>{if(i?(this.current=i,this.finishWorkoutSession()):(console.debug("No previous telemetry found, creating new one. Agent: ",t),this.current={telemetry_id:T$e(),slug:r,version:`CLOUD:${this.version}`,agent:t,tutorial_started_at:Date.now(),last_interaction_at:Date.now(),steps:e,workout_session:[{started_at:Date.now()}]}),this.current.user_id=this.user.id,this.current.version||(this.current.version=`CLOUD:${this.version}`),this.save(),this.started=!0,!this.user.id){console.warn("No user ID found, impossible to submit telemetry at start");return}this.submit()}).catch(i=>{throw console.log("ERROR: There was a problem starting the Telemetry"),console.error(i),new Error(`There was a problem starting, reload LearnPack
336
336
  Run
337
337
  $ learnpack start`)})},registerListener:function(t,e){this.listeners[t]=e},getStepIndicators:function(t){return this.current?See(this.current).steps[t]:null},finishWorkoutSession:function(){var e,r;if(!this.current)return;console.log("Finishing workout session",this.current);const t=(e=this.current)==null?void 0:e.workout_session[this.current.workout_session.length-1];t&&!t.ended_at&&((r=this.current)!=null&&r.last_interaction_at)&&(t.ended_at=this.current.last_interaction_at,this.current.workout_session.push({started_at:Date.now()}))},registerStepEvent:function(t,e,r){if(console.debug(`Registering Telemetry Event ${e} for user ${this.user.id}`),!this.current){console.error(`Telemetry has not been started, ${e} NOT REGISTERED`);return}const n=this.current.steps[t];if(!n){console.error(`No step ${t} found ${e} NOT REGISTERED`);return}switch(r.source_code&&(r.source_code=_L(r.source_code)),r.stdout&&(r.stdout=_L(r.stdout)),r.stderr&&(r.stderr=_L(r.stderr)),Object.prototype.hasOwnProperty.call(r,"exitCode")&&(r.exit_code=r.exitCode,r.exitCode=void 0),e){case"compile":n.compilations||(n.compilations=[]),n.compilations.push(r),this.current.steps[t]=n;break;case"test":n.tests||(n.tests=[]),n.tests.push(r),r.exit_code===0&&(n.completed_at=Date.now()),this.current.steps[t]=n;break;case"ai_interaction":n.ai_interactions||(n.ai_interactions=[]),n.ai_interactions.push(r);break;case"quiz_submission":{n.quiz_submissions||(n.quiz_submissions=[]),n.quiz_submissions.push(r);break}case"open_step":{const a=Date.now();if(n.opened_at||(n.opened_at=a,this.current.steps[t]=n),this.prevStep||this.prevStep===0){const i=this.current.steps[this.prevStep];!i.is_testeable&&!i.completed_at&&(i.completed_at=a,this.current.steps[this.prevStep]=i)}this.prevStep=t,this.submit();break}default:throw new Error(`Event type ${e} is not supported`)}if(this.current.last_interaction_at=Date.now(),this.streamEvent(t,e,r),this.save(),e==="test"&&typeof this.listeners.test_struggles=="function"){const i=See(this.current).steps[t];i.metrics.streak_test_struggle>=3&&this.listeners.test_struggles(i)}},retrieve:function(){if(this.agent==="os"||this.agent==="vscode")return C$e();const t=Fn.get(this.telemetryKey);return t&&t.slug===this.tutorialSlug?Promise.resolve(t):Promise.resolve(null)},submit:async function(){if(!this.current||!this.user.token||!this.user.id)return console.warn("Telemetry and user token are required to send telemetry, telemetry was not sent"),console.warn({current:!!this.current,id:!!this.user.id,token:!!this.user.token}),Promise.resolve();const t=this.urls.batch;if(!t){console.error("Batch URL is required to send telemetry");return}const e=this.current;e.user_id||(e.user_id=this.user.id);try{await _$e(t,e,this.user.token),console.debug("Telemetry submitted successfully for user",this.user.id)}catch(r){console.error("Error submitting telemetry",r)}},save:function(){if(!this.current){console.error("No current telemetry to save");return}this.agent==="os"||this.agent==="vscode"?S$e(this.current):Fn.set(this.telemetryKey,this.current)},getStep:function(t){var e;return((e=this.current)==null?void 0:e.steps[t])||null},streamEvent:async function(t,e,r){if(!this.current)return;const n=this.urls.streaming;if(!n)return;const i={slug:this.current.steps[t].slug,telemetry_id:this.current.telemetry_id,user_id:this.current.user_id,step_position:t,event:e,data:r};E$e(n,i,this.user.token)}};for(var Ri=[],EL=0;EL<256;++EL)Ri.push((EL+256).toString(16).slice(1));function L$e(t,e=0){return(Ri[t[e+0]]+Ri[t[e+1]]+Ri[t[e+2]]+Ri[t[e+3]]+"-"+Ri[t[e+4]]+Ri[t[e+5]]+"-"+Ri[t[e+6]]+Ri[t[e+7]]+"-"+Ri[t[e+8]]+Ri[t[e+9]]+"-"+Ri[t[e+10]]+Ri[t[e+11]]+Ri[t[e+12]]+Ri[t[e+13]]+Ri[t[e+14]]+Ri[t[e+15]]).toLowerCase()}var y5,B$e=new Uint8Array(16);function R$e(){if(!y5&&(y5=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!y5))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return y5(B$e)}var I$e=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const Bee={randomUUID:I$e};function N$e(t,e,r){if(Bee.randomUUID&&!e&&!t)return Bee.randomUUID();t=t||{};var n=t.random||(t.rng||R$e)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){r=r||0;for(var a=0;a<16;++a)e[r+a]=n[a];return e}return L$e(n)}const Bt={ENVIRONMENT:"",HOST:"",LOGOUT_CALLBACK:()=>{},init:(t,e,r)=>{Bt.ENVIRONMENT=t,Bt.HOST=e,typeof r=="function"&&(Bt.LOGOUT_CALLBACK=r)},getExercises:async t=>{const e=Bt.ENVIRONMENT==="localhost"||Bt.ENVIRONMENT==="creatorWeb"?"config":"config.json";let r=Bt.ENVIRONMENT==="localhost"||Bt.ENVIRONMENT==="creatorWeb"?`${Bt.HOST}/${e}`:"/config.json";const n=to();return n&&(r=`${r}?slug=${n}`),await(await fetch(r,{headers:{"x-rigo-token":t}})).json()},getReadme:async(t,e)=>{const r=to();let n=Bt.ENVIRONMENT==="localhost"||Bt.ENVIRONMENT==="creatorWeb"?`${Bt.HOST}/exercise/${t}/readme?lang=${e}${r?`&slug=${r}`:""}`:`/exercises/${t}/README.${e==="us"?"":"es."}md`;const a=await fetch(n);if(Bt.ENVIRONMENT==="localhost"||Bt.ENVIRONMENT==="creatorWeb")return await a.json();const i=await a.text();return g$e(i)},getFileContent:async(t,e,r={cached:!1})=>await{localhost:async()=>{const a=`${Bt.HOST}/exercise/${t}/file/${e}`;return{fileContent:await(await fetch(a)).text(),edited:!1}},localStorage:async()=>{let a=!1;const i=`/exercises/${t}/${e}`,o=await(await fetch(i)).text();if(r.cached){const l=Fn.get(`editorTabs_${t}`);if(l){const u=l.find(d=>d.name===e);if(u)return a=!0,{fileContent:u.content,edited:a}}}return{fileContent:o,edited:a}},creatorWeb:async()=>{let a=!1;const i=to(),s=`${Bt.HOST}/courses/${i}/exercises/${t}/file/${e}`,l=await(await fetch(s)).text();if(r.cached){const u=Fn.get(`editorTabs_${t}`);if(u){const d=u.find(h=>h.name===e);if(d)return a=!0,{fileContent:d.content,edited:a}}}return{fileContent:l,edited:a}}}[Bt.ENVIRONMENT](),getExerciseInfo:async t=>await{localhost:async()=>await(await lFe(t)).json(),localStorage:async()=>(await(await fetch("/config.json")).json()).exercises.find(i=>i.slug===t),creatorWeb:async()=>{try{const r=to();return await(await fetch(`${My?"http://localhost:3000":""}/courses/${r}/exercises/${t}/`)).json()}catch(r){return console.log("Error fetching exercise info in creatorWeb"),console.log(r),null}}}[Bt.ENVIRONMENT](),saveFileContent:async(t,e,r)=>await{localhost:async()=>{try{const a=`${Bt.HOST}/exercise/${t}/file/${e}`;await fetch(a,{method:"PUT",body:r})}catch(a){console.log("Error saving file content in CLI"),console.log(a)}},localStorage:async()=>{},creatorWeb:async()=>{const a=to();return await(await fetch(`/steps/${t}?slug=${a}`)).json()}}[Bt.ENVIRONMENT](),getTelemetryStep:async t=>kh.getStep(t),checkLoggedStatus:async()=>({localStorage:async()=>{const e=Fn.get("session");if(!e)throw console.log("No session in LS"),Error("The user is not logged in");const r=await eA(e.token);if(!r||!await CL(e.rigobot.key))throw Fn.remove("session"),Error("The token is invalid or inactive!");return{payload:{...e},rigoToken:e.rigobot.key,user:r}},localhost:async()=>{const e=await fetch(`${Bt.HOST}/check/rigo/status`);if(e.status===400)throw Error("The user is not logged in");const r=await e.json(),n=await eA(r.payload.token);if(n===null)throw Bt.logout(),Error("The user session is expired!");return{...r,user:n}},creatorWeb:async()=>{const e=Fn.get("session");if(!e)throw console.log("No session in LS"),Error("The user is not logged in");const r=await eA(e.token);if(!r)throw Fn.remove("session"),console.log("No user in session"),Error("The token is invalid or inactive!");if(!await CL(e.rigobot.key))throw Fn.remove("session"),Error("The token is invalid or inactive!");return{payload:{...e},rigoToken:e.rigobot.key,user:r}}})[Bt.ENVIRONMENT](),setTabHash:async t=>({localhost:async()=>{const r={hash:t},n=await fetch(`${Bt.HOST}/set-tab-hash`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(n.status===400)throw console.log("ERROR"),console.log(n),Error("Impossible to set tab hash");return await n.json(),!0},localStorage:async()=>(Fn.set("TAB_HASH",t),!0),creatorWeb:async()=>(Fn.set("TAB_HASH",t),!0)})[Bt.ENVIRONMENT](),getTabHash:async()=>P$e(),getSessionKey:async()=>({localhost:async()=>{const e=await fetch(`${Bt.HOST}/check/rigo/status`);if(e.status===400)throw Error("The user is not logged in");const r=await e.json();return r&&r.payload&&"sessionKey"in r.payload?r.payload.sessionKey:null},localStorage:async()=>{let e=Fn.get("LEARNPACK_SESSION_KEY");return e||null},creatorWeb:async()=>{let e=Fn.get("LEARNPACK_SESSION_KEY");return e||null}})[Bt.ENVIRONMENT](),setSessionKey:async t=>({localhost:async()=>{const r={sessionKey:t},n=await fetch(`${Bt.HOST}/set-session-key`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(n.status===400)throw console.log("ERROR"),console.log(n),Error("Impossible to set session key");return await n.json(),!0},localStorage:async()=>{Fn.set("LEARNPACK_SESSION_KEY",t)},creatorWeb:async()=>{Fn.set("LEARNPACK_SESSION_KEY",t)}})[Bt.ENVIRONMENT](),getSidebar:async t=>({localhost:async()=>{try{return await(await fetch(`${Bt.HOST}/sidebar`)).json()}catch(r){return console.error(r,"error getting sidebar"),{}}},localStorage:async()=>{try{return await(await fetch("/sidebar.json")).json()}catch(r){return console.error(r,"error getting sidebar"),{}}},creatorWeb:async()=>{try{const r=to(),n={"Content-Type":"application/json","x-rigo-token":t};return await(await fetch(`${Bt.HOST}/translations/sidebar?slug=${r}`,{headers:n})).json()}catch(r){return console.error(r,"error getting sidebar"),{}}}})[Bt.ENVIRONMENT](),login:async t=>({localhost:async()=>await D$e(t,Bt.HOST),localStorage:async()=>await Iee(t),creatorWeb:async()=>await Iee(t)})[Bt.ENVIRONMENT](),loginWithToken:async t=>{const e=await eA(t);if(!e)throw Error("Unable to login with provided credentials");const r=await Ree(t),n={...e,rigobot:{...r},token:t},a=await Bt.getTabHash(),i={payload:{...n},rigoToken:n.rigobot.key,user:e,tabHash:a,rigobot:{...n.rigobot},user_id:n.id};return Bt.ENVIRONMENT==="localhost"?await F$e({...i.payload,token:t,tabHash:a}):(Bt.ENVIRONMENT==="localStorage"||Bt.ENVIRONMENT==="creatorWeb")&&Fn.set("session",{token:t,email:i.user.email,user_id:i.user_id,rigobot:{...i.rigobot},user:{...i.user}}),i},replaceReadme:async(t,e,r)=>({localhost:async()=>{const a=`${Bt.HOST}/exercise/${t}/file/README.${e==="us"?"":"es."}md`;return!!(await fetch(a,{method:"PUT",body:r})).ok},localStorage:async()=>{wr.error("IMPOSSIBLE TO REPLACE README IN LS")},creatorWeb:async()=>{const a=to(),i=`${Bt.HOST}/exercise/${t}/file/README.${e==="us"?"":"es."}md?slug=${a}`;return!!(await fetch(i,{method:"PUT",body:r})).ok}})[Bt.ENVIRONMENT](),logout:async()=>{({localhost:async()=>{await O$e(Bt.HOST)},localStorage:async()=>{Fn.remove("session");const e=Zx();e.token&&delete e.token,hp(e),typeof Bt.LOGOUT_CALLBACK=="function"&&Bt.LOGOUT_CALLBACK()},creatorWeb:async()=>{Fn.remove("session");const e=Zx();e.token&&delete e.token,hp(e)}})[Bt.ENVIRONMENT]()},translateExercises:async(t,e,r)=>({localhost:async()=>{const a=`${Bt.HOST}/actions/translate`;return await(await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({exerciseSlugs:t,languages:e})})).json()},localStorage:async()=>{wr.error("IMPOSSIBLE TO TRANSLATE EXERCISES IN LS")},creatorWeb:async()=>{const a=to();try{const i=`${Bt.HOST}/actions/translate?slug=${a}`;return await(await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({exerciseSlugs:t,languages:e,rigoToken:r})})).json()}catch(i){return console.error(i,"error translating exercises"),{}}}})[Bt.ENVIRONMENT]()},eA=async t=>{const e={method:"GET",headers:{"Content-Type":"application/json",Authorization:`Token ${t}`}},r=await fetch(`${G0}/v1/auth/user/me`,e);if(!r.ok)return null;const n=await r.json();return"roles"in n&&delete n.roles,"permissions"in n&&delete n.permissions,"settings"in n&&delete n.settings,n},O$e=async t=>{const e={method:"post",body:JSON.stringify({}),headers:{"Content-Type":"application/json"}},r=await fetch(t+"/logout",e);r.ok||console.log("Error trying to logout",r.statusText)},D$e=async(t,e)=>{const r={method:"post",body:JSON.stringify(t),headers:{"Content-Type":"application/json"}},a=await(await fetch(e+"/login",r)).json(),i=await eA(a.token);return{...a,user:i}},Ree=async t=>{const e=`${ml}/v1/auth/me/token?breathecode_token=${t}`,r=await fetch(e);if(!r.ok)throw new e5("Unable to obtain Rigobot token");return await r.json()},Iee=async t=>{const e=`${G0}/v1/auth/login/`,r=await fetch(e,{body:JSON.stringify(t),method:"post",headers:{"Content-Type":"application/json"}});if(!r.ok)throw Error("Unable to login with provided credentials");const n=await r.json(),a=await Ree(n.token),i=await eA(n.token),s={...n,rigobot:{...a},user:i};return Fn.set("session",s),s},F$e=async t=>{const e={payload:{...t}},r=await fetch(`${Bt.HOST}/set-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(r.status===400)throw console.log("ERROR"),console.log(r),Error("Impossible to set tab hash");return await r.json(),!0},CL=async t=>{const e=`${ml}/v1/auth/token/${t}`;if(!(await fetch(e)).ok)throw new AJ("Unable to obtain Rigobot token");return!0},M$e=t=>{let e=2166136261;for(let r=0;r<t.length;r++)e^=t.charCodeAt(r),e+=(e<<1)+(e<<4)+(e<<7)+(e<<8)+(e<<24);return(e>>>0).toString(16)},P$e=()=>{try{const e=window.location.href.split("?")[0].split("#")[0],r=M$e(e);return console.debug(r,"HASH"),r}catch(t){return console.error("Error generating tab hash:",t),N$e()}},no={started:!1,load:()=>{if(no.started)return;const t=document.createElement("script");t.src="https://unpkg.com/rigo-ai@0.1.8/dist/main.js",t.type="text/javascript",t.async=!0,document.head.appendChild(t),no.started=!0},init:({chatHash:t,purposeSlug:e,userToken:r,context:n})=>{console.log("Initilizing RigoAI"),no.started||no.load(),window.rigo&&(window.rigo.init(t,{purposeSlug:e,user:{token:r},context:n||"",sockethost:Kx}),window.rigo.show({showBubble:!1,collapsed:!0}))},useTemplate:({slug:t,inputs:e,target:r,onComplete:n})=>{if(!window.rigo){console.error("RIGOBOT AI NOT LOADED");return}window.rigo.complete({templateSlug:t,payload:{...e},target:r,format:"markdown",onComplete:(i,s)=>{n&&n(i,s)}}).run()},ask:(t,e,r=[])=>{const n=window.rigo.ask({prompt:t,target:e,previousMessages:r,format:"markdown",useVectorStore:!1,onStart:()=>{wr.success("AI is starting...")},onComplete:(a,i)=>{console.log("success",a),console.log("data",i)}});n&&n.run()}};function v5(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var e=Math.random()*16|0,r=t=="x"?e:e&3|8;return r.toString(16)})}const U$e={js:"prompt(",py:"input(",java:"Scanner(System.in).nextLine()",cs:"Console.ReadLine()",rb:"gets",php:"$_POST['input']",go:"bufio.NewReader(os.Stdin).ReadString('\\n')",swift:"readLine()"};function $$e(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Nee(t,e){try{const r=t.split(".").pop();if(!r)return null;const n=U$e[r];if(!n)return null;let a;if(r==="js"||r==="py"||r==="swift"){const l=$$e(n);a=new RegExp(`${l}\\s*\\s*("(.*?)"|'(.*?)')`,"g")}const i=[];let s;for(;(s=a==null?void 0:a.exec(e))!==null;)s&&i.push(s[1]||s[2]);const o=i.map(l=>l.replace(/['"]/g,""));return o.length>0?o:null}catch(r){return console.error("Something went wrong:",r),null}}let z$e=Xx();const la={events:{},statusEvents:{},type:"localStorageEventEmitter",emit:(t,e)=>{la.events[t]&&la.events[t].forEach(r=>r(e))},emitStatus:(t,e)=>{la.statusEvents[t]&&la.statusEvents[t](e)},on:(t,e)=>{la.events[t]||(la.events[t]=[]),la.events[t].push(e)},onStatus:(t,e)=>{la.statusEvents[t]=e},openWindow:t=>{t&&t.url?t.options.redirect?window.location.href=t.url:window.open(t.url,"__blank"):console.error("No URL provided in data")}};function Oee(t){const e=/<REPEAT\s+"(.*?)"\s+(\d+)\s*\/>/g;return t.replace(e,(r,n,a)=>{const i=parseInt(a,10);return Array(i).fill(n).join(`
338
338
  `)})}la.on("build",async t=>{try{const e=Fn.get(`editorTabs_${t.exerciseSlug}`)||t.editorTabs;let r="",n=[];const a={},i=[];if(e.forEach(l=>{n.push(l.name.split(".").pop());const u=Nee(l.name,l.content);if(u&&i.push(...u),l.name.includes("solution"))return;const d=`
package/src/ui/app.tar.gz CHANGED
Binary file