- 扫描 ID:
- cdb12134-5c76-47c7-b2f1-7deb3e964c96已完成
- 提交的 URL:
- https://wokwi.com/projects/415721271111259137
- 报告完成时间:
链接 · 找到 0 个
从页面中识别出的传出链接
JavaScript 变量 · 找到 35 个
在页面窗口对象上加载的全局 JavaScript 变量是在函数外部声明的变量,可以从当前范围内的代码中的任何位置访问
名称 | 类型 |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
webpackChunk_N_E | object |
__next_set_public_path__ | function |
next | object |
__NEXT_DATA__ | object |
__SSG_MANIFEST_CB | function |
__NEXT_P | object |
_N_E | object |
控制台日志消息 · 找到 0 条
记录到 Web 控制台的消息
HTML
页面的原始 HTML 正文
<!DOCTYPE html><html lang="en"><head><style data-emotion="css-global" data-s="">html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box;-webkit-text-size-adjust:100%;}*,*::before,*::after{box-sizing:inherit;}strong,b{font-weight:700;}body{margin:0;color:#fff;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:400;font-size:1rem;line-height:1.5;letter-spacing:0.00938em;background-color:#121212;}@media print{body{background-color:#fff;}}body::backdrop{background-color:#121212;}</style><style data-emotion="css zf0iqh 5kthed 126e75q u0g51i 9hblc8 1vv51b1 vubbuv 9q40pm 6ci2yv 1ynyhby 1yeoas6 1tanlhh 7zja2y 1ohvc2h" data-s="">.css-zf0iqh{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:100vh;}.css-5kthed{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;border-radius:4px;box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);}.css-5kthed .MuiButtonGroup-grouped{min-width:40px;box-shadow:none;}.css-5kthed .MuiButtonGroup-grouped:hover{box-shadow:none;}.css-5kthed .MuiButtonGroup-firstButton,.css-5kthed .MuiButtonGroup-middleButton{border-top-right-radius:0;border-bottom-right-radius:0;border-right:1px solid #bdbdbd;border-color:#42a5f5;}.css-5kthed .MuiButtonGroup-firstButton.Mui-disabled,.css-5kthed .MuiButtonGroup-middleButton.Mui-disabled{border-right:1px solid rgba(255, 255, 255, 0.3);}.css-5kthed .MuiButtonGroup-lastButton,.css-5kthed .MuiButtonGroup-middleButton{border-top-left-radius:0;border-bottom-left-radius:0;}.css-126e75q{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:500;font-size:0.8125rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:4px 10px;border-radius:4px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;color:rgba(0, 0, 0, 0.87);background-color:#90caf9;box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);color:white;background-color:#2196f3;}.css-126e75q::-moz-focus-inner{border-style:none;}.css-126e75q.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-126e75q{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-126e75q:hover{-webkit-text-decoration:none;text-decoration:none;background-color:#42a5f5;box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);}@media (hover: none){.css-126e75q:hover{background-color:#90caf9;}}.css-126e75q:active{box-shadow:0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12);}.css-126e75q.Mui-focusVisible{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);}.css-126e75q.Mui-disabled{color:rgba(255, 255, 255, 0.3);box-shadow:none;background-color:rgba(255, 255, 255, 0.12);}.css-u0g51i{display:inherit;margin-right:8px;margin-left:-2px;}.css-u0g51i>*:nth-of-type(1){font-size:18px;}@media (min-width:0px){.css-9hblc8{display:none;}}@media (min-width:600px){.css-9hblc8{display:initial;}}.css-1vv51b1{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:500;font-size:0.8125rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:4px 10px;border-radius:4px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;color:rgba(0, 0, 0, 0.87);background-color:#90caf9;box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);color:white;background-color:#2196f3;min-width:28px;padding:4px 0;}.css-1vv51b1::-moz-focus-inner{border-style:none;}.css-1vv51b1.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-1vv51b1{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-1vv51b1:hover{-webkit-text-decoration:none;text-decoration:none;background-color:#42a5f5;box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);}@media (hover: none){.css-1vv51b1:hover{background-color:#90caf9;}}.css-1vv51b1:active{box-shadow:0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12);}.css-1vv51b1.Mui-focusVisible{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);}.css-1vv51b1.Mui-disabled{color:rgba(255, 255, 255, 0.3);box-shadow:none;background-color:rgba(255, 255, 255, 0.12);}.css-vubbuv{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:1em;height:1em;display:inline-block;fill:currentColor;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;font-size:1.5rem;}.css-9q40pm{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:500;font-size:0.8125rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-width:64px;padding:4px 10px;border-radius:4px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;color:rgba(0, 0, 0, 0.87);background-color:#90caf9;box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);color:white;background-color:#2196f3;}.css-9q40pm::-moz-focus-inner{border-style:none;}.css-9q40pm.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-9q40pm{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-9q40pm:hover{-webkit-text-decoration:none;text-decoration:none;background-color:#42a5f5;box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);}@media (hover: none){.css-9q40pm:hover{background-color:#90caf9;}}.css-9q40pm:active{box-shadow:0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12);}.css-9q40pm.Mui-focusVisible{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);}.css-9q40pm.Mui-disabled{color:rgba(255, 255, 255, 0.3);box-shadow:none;background-color:rgba(255, 255, 255, 0.12);}@media (min-width:0px){.css-9q40pm{display:none;}}@media (min-width:600px){.css-9q40pm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}.css-6ci2yv{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;text-align:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:1.5rem;padding:8px;border-radius:50%;overflow:visible;color:#fff;-webkit-transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:12px;font-size:1.75rem;}.css-6ci2yv::-moz-focus-inner{border-style:none;}.css-6ci2yv.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-6ci2yv{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-6ci2yv:hover{background-color:rgba(255, 255, 255, 0.08);}@media (hover: none){.css-6ci2yv:hover{background-color:transparent;}}.css-6ci2yv.Mui-disabled{background-color:transparent;color:rgba(255, 255, 255, 0.3);}.css-1ynyhby{margin:8px;}.css-1yeoas6{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:500;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-height:36px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:50%;padding:0;min-width:0;width:40px;height:40px;z-index:1050;box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);color:rgba(0, 0, 0, 0.87);background-color:#e0e0e0;background-color:#43a047;color:white;}.css-1yeoas6::-moz-focus-inner{border-style:none;}.css-1yeoas6.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-1yeoas6{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-1yeoas6:active{box-shadow:0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12);}.css-1yeoas6:hover{background-color:#f5f5f5;-webkit-text-decoration:none;text-decoration:none;}@media (hover: none){.css-1yeoas6:hover{background-color:#e0e0e0;}}.css-1yeoas6.Mui-focusVisible{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);}.css-1yeoas6.Mui-disabled{color:rgba(255, 255, 255, 0.3);box-shadow:none;background-color:rgba(255, 255, 255, 0.12);}.css-1yeoas6:hover{background-color:#388e3c;}.css-1tanlhh{margin-top:8px;margin-bottom:8px;margin-right:8px;}.css-7zja2y{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:500;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-height:36px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:50%;padding:0;min-width:0;width:40px;height:40px;z-index:1050;box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);color:rgba(0, 0, 0, 0.87);background-color:#e0e0e0;background:#1565c0;color:white;}.css-7zja2y::-moz-focus-inner{border-style:none;}.css-7zja2y.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-7zja2y{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-7zja2y:active{box-shadow:0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12);}.css-7zja2y:hover{background-color:#f5f5f5;-webkit-text-decoration:none;text-decoration:none;}@media (hover: none){.css-7zja2y:hover{background-color:#e0e0e0;}}.css-7zja2y.Mui-focusVisible{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);}.css-7zja2y.Mui-disabled{color:rgba(255, 255, 255, 0.3);box-shadow:none;background-color:rgba(255, 255, 255, 0.12);}.css-7zja2y:hover{background:#0d47a1;}.css-1ohvc2h{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:500;font-size:0.875rem;line-height:1.75;letter-spacing:0.02857em;text-transform:uppercase;min-height:36px;-webkit-transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:50%;padding:0;min-width:0;width:40px;height:40px;z-index:1050;box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);color:rgba(0, 0, 0, 0.87);background-color:#e0e0e0;background:#757575;color:white;}.css-1ohvc2h::-moz-focus-inner{border-style:none;}.css-1ohvc2h.Mui-disabled{pointer-events:none;cursor:default;}@media print{.css-1ohvc2h{-webkit-print-color-adjust:exact;color-adjust:exact;}}.css-1ohvc2h:active{box-shadow:0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12);}.css-1ohvc2h:hover{background-color:#f5f5f5;-webkit-text-decoration:none;text-decoration:none;}@media (hover: none){.css-1ohvc2h:hover{background-color:#e0e0e0;}}.css-1ohvc2h.Mui-focusVisible{box-shadow:0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);}.css-1ohvc2h.Mui-disabled{color:rgba(255, 255, 255, 0.3);box-shadow:none;background-color:rgba(255, 255, 255, 0.12);}.css-1ohvc2h:hover{background:#616161;}</style><style data-emotion="css" data-s=""></style><meta charset="utf-8"><meta name="viewport" content="width=device-width"><link href="/favicon-white.png" rel="icon" media="(prefers-color-scheme: dark)"><link href="/favicon.png" rel="icon" media="(prefers-color-scheme: light)"><meta name="twitter:site" content="@WokwiMakes"><meta name="twitter:card" content="summary_large_image"><title>esp32-micropython-ssd1306 Copy - Wokwi ESP32, STM32, Arduino Simulator</title><meta property="og:title" content="esp32-micropython-ssd1306 Copy - Wokwi ESP32, STM32, Arduino Simulator"><meta property="og:description" content="Run IoT and embedded projects in your browser: ESP32, STM32, Arduino, Pi Pico, and more. No installation required!"><meta property="og:image" content="https://thumbs.wokwi.com/projects/415721271111259137/social/1732721549025.png"><meta property="og:image:type" content="image/png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><link rel="alternate" type="application/json+oembed" href="https://wokwi.com/api/oembed?url=https%3A%2F%2Fwokwi.com%2Fshare%2F415721271111259137&t=1732721549025}" title="Wokwi oEmbed provider"><meta name="next-head-count" content="14"><meta name="theme-color" content="#90caf9"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""><link rel="preload" href="/_next/static/css/cc97500f1ef959df.css" as="style"><link rel="stylesheet" href="/_next/static/css/cc97500f1ef959df.css" data-n-g=""><link rel="preload" href="/_next/static/css/0aa695c96f2e24b7.css" as="style"><link rel="stylesheet" href="/_next/static/css/0aa695c96f2e24b7.css" data-n-p=""><noscript data-n-css=""></noscript><script type="text/javascript" async="" src="https://www.google-analytics.com/analytics.js"></script><script type="text/javascript" async="" src="https://www.googletagmanager.com/gtag/js?id=G-NCK2JJ7E5V&l=dataLayer&cx=c&gtm=457e4bk0za200"></script><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/_next/static/chunks/webpack-07ff09b461963f91.js" defer=""></script><script src="/_next/static/chunks/framework-128cfde67f3541f2.js" defer=""></script><script src="/_next/static/chunks/main-694c09c59ce722f5.js" defer=""></script><script src="/_next/static/chunks/pages/_app-08cc3a6ade24fcbc.js" defer=""></script><script src="/_next/static/chunks/b2e984c5-ca39afa8231e61d4.js" defer=""></script><script src="/_next/static/chunks/2792-017442d2becba91c.js" defer=""></script><script src="/_next/static/chunks/768-455d5ca36c626c69.js" defer=""></script><script src="/_next/static/chunks/7965-77ef3db5a8c3b2ce.js" defer=""></script><script src="/_next/static/chunks/652-1c2bd041eb382407.js" defer=""></script><script src="/_next/static/chunks/2124-5b53e12ca4d04308.js" defer=""></script><script src="/_next/static/chunks/5591-35d2b55a1d48c2e4.js" defer=""></script><script src="/_next/static/chunks/7218-dc2a250da361ffc5.js" defer=""></script><script src="/_next/static/chunks/1986-30062943eed4a5a0.js" defer=""></script><script src="/_next/static/chunks/7482-214355522d6e13b4.js" defer=""></script><script src="/_next/static/chunks/2064-d276a9d0b7af6de3.js" defer=""></script><script src="/_next/static/chunks/3764-6378acdaf83bcc60.js" defer=""></script><script src="/_next/static/chunks/1215-58aaf1c98c0816fc.js" defer=""></script><script src="/_next/static/chunks/7295-828425bda9b81df8.js" defer=""></script><script src="/_next/static/chunks/6801-344f28a1ba51915f.js" defer=""></script><script src="/_next/static/chunks/3969-5a2b9ff97d33e26e.js" defer=""></script><script src="/_next/static/chunks/6333-81b7f2d6cf753d9f.js" defer=""></script><script src="/_next/static/chunks/8521-f21c1c6f5dc65191.js" defer=""></script><script src="/_next/static/chunks/9552-a2b336a6b9dc8b01.js" defer=""></script><script src="/_next/static/chunks/pages/projects/%5BprojectId%5D-f758895c826f8935.js" defer=""></script><script src="/_next/static/Jgf9C4Fm-yuItJy5IN1PL/_buildManifest.js" defer=""></script><script src="/_next/static/Jgf9C4Fm-yuItJy5IN1PL/_ssgManifest.js" defer=""></script><style data-href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap">@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fBBc-.woff) format('woff')}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu4mxM.woff) format('woff')}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fBBc-.woff) format('woff')}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfBBc-.woff) format('woff')}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}</style><style data-styled="active" data-styled-version="5.3.10"></style><script async="async" type="text/javascript" src="https://wokwi.com/cdn/monaco-editor/0.48.0/vs/editor/editor.main.js"></script><link as="script" rel="prefetch" href="/_next/static/chunks/1354-dde8698882d588ba.js"><link as="script" rel="prefetch" href="/_next/static/chunks/pages/index-e6b2ed21e312ddf4.js"><link rel="stylesheet" type="text/css" data-name="vs/editor/editor.main" href="https://wokwi.com/cdn/monaco-editor/0.48.0/vs/editor/editor.main.css"><script async="async" type="text/javascript" src="https://wokwi.com/cdn/monaco-editor/0.48.0/vs/editor/editor.main.nls.js"></script><style type="text/css" media="screen" class="monaco-colors">.codicon-add:before { content: '\ea60'; }
.codicon-plus:before { content: '\ea60'; }
.codicon-gist-new:before { content: '\ea60'; }
.codicon-repo-create:before { content: '\ea60'; }
.codicon-lightbulb:before { content: '\ea61'; }
.codicon-light-bulb:before { content: '\ea61'; }
.codicon-repo:before { content: '\ea62'; }
.codicon-repo-delete:before { content: '\ea62'; }
.codicon-gist-fork:before { content: '\ea63'; }
.codicon-repo-forked:before { content: '\ea63'; }
.codicon-git-pull-request:before { content: '\ea64'; }
.codicon-git-pull-request-abandoned:before { content: '\ea64'; }
.codicon-record-keys:before { content: '\ea65'; }
.codicon-keyboard:before { content: '\ea65'; }
.codicon-tag:before { content: '\ea66'; }
.codicon-git-pull-request-label:before { content: '\ea66'; }
.codicon-tag-add:before { content: '\ea66'; }
.codicon-tag-remove:before { content: '\ea66'; }
.codicon-person:before { content: '\ea67'; }
.codicon-person-follow:before { content: '\ea67'; }
.codicon-person-outline:before { content: '\ea67'; }
.codicon-person-filled:before { content: '\ea67'; }
.codicon-git-branch:before { content: '\ea68'; }
.codicon-git-branch-create:before { content: '\ea68'; }
.codicon-git-branch-delete:before { content: '\ea68'; }
.codicon-source-control:before { content: '\ea68'; }
.codicon-mirror:before { content: '\ea69'; }
.codicon-mirror-public:before { content: '\ea69'; }
.codicon-star:before { content: '\ea6a'; }
.codicon-star-add:before { content: '\ea6a'; }
.codicon-star-delete:before { content: '\ea6a'; }
.codicon-star-empty:before { content: '\ea6a'; }
.codicon-comment:before { content: '\ea6b'; }
.codicon-comment-add:before { content: '\ea6b'; }
.codicon-alert:before { content: '\ea6c'; }
.codicon-warning:before { content: '\ea6c'; }
.codicon-search:before { content: '\ea6d'; }
.codicon-search-save:before { content: '\ea6d'; }
.codicon-log-out:before { content: '\ea6e'; }
.codicon-sign-out:before { content: '\ea6e'; }
.codicon-log-in:before { content: '\ea6f'; }
.codicon-sign-in:before { content: '\ea6f'; }
.codicon-eye:before { content: '\ea70'; }
.codicon-eye-unwatch:before { content: '\ea70'; }
.codicon-eye-watch:before { content: '\ea70'; }
.codicon-circle-filled:before { content: '\ea71'; }
.codicon-primitive-dot:before { content: '\ea71'; }
.codicon-close-dirty:before { content: '\ea71'; }
.codicon-debug-breakpoint:before { content: '\ea71'; }
.codicon-debug-breakpoint-disabled:before { content: '\ea71'; }
.codicon-debug-hint:before { content: '\ea71'; }
.codicon-terminal-decoration-success:before { content: '\ea71'; }
.codicon-primitive-square:before { content: '\ea72'; }
.codicon-edit:before { content: '\ea73'; }
.codicon-pencil:before { content: '\ea73'; }
.codicon-info:before { content: '\ea74'; }
.codicon-issue-opened:before { content: '\ea74'; }
.codicon-gist-private:before { content: '\ea75'; }
.codicon-git-fork-private:before { content: '\ea75'; }
.codicon-lock:before { content: '\ea75'; }
.codicon-mirror-private:before { content: '\ea75'; }
.codicon-close:before { content: '\ea76'; }
.codicon-remove-close:before { content: '\ea76'; }
.codicon-x:before { content: '\ea76'; }
.codicon-repo-sync:before { content: '\ea77'; }
.codicon-sync:before { content: '\ea77'; }
.codicon-clone:before { content: '\ea78'; }
.codicon-desktop-download:before { content: '\ea78'; }
.codicon-beaker:before { content: '\ea79'; }
.codicon-microscope:before { content: '\ea79'; }
.codicon-vm:before { content: '\ea7a'; }
.codicon-device-desktop:before { content: '\ea7a'; }
.codicon-file:before { content: '\ea7b'; }
.codicon-file-text:before { content: '\ea7b'; }
.codicon-more:before { content: '\ea7c'; }
.codicon-ellipsis:before { content: '\ea7c'; }
.codicon-kebab-horizontal:before { content: '\ea7c'; }
.codicon-mail-reply:before { content: '\ea7d'; }
.codicon-reply:before { content: '\ea7d'; }
.codicon-organization:before { content: '\ea7e'; }
.codicon-organization-filled:before { content: '\ea7e'; }
.codicon-organization-outline:before { content: '\ea7e'; }
.codicon-new-file:before { content: '\ea7f'; }
.codicon-file-add:before { content: '\ea7f'; }
.codicon-new-folder:before { content: '\ea80'; }
.codicon-file-directory-create:before { content: '\ea80'; }
.codicon-trash:before { content: '\ea81'; }
.codicon-trashcan:before { content: '\ea81'; }
.codicon-history:before { content: '\ea82'; }
.codicon-clock:before { content: '\ea82'; }
.codicon-folder:before { content: '\ea83'; }
.codicon-file-directory:before { content: '\ea83'; }
.codicon-symbol-folder:before { content: '\ea83'; }
.codicon-logo-github:before { content: '\ea84'; }
.codicon-mark-github:before { content: '\ea84'; }
.codicon-github:before { content: '\ea84'; }
.codicon-terminal:before { content: '\ea85'; }
.codicon-console:before { content: '\ea85'; }
.codicon-repl:before { content: '\ea85'; }
.codicon-zap:before { content: '\ea86'; }
.codicon-symbol-event:before { content: '\ea86'; }
.codicon-error:before { content: '\ea87'; }
.codicon-stop:before { content: '\ea87'; }
.codicon-variable:before { content: '\ea88'; }
.codicon-symbol-variable:before { content: '\ea88'; }
.codicon-array:before { content: '\ea8a'; }
.codicon-symbol-array:before { content: '\ea8a'; }
.codicon-symbol-module:before { content: '\ea8b'; }
.codicon-symbol-package:before { content: '\ea8b'; }
.codicon-symbol-namespace:before { content: '\ea8b'; }
.codicon-symbol-object:before { content: '\ea8b'; }
.codicon-symbol-method:before { content: '\ea8c'; }
.codicon-symbol-function:before { content: '\ea8c'; }
.codicon-symbol-constructor:before { content: '\ea8c'; }
.codicon-symbol-boolean:before { content: '\ea8f'; }
.codicon-symbol-null:before { content: '\ea8f'; }
.codicon-symbol-numeric:before { content: '\ea90'; }
.codicon-symbol-number:before { content: '\ea90'; }
.codicon-symbol-structure:before { content: '\ea91'; }
.codicon-symbol-struct:before { content: '\ea91'; }
.codicon-symbol-parameter:before { content: '\ea92'; }
.codicon-symbol-type-parameter:before { content: '\ea92'; }
.codicon-symbol-key:before { content: '\ea93'; }
.codicon-symbol-text:before { content: '\ea93'; }
.codicon-symbol-reference:before { content: '\ea94'; }
.codicon-go-to-file:before { content: '\ea94'; }
.codicon-symbol-enum:before { content: '\ea95'; }
.codicon-symbol-value:before { content: '\ea95'; }
.codicon-symbol-ruler:before { content: '\ea96'; }
.codicon-symbol-unit:before { content: '\ea96'; }
.codicon-activate-breakpoints:before { content: '\ea97'; }
.codicon-archive:before { content: '\ea98'; }
.codicon-arrow-both:before { content: '\ea99'; }
.codicon-arrow-down:before { content: '\ea9a'; }
.codicon-arrow-left:before { content: '\ea9b'; }
.codicon-arrow-right:before { content: '\ea9c'; }
.codicon-arrow-small-down:before { content: '\ea9d'; }
.codicon-arrow-small-left:before { content: '\ea9e'; }
.codicon-arrow-small-right:before { content: '\ea9f'; }
.codicon-arrow-small-up:before { content: '\eaa0'; }
.codicon-arrow-up:before { content: '\eaa1'; }
.codicon-bell:before { content: '\eaa2'; }
.codicon-bold:before { content: '\eaa3'; }
.codicon-book:before { content: '\eaa4'; }
.codicon-bookmark:before { content: '\eaa5'; }
.codicon-debug-breakpoint-conditional-unverified:before { content: '\eaa6'; }
.codicon-debug-breakpoint-conditional:before { content: '\eaa7'; }
.codicon-debug-breakpoint-conditional-disabled:before { content: '\eaa7'; }
.codicon-debug-breakpoint-data-unverified:before { content: '\eaa8'; }
.codicon-debug-breakpoint-data:before { content: '\eaa9'; }
.codicon-debug-breakpoint-data-disabled:before { content: '\eaa9'; }
.codicon-debug-breakpoint-log-unverified:before { content: '\eaaa'; }
.codicon-debug-breakpoint-log:before { content: '\eaab'; }
.codicon-debug-breakpoint-log-disabled:before { content: '\eaab'; }
.codicon-briefcase:before { content: '\eaac'; }
.codicon-broadcast:before { content: '\eaad'; }
.codicon-browser:before { content: '\eaae'; }
.codicon-bug:before { content: '\eaaf'; }
.codicon-calendar:before { content: '\eab0'; }
.codicon-case-sensitive:before { content: '\eab1'; }
.codicon-check:before { content: '\eab2'; }
.codicon-checklist:before { content: '\eab3'; }
.codicon-chevron-down:before { content: '\eab4'; }
.codicon-chevron-left:before { content: '\eab5'; }
.codicon-chevron-right:before { content: '\eab6'; }
.codicon-chevron-up:before { content: '\eab7'; }
.codicon-chrome-close:before { content: '\eab8'; }
.codicon-chrome-maximize:before { content: '\eab9'; }
.codicon-chrome-minimize:before { content: '\eaba'; }
.codicon-chrome-restore:before { content: '\eabb'; }
.codicon-circle-outline:before { content: '\eabc'; }
.codicon-circle:before { content: '\eabc'; }
.codicon-debug-breakpoint-unverified:before { content: '\eabc'; }
.codicon-terminal-decoration-incomplete:before { content: '\eabc'; }
.codicon-circle-slash:before { content: '\eabd'; }
.codicon-circuit-board:before { content: '\eabe'; }
.codicon-clear-all:before { content: '\eabf'; }
.codicon-clippy:before { content: '\eac0'; }
.codicon-close-all:before { content: '\eac1'; }
.codicon-cloud-download:before { content: '\eac2'; }
.codicon-cloud-upload:before { content: '\eac3'; }
.codicon-code:before { content: '\eac4'; }
.codicon-collapse-all:before { content: '\eac5'; }
.codicon-color-mode:before { content: '\eac6'; }
.codicon-comment-discussion:before { content: '\eac7'; }
.codicon-credit-card:before { content: '\eac9'; }
.codicon-dash:before { content: '\eacc'; }
.codicon-dashboard:before { content: '\eacd'; }
.codicon-database:before { content: '\eace'; }
.codicon-debug-continue:before { content: '\eacf'; }
.codicon-debug-disconnect:before { content: '\ead0'; }
.codicon-debug-pause:before { content: '\ead1'; }
.codicon-debug-restart:before { content: '\ead2'; }
.codicon-debug-start:before { content: '\ead3'; }
.codicon-debug-step-into:before { content: '\ead4'; }
.codicon-debug-step-out:before { content: '\ead5'; }
.codicon-debug-step-over:before { content: '\ead6'; }
.codicon-debug-stop:before { content: '\ead7'; }
.codicon-debug:before { content: '\ead8'; }
.codicon-device-camera-video:before { content: '\ead9'; }
.codicon-device-camera:before { content: '\eada'; }
.codicon-device-mobile:before { content: '\eadb'; }
.codicon-diff-added:before { content: '\eadc'; }
.codicon-diff-ignored:before { content: '\eadd'; }
.codicon-diff-modified:before { content: '\eade'; }
.codicon-diff-removed:before { content: '\eadf'; }
.codicon-diff-renamed:before { content: '\eae0'; }
.codicon-diff:before { content: '\eae1'; }
.codicon-diff-sidebyside:before { content: '\eae1'; }
.codicon-discard:before { content: '\eae2'; }
.codicon-editor-layout:before { content: '\eae3'; }
.codicon-empty-window:before { content: '\eae4'; }
.codicon-exclude:before { content: '\eae5'; }
.codicon-extensions:before { content: '\eae6'; }
.codicon-eye-closed:before { content: '\eae7'; }
.codicon-file-binary:before { content: '\eae8'; }
.codicon-file-code:before { content: '\eae9'; }
.codicon-file-media:before { content: '\eaea'; }
.codicon-file-pdf:before { content: '\eaeb'; }
.codicon-file-submodule:before { content: '\eaec'; }
.codicon-file-symlink-directory:before { content: '\eaed'; }
.codicon-file-symlink-file:before { content: '\eaee'; }
.codicon-file-zip:before { content: '\eaef'; }
.codicon-files:before { content: '\eaf0'; }
.codicon-filter:before { content: '\eaf1'; }
.codicon-flame:before { content: '\eaf2'; }
.codicon-fold-down:before { content: '\eaf3'; }
.codicon-fold-up:before { content: '\eaf4'; }
.codicon-fold:before { content: '\eaf5'; }
.codicon-folder-active:before { content: '\eaf6'; }
.codicon-folder-opened:before { content: '\eaf7'; }
.codicon-gear:before { content: '\eaf8'; }
.codicon-gift:before { content: '\eaf9'; }
.codicon-gist-secret:before { content: '\eafa'; }
.codicon-gist:before { content: '\eafb'; }
.codicon-git-commit:before { content: '\eafc'; }
.codicon-git-compare:before { content: '\eafd'; }
.codicon-compare-changes:before { content: '\eafd'; }
.codicon-git-merge:before { content: '\eafe'; }
.codicon-github-action:before { content: '\eaff'; }
.codicon-github-alt:before { content: '\eb00'; }
.codicon-globe:before { content: '\eb01'; }
.codicon-grabber:before { content: '\eb02'; }
.codicon-graph:before { content: '\eb03'; }
.codicon-gripper:before { content: '\eb04'; }
.codicon-heart:before { content: '\eb05'; }
.codicon-home:before { content: '\eb06'; }
.codicon-horizontal-rule:before { content: '\eb07'; }
.codicon-hubot:before { content: '\eb08'; }
.codicon-inbox:before { content: '\eb09'; }
.codicon-issue-reopened:before { content: '\eb0b'; }
.codicon-issues:before { content: '\eb0c'; }
.codicon-italic:before { content: '\eb0d'; }
.codicon-jersey:before { content: '\eb0e'; }
.codicon-json:before { content: '\eb0f'; }
.codicon-kebab-vertical:before { content: '\eb10'; }
.codicon-key:before { content: '\eb11'; }
.codicon-law:before { content: '\eb12'; }
.codicon-lightbulb-autofix:before { content: '\eb13'; }
.codicon-link-external:before { content: '\eb14'; }
.codicon-link:before { content: '\eb15'; }
.codicon-list-ordered:before { content: '\eb16'; }
.codicon-list-unordered:before { content: '\eb17'; }
.codicon-live-share:before { content: '\eb18'; }
.codicon-loading:before { content: '\eb19'; }
.codicon-location:before { content: '\eb1a'; }
.codicon-mail-read:before { content: '\eb1b'; }
.codicon-mail:before { content: '\eb1c'; }
.codicon-markdown:before { content: '\eb1d'; }
.codicon-megaphone:before { content: '\eb1e'; }
.codicon-mention:before { content: '\eb1f'; }
.codicon-milestone:before { content: '\eb20'; }
.codicon-git-pull-request-milestone:before { content: '\eb20'; }
.codicon-mortar-board:before { content: '\eb21'; }
.codicon-move:before { content: '\eb22'; }
.codicon-multiple-windows:before { content: '\eb23'; }
.codicon-mute:before { content: '\eb24'; }
.codicon-no-newline:before { content: '\eb25'; }
.codicon-note:before { content: '\eb26'; }
.codicon-octoface:before { content: '\eb27'; }
.codicon-open-preview:before { content: '\eb28'; }
.codicon-package:before { content: '\eb29'; }
.codicon-paintcan:before { content: '\eb2a'; }
.codicon-pin:before { content: '\eb2b'; }
.codicon-play:before { content: '\eb2c'; }
.codicon-run:before { content: '\eb2c'; }
.codicon-plug:before { content: '\eb2d'; }
.codicon-preserve-case:before { content: '\eb2e'; }
.codicon-preview:before { content: '\eb2f'; }
.codicon-project:before { content: '\eb30'; }
.codicon-pulse:before { content: '\eb31'; }
.codicon-question:before { content: '\eb32'; }
.codicon-quote:before { content: '\eb33'; }
.codicon-radio-tower:before { content: '\eb34'; }
.codicon-reactions:before { content: '\eb35'; }
.codicon-references:before { content: '\eb36'; }
.codicon-refresh:before { content: '\eb37'; }
.codicon-regex:before { content: '\eb38'; }
.codicon-remote-explorer:before { content: '\eb39'; }
.codicon-remote:before { content: '\eb3a'; }
.codicon-remove:before { content: '\eb3b'; }
.codicon-replace-all:before { content: '\eb3c'; }
.codicon-replace:before { content: '\eb3d'; }
.codicon-repo-clone:before { content: '\eb3e'; }
.codicon-repo-force-push:before { content: '\eb3f'; }
.codicon-repo-pull:before { content: '\eb40'; }
.codicon-repo-push:before { content: '\eb41'; }
.codicon-report:before { content: '\eb42'; }
.codicon-request-changes:before { content: '\eb43'; }
.codicon-rocket:before { content: '\eb44'; }
.codicon-root-folder-opened:before { content: '\eb45'; }
.codicon-root-folder:before { content: '\eb46'; }
.codicon-rss:before { content: '\eb47'; }
.codicon-ruby:before { content: '\eb48'; }
.codicon-save-all:before { content: '\eb49'; }
.codicon-save-as:before { content: '\eb4a'; }
.codicon-save:before { content: '\eb4b'; }
.codicon-screen-full:before { content: '\eb4c'; }
.codicon-screen-normal:before { content: '\eb4d'; }
.codicon-search-stop:before { content: '\eb4e'; }
.codicon-server:before { content: '\eb50'; }
.codicon-settings-gear:before { content: '\eb51'; }
.codicon-settings:before { content: '\eb52'; }
.codicon-shield:before { content: '\eb53'; }
.codicon-smiley:before { content: '\eb54'; }
.codicon-sort-precedence:before { content: '\eb55'; }
.codicon-split-horizontal:before { content: '\eb56'; }
.codicon-split-vertical:before { content: '\eb57'; }
.codicon-squirrel:before { content: '\eb58'; }
.codicon-star-full:before { content: '\eb59'; }
.codicon-star-half:before { content: '\eb5a'; }
.codicon-symbol-class:before { content: '\eb5b'; }
.codicon-symbol-color:before { content: '\eb5c'; }
.codicon-symbol-constant:before { content: '\eb5d'; }
.codicon-symbol-enum-member:before { content: '\eb5e'; }
.codicon-symbol-field:before { content: '\eb5f'; }
.codicon-symbol-file:before { content: '\eb60'; }
.codicon-symbol-interface:before { content: '\eb61'; }
.codicon-symbol-keyword:before { content: '\eb62'; }
.codicon-symbol-misc:before { content: '\eb63'; }
.codicon-symbol-operator:before { content: '\eb64'; }
.codicon-symbol-property:before { content: '\eb65'; }
.codicon-wrench:before { content: '\eb65'; }
.codicon-wrench-subaction:before { content: '\eb65'; }
.codicon-symbol-snippet:before { content: '\eb66'; }
.codicon-tasklist:before { content: '\eb67'; }
.codicon-telescope:before { content: '\eb68'; }
.codicon-text-size:before { content: '\eb69'; }
.codicon-three-bars:before { content: '\eb6a'; }
.codicon-thumbsdown:before { content: '\eb6b'; }
.codicon-thumbsup:before { content: '\eb6c'; }
.codicon-tools:before { content: '\eb6d'; }
.codicon-triangle-down:before { content: '\eb6e'; }
.codicon-triangle-left:before { content: '\eb6f'; }
.codicon-triangle-right:before { content: '\eb70'; }
.codicon-triangle-up:before { content: '\eb71'; }
.codicon-twitter:before { content: '\eb72'; }
.codicon-unfold:before { content: '\eb73'; }
.codicon-unlock:before { content: '\eb74'; }
.codicon-unmute:before { content: '\eb75'; }
.codicon-unverified:before { content: '\eb76'; }
.codicon-verified:before { content: '\eb77'; }
.codicon-versions:before { content: '\eb78'; }
.codicon-vm-active:before { content: '\eb79'; }
.codicon-vm-outline:before { content: '\eb7a'; }
.codicon-vm-running:before { content: '\eb7b'; }
.codicon-watch:before { content: '\eb7c'; }
.codicon-whitespace:before { content: '\eb7d'; }
.codicon-whole-word:before { content: '\eb7e'; }
.codicon-window:before { content: '\eb7f'; }
.codicon-word-wrap:before { content: '\eb80'; }
.codicon-zoom-in:before { content: '\eb81'; }
.codicon-zoom-out:before { content: '\eb82'; }
.codicon-list-filter:before { content: '\eb83'; }
.codicon-list-flat:before { content: '\eb84'; }
.codicon-list-selection:before { content: '\eb85'; }
.codicon-selection:before { content: '\eb85'; }
.codicon-list-tree:before { content: '\eb86'; }
.codicon-debug-breakpoint-function-unverified:before { content: '\eb87'; }
.codicon-debug-breakpoint-function:before { content: '\eb88'; }
.codicon-debug-breakpoint-function-disabled:before { content: '\eb88'; }
.codicon-debug-stackframe-active:before { content: '\eb89'; }
.codicon-circle-small-filled:before { content: '\eb8a'; }
.codicon-debug-stackframe-dot:before { content: '\eb8a'; }
.codicon-terminal-decoration-mark:before { content: '\eb8a'; }
.codicon-debug-stackframe:before { content: '\eb8b'; }
.codicon-debug-stackframe-focused:before { content: '\eb8b'; }
.codicon-debug-breakpoint-unsupported:before { content: '\eb8c'; }
.codicon-symbol-string:before { content: '\eb8d'; }
.codicon-debug-reverse-continue:before { content: '\eb8e'; }
.codicon-debug-step-back:before { content: '\eb8f'; }
.codicon-debug-restart-frame:before { content: '\eb90'; }
.codicon-debug-alt:before { content: '\eb91'; }
.codicon-call-incoming:before { content: '\eb92'; }
.codicon-call-outgoing:before { content: '\eb93'; }
.codicon-menu:before { content: '\eb94'; }
.codicon-expand-all:before { content: '\eb95'; }
.codicon-feedback:before { content: '\eb96'; }
.codicon-git-pull-request-reviewer:before { content: '\eb96'; }
.codicon-group-by-ref-type:before { content: '\eb97'; }
.codicon-ungroup-by-ref-type:before { content: '\eb98'; }
.codicon-account:before { content: '\eb99'; }
.codicon-git-pull-request-assignee:before { content: '\eb99'; }
.codicon-bell-dot:before { content: '\eb9a'; }
.codicon-debug-console:before { content: '\eb9b'; }
.codicon-library:before { content: '\eb9c'; }
.codicon-output:before { content: '\eb9d'; }
.codicon-run-all:before { content: '\eb9e'; }
.codicon-sync-ignored:before { content: '\eb9f'; }
.codicon-pinned:before { content: '\eba0'; }
.codicon-github-inverted:before { content: '\eba1'; }
.codicon-server-process:before { content: '\eba2'; }
.codicon-server-environment:before { content: '\eba3'; }
.codicon-pass:before { content: '\eba4'; }
.codicon-issue-closed:before { content: '\eba4'; }
.codicon-stop-circle:before { content: '\eba5'; }
.codicon-play-circle:before { content: '\eba6'; }
.codicon-record:before { content: '\eba7'; }
.codicon-debug-alt-small:before { content: '\eba8'; }
.codicon-vm-connect:before { content: '\eba9'; }
.codicon-cloud:before { content: '\ebaa'; }
.codicon-merge:before { content: '\ebab'; }
.codicon-export:before { content: '\ebac'; }
.codicon-graph-left:before { content: '\ebad'; }
.codicon-magnet:before { content: '\ebae'; }
.codicon-notebook:before { content: '\ebaf'; }
.codicon-redo:before { content: '\ebb0'; }
.codicon-check-all:before { content: '\ebb1'; }
.codicon-pinned-dirty:before { content: '\ebb2'; }
.codicon-pass-filled:before { content: '\ebb3'; }
.codicon-circle-large-filled:before { content: '\ebb4'; }
.codicon-circle-large:before { content: '\ebb5'; }
.codicon-circle-large-outline:before { content: '\ebb5'; }
.codicon-combine:before { content: '\ebb6'; }
.codicon-gather:before { content: '\ebb6'; }
.codicon-table:before { content: '\ebb7'; }
.codicon-variable-group:before { content: '\ebb8'; }
.codicon-type-hierarchy:before { content: '\ebb9'; }
.codicon-type-hierarchy-sub:before { content: '\ebba'; }
.codicon-type-hierarchy-super:before { content: '\ebbb'; }
.codicon-git-pull-request-create:before { content: '\ebbc'; }
.codicon-run-above:before { content: '\ebbd'; }
.codicon-run-below:before { content: '\ebbe'; }
.codicon-notebook-template:before { content: '\ebbf'; }
.codicon-debug-rerun:before { content: '\ebc0'; }
.codicon-workspace-trusted:before { content: '\ebc1'; }
.codicon-workspace-untrusted:before { content: '\ebc2'; }
.codicon-workspace-unknown:before { content: '\ebc3'; }
.codicon-terminal-cmd:before { content: '\ebc4'; }
.codicon-terminal-debian:before { content: '\ebc5'; }
.codicon-terminal-linux:before { content: '\ebc6'; }
.codicon-terminal-powershell:before { content: '\ebc7'; }
.codicon-terminal-tmux:before { content: '\ebc8'; }
.codicon-terminal-ubuntu:before { content: '\ebc9'; }
.codicon-terminal-bash:before { content: '\ebca'; }
.codicon-arrow-swap:before { content: '\ebcb'; }
.codicon-copy:before { content: '\ebcc'; }
.codicon-person-add:before { content: '\ebcd'; }
.codicon-filter-filled:before { content: '\ebce'; }
.codicon-wand:before { content: '\ebcf'; }
.codicon-debug-line-by-line:before { content: '\ebd0'; }
.codicon-inspect:before { content: '\ebd1'; }
.codicon-layers:before { content: '\ebd2'; }
.codicon-layers-dot:before { content: '\ebd3'; }
.codicon-layers-active:before { content: '\ebd4'; }
.codicon-compass:before { content: '\ebd5'; }
.codicon-compass-dot:before { content: '\ebd6'; }
.codicon-compass-active:before { content: '\ebd7'; }
.codicon-azure:before { content: '\ebd8'; }
.codicon-issue-draft:before { content: '\ebd9'; }
.codicon-git-pull-request-closed:before { content: '\ebda'; }
.codicon-git-pull-request-draft:before { content: '\ebdb'; }
.codicon-debug-all:before { content: '\ebdc'; }
.codicon-debug-coverage:before { content: '\ebdd'; }
.codicon-run-errors:before { content: '\ebde'; }
.codicon-folder-library:before { content: '\ebdf'; }
.codicon-debug-continue-small:before { content: '\ebe0'; }
.codicon-beaker-stop:before { content: '\ebe1'; }
.codicon-graph-line:before { content: '\ebe2'; }
.codicon-graph-scatter:before { content: '\ebe3'; }
.codicon-pie-chart:before { content: '\ebe4'; }
.codicon-bracket:before { content: '\eb0f'; }
.codicon-bracket-dot:before { content: '\ebe5'; }
.codicon-bracket-error:before { content: '\ebe6'; }
.codicon-lock-small:before { content: '\ebe7'; }
.codicon-azure-devops:before { content: '\ebe8'; }
.codicon-verified-filled:before { content: '\ebe9'; }
.codicon-newline:before { content: '\ebea'; }
.codicon-layout:before { content: '\ebeb'; }
.codicon-layout-activitybar-left:before { content: '\ebec'; }
.codicon-layout-activitybar-right:before { content: '\ebed'; }
.codicon-layout-panel-left:before { content: '\ebee'; }
.codicon-layout-panel-center:before { content: '\ebef'; }
.codicon-layout-panel-justify:before { content: '\ebf0'; }
.codicon-layout-panel-right:before { content: '\ebf1'; }
.codicon-layout-panel:before { content: '\ebf2'; }
.codicon-layout-sidebar-left:before { content: '\ebf3'; }
.codicon-layout-sidebar-right:before { content: '\ebf4'; }
.codicon-layout-statusbar:before { content: '\ebf5'; }
.codicon-layout-menubar:before { content: '\ebf6'; }
.codicon-layout-centered:before { content: '\ebf7'; }
.codicon-target:before { content: '\ebf8'; }
.codicon-indent:before { content: '\ebf9'; }
.codicon-record-small:before { content: '\ebfa'; }
.codicon-error-small:before { content: '\ebfb'; }
.codicon-terminal-decoration-error:before { content: '\ebfb'; }
.codicon-arrow-circle-down:before { content: '\ebfc'; }
.codicon-arrow-circle-left:before { content: '\ebfd'; }
.codicon-arrow-circle-right:before { content: '\ebfe'; }
.codicon-arrow-circle-up:before { content: '\ebff'; }
.codicon-layout-sidebar-right-off:before { content: '\ec00'; }
.codicon-layout-panel-off:before { content: '\ec01'; }
.codicon-layout-sidebar-left-off:before { content: '\ec02'; }
.codicon-blank:before { content: '\ec03'; }
.codicon-heart-filled:before { content: '\ec04'; }
.codicon-map:before { content: '\ec05'; }
.codicon-map-horizontal:before { content: '\ec05'; }
.codicon-fold-horizontal:before { content: '\ec05'; }
.codicon-map-filled:before { content: '\ec06'; }
.codicon-map-horizontal-filled:before { content: '\ec06'; }
.codicon-fold-horizontal-filled:before { content: '\ec06'; }
.codicon-circle-small:before { content: '\ec07'; }
.codicon-bell-slash:before { content: '\ec08'; }
.codicon-bell-slash-dot:before { content: '\ec09'; }
.codicon-comment-unresolved:before { content: '\ec0a'; }
.codicon-git-pull-request-go-to-changes:before { content: '\ec0b'; }
.codicon-git-pull-request-new-changes:before { content: '\ec0c'; }
.codicon-search-fuzzy:before { content: '\ec0d'; }
.codicon-comment-draft:before { content: '\ec0e'; }
.codicon-send:before { content: '\ec0f'; }
.codicon-sparkle:before { content: '\ec10'; }
.codicon-insert:before { content: '\ec11'; }
.codicon-mic:before { content: '\ec12'; }
.codicon-thumbsdown-filled:before { content: '\ec13'; }
.codicon-thumbsup-filled:before { content: '\ec14'; }
.codicon-coffee:before { content: '\ec15'; }
.codicon-snake:before { content: '\ec16'; }
.codicon-game:before { content: '\ec17'; }
.codicon-vr:before { content: '\ec18'; }
.codicon-chip:before { content: '\ec19'; }
.codicon-piano:before { content: '\ec1a'; }
.codicon-music:before { content: '\ec1b'; }
.codicon-mic-filled:before { content: '\ec1c'; }
.codicon-repo-fetch:before { content: '\ec1d'; }
.codicon-copilot:before { content: '\ec1e'; }
.codicon-lightbulb-sparkle:before { content: '\ec1f'; }
.codicon-robot:before { content: '\ec20'; }
.codicon-sparkle-filled:before { content: '\ec21'; }
.codicon-diff-single:before { content: '\ec22'; }
.codicon-diff-multiple:before { content: '\ec23'; }
.codicon-surround-with:before { content: '\ec24'; }
.codicon-share:before { content: '\ec25'; }
.codicon-git-stash:before { content: '\ec26'; }
.codicon-git-stash-apply:before { content: '\ec27'; }
.codicon-git-stash-pop:before { content: '\ec28'; }
.codicon-vscode:before { content: '\ec29'; }
.codicon-vscode-insiders:before { content: '\ec2a'; }
.codicon-code-oss:before { content: '\ec2b'; }
.codicon-run-coverage:before { content: '\ec2c'; }
.codicon-run-all-coverage:before { content: '\ec2d'; }
.codicon-coverage:before { content: '\ec2e'; }
.codicon-github-project:before { content: '\ec2f'; }
.codicon-map-vertical:before { content: '\ec30'; }
.codicon-fold-vertical:before { content: '\ec30'; }
.codicon-map-vertical-filled:before { content: '\ec31'; }
.codicon-fold-vertical-filled:before { content: '\ec31'; }
.codicon-dialog-error:before { content: '\ea87'; }
.codicon-dialog-warning:before { content: '\ea6c'; }
.codicon-dialog-info:before { content: '\ea74'; }
.codicon-dialog-close:before { content: '\ea76'; }
.codicon-tree-item-expanded:before { content: '\eab4'; }
.codicon-tree-filter-on-type-on:before { content: '\eb83'; }
.codicon-tree-filter-on-type-off:before { content: '\eb85'; }
.codicon-tree-filter-clear:before { content: '\ea76'; }
.codicon-tree-item-loading:before { content: '\eb19'; }
.codicon-menu-selection:before { content: '\eab2'; }
.codicon-menu-submenu:before { content: '\eab6'; }
.codicon-menubar-more:before { content: '\ea7c'; }
.codicon-scrollbar-button-left:before { content: '\eb6f'; }
.codicon-scrollbar-button-right:before { content: '\eb70'; }
.codicon-scrollbar-button-up:before { content: '\eb71'; }
.codicon-scrollbar-button-down:before { content: '\eb6e'; }
.codicon-toolbar-more:before { content: '\ea7c'; }
.codicon-quick-input-back:before { content: '\ea9b'; }
.codicon-drop-down-button:before { content: '\eab4'; }
.codicon-symbol-customcolor:before { content: '\eb5c'; }
.codicon-workspace-unspecified:before { content: '\ebc3'; }
.codicon-git-fetch:before { content: '\ec1d'; }
.codicon-lightbulb-sparkle-autofix:before { content: '\ec1f'; }
.codicon-debug-breakpoint-pending:before { content: '\ebd9'; }
.codicon-widget-close:before { content: '\ea76'; }
.codicon-goto-previous-location:before { content: '\eaa1'; }
.codicon-goto-next-location:before { content: '\ea9a'; }
.codicon-diff-review-insert:before { content: '\ea60'; }
.codicon-diff-review-remove:before { content: '\eb3b'; }
.codicon-diff-review-close:before { content: '\ea76'; }
.codicon-parameter-hints-next:before { content: '\eab4'; }
.codicon-parameter-hints-previous:before { content: '\eab7'; }
.codicon-suggest-more-info:before { content: '\eab6'; }
.codicon-inline-suggestion-hints-next:before { content: '\eab6'; }
.codicon-inline-suggestion-hints-previous:before { content: '\eab5'; }
.codicon-diff-insert:before { content: '\ea60'; }
.codicon-diff-remove:before { content: '\eb3b'; }
.codicon-find-selection:before { content: '\eb85'; }
.codicon-find-collapsed:before { content: '\eab6'; }
.codicon-find-expanded:before { content: '\eab4'; }
.codicon-find-replace:before { content: '\eb3d'; }
.codicon-find-replace-all:before { content: '\eb3c'; }
.codicon-find-previous-match:before { content: '\eaa1'; }
.codicon-find-next-match:before { content: '\ea9a'; }
.codicon-folding-expanded:before { content: '\eab4'; }
.codicon-folding-collapsed:before { content: '\eab6'; }
.codicon-folding-manual-collapsed:before { content: '\eab6'; }
.codicon-folding-manual-expanded:before { content: '\eab4'; }
.codicon-marker-navigation-next:before { content: '\ea9a'; }
.codicon-marker-navigation-previous:before { content: '\eaa1'; }
.codicon-extensions-warning-message:before { content: '\ea6c'; }
.monaco-workbench .workbench-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid rgba(200, 200, 200, 0.5); }
.monaco-workbench .workbench-hover hr { border-top: 1px solid rgba(200, 200, 200, 0.5); }
.monaco-editor .inputarea.ime-input { background-color: #fffffe; }
.monaco-editor .view-overlays .current-line-exact { border: 2px solid #eeeeee; }
.monaco-editor .margin-view-overlays .current-line-exact-margin { border: 2px solid #eeeeee; }
.monaco-editor .bracket-indent-guide.lvl-0 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-1 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-2 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-3 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-4 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-5 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-6 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-7 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-8 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-9 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-10 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-11 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-12 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-13 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-14 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-15 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-16 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-17 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-18 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-19 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-20 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-21 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-22 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-23 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-24 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-25 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-26 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .bracket-indent-guide.lvl-27 { --guide-color: rgba(4, 49, 250, 0.3); --guide-color-active: #0431fa; }
.monaco-editor .bracket-indent-guide.lvl-28 { --guide-color: rgba(49, 147, 49, 0.3); --guide-color-active: #319331; }
.monaco-editor .bracket-indent-guide.lvl-29 { --guide-color: rgba(123, 56, 20, 0.3); --guide-color-active: #7b3814; }
.monaco-editor .vertical { box-shadow: 1px 0 0 0 var(--guide-color) inset; }
.monaco-editor .horizontal-top { border-top: 1px solid var(--guide-color); }
.monaco-editor .horizontal-bottom { border-bottom: 1px solid var(--guide-color); }
.monaco-editor .vertical.indent-active { box-shadow: 1px 0 0 0 var(--guide-color-active) inset; }
.monaco-editor .horizontal-top.indent-active { border-top: 1px solid var(--guide-color-active); }
.monaco-editor .horizontal-bottom.indent-active { border-bottom: 1px solid var(--guide-color-active); }
.monaco-editor .lines-content .core-guide-indent.lvl-0 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-1 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-2 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-3 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-4 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-5 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-6 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-7 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-8 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-9 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-10 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-11 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-12 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-13 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-14 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-15 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-16 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-17 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-18 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-19 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-20 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-21 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-22 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-23 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-24 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-25 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-26 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-27 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-28 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent.lvl-29 { --indent-color: #d3d3d3; --indent-color-active: #939393; }
.monaco-editor .lines-content .core-guide-indent { box-shadow: 1px 0 0 0 var(--indent-color) inset; }
.monaco-editor .lines-content .core-guide-indent.indent-active { box-shadow: 1px 0 0 0 var(--indent-color-active) inset; }
.monaco-editor .line-numbers.dimmed-line-number { color: rgba(35, 120, 147, 0.4); }
.monaco-editor .cursors-layer .cursor { background-color: #000000; border-color: #000000; color: #ffffff; }
.monaco-editor .cursors-layer .cursor-primary { background-color: #000000; border-color: #000000; color: #ffffff; }
.monaco-editor .cursors-layer .cursor-secondary { background-color: #000000; border-color: #000000; color: #ffffff; }
.monaco-editor .unexpected-closing-bracket { color: rgba(255, 18, 18, 0.8); }
.monaco-editor .bracket-highlighting-0 { color: #0431fa; }
.monaco-editor .bracket-highlighting-1 { color: #319331; }
.monaco-editor .bracket-highlighting-2 { color: #7b3814; }
.monaco-editor .bracket-highlighting-3 { color: #0431fa; }
.monaco-editor .bracket-highlighting-4 { color: #319331; }
.monaco-editor .bracket-highlighting-5 { color: #7b3814; }
.monaco-editor .bracket-highlighting-6 { color: #0431fa; }
.monaco-editor .bracket-highlighting-7 { color: #319331; }
.monaco-editor .bracket-highlighting-8 { color: #7b3814; }
.monaco-editor .bracket-highlighting-9 { color: #0431fa; }
.monaco-editor .bracket-highlighting-10 { color: #319331; }
.monaco-editor .bracket-highlighting-11 { color: #7b3814; }
.monaco-editor .bracket-highlighting-12 { color: #0431fa; }
.monaco-editor .bracket-highlighting-13 { color: #319331; }
.monaco-editor .bracket-highlighting-14 { color: #7b3814; }
.monaco-editor .bracket-highlighting-15 { color: #0431fa; }
.monaco-editor .bracket-highlighting-16 { color: #319331; }
.monaco-editor .bracket-highlighting-17 { color: #7b3814; }
.monaco-editor .bracket-highlighting-18 { color: #0431fa; }
.monaco-editor .bracket-highlighting-19 { color: #319331; }
.monaco-editor .bracket-highlighting-20 { color: #7b3814; }
.monaco-editor .bracket-highlighting-21 { color: #0431fa; }
.monaco-editor .bracket-highlighting-22 { color: #319331; }
.monaco-editor .bracket-highlighting-23 { color: #7b3814; }
.monaco-editor .bracket-highlighting-24 { color: #0431fa; }
.monaco-editor .bracket-highlighting-25 { color: #319331; }
.monaco-editor .bracket-highlighting-26 { color: #7b3814; }
.monaco-editor .bracket-highlighting-27 { color: #0431fa; }
.monaco-editor .bracket-highlighting-28 { color: #319331; }
.monaco-editor .bracket-highlighting-29 { color: #7b3814; }
.monaco-editor .squiggly-error { background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23e51400'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left; }
.monaco-editor .squiggly-warning { background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23bf8803'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left; }
.monaco-editor .squiggly-info { background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%231a85ff'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left; }
.monaco-editor .squiggly-hint { background: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%223%22%20width%3D%2212%22%3E%3Cg%20fill%3D%22%236c6c6c%22%3E%3Ccircle%20cx%3D%221%22%20cy%3D%221%22%20r%3D%221%22%2F%3E%3Ccircle%20cx%3D%225%22%20cy%3D%221%22%20r%3D%221%22%2F%3E%3Ccircle%20cx%3D%229%22%20cy%3D%221%22%20r%3D%221%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") no-repeat bottom left; }
.monaco-editor.showUnused .squiggly-inline-unnecessary { opacity: 0.467; }
.monaco-editor .quickfix-edit-highlight { background-color: rgba(234, 92, 0, 0.33); }
.monaco-editor .selectionHighlight { background-color: rgba(173, 214, 255, 0.15); }
.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid rgba(200, 200, 200, 0.5); }
.monaco-editor .monaco-hover hr { border-top: 1px solid rgba(200, 200, 200, 0.5); }
.monaco-editor .monaco-hover hr { border-bottom: 0px solid rgba(200, 200, 200, 0.5); }
.monaco-editor, .monaco-diff-editor, .monaco-component { --vscode-foreground: #616161;
--vscode-disabledForeground: rgba(97, 97, 97, 0.5);
--vscode-errorForeground: #a1260d;
--vscode-descriptionForeground: #717171;
--vscode-icon-foreground: #424242;
--vscode-focusBorder: #0090f1;
--vscode-textLink-foreground: #006ab1;
--vscode-textLink-activeForeground: #006ab1;
--vscode-textSeparator-foreground: rgba(0, 0, 0, 0.18);
--vscode-textPreformat-foreground: #a31515;
--vscode-textPreformat-background: rgba(0, 0, 0, 0.1);
--vscode-textBlockQuote-background: #f2f2f2;
--vscode-textBlockQuote-border: rgba(0, 122, 204, 0.5);
--vscode-textCodeBlock-background: rgba(220, 220, 220, 0.4);
--vscode-sash-hoverBorder: #0090f1;
--vscode-badge-background: #c4c4c4;
--vscode-badge-foreground: #333333;
--vscode-scrollbar-shadow: #dddddd;
--vscode-scrollbarSlider-background: rgba(100, 100, 100, 0.4);
--vscode-scrollbarSlider-hoverBackground: rgba(100, 100, 100, 0.7);
--vscode-scrollbarSlider-activeBackground: rgba(0, 0, 0, 0.6);
--vscode-progressBar-background: #0e70c0;
--vscode-editor-background: #fffffe;
--vscode-editor-foreground: #000000;
--vscode-editorStickyScroll-background: #fffffe;
--vscode-editorStickyScrollHover-background: #f0f0f0;
--vscode-editorStickyScroll-shadow: #dddddd;
--vscode-editorWidget-background: #f3f3f3;
--vscode-editorWidget-foreground: #616161;
--vscode-editorWidget-border: #c8c8c8;
--vscode-editorError-foreground: #e51400;
--vscode-editorWarning-foreground: #bf8803;
--vscode-editorInfo-foreground: #1a85ff;
--vscode-editorHint-foreground: #6c6c6c;
--vscode-editorLink-activeForeground: #0000ff;
--vscode-editor-selectionBackground: #add6ff;
--vscode-editor-inactiveSelectionBackground: #e5ebf1;
--vscode-editor-selectionHighlightBackground: rgba(173, 214, 255, 0.3);
--vscode-editor-findMatchBackground: #a8ac94;
--vscode-editor-findMatchHighlightBackground: rgba(234, 92, 0, 0.33);
--vscode-editor-findRangeHighlightBackground: rgba(180, 180, 180, 0.3);
--vscode-editor-hoverHighlightBackground: rgba(173, 214, 255, 0.15);
--vscode-editorHoverWidget-background: #f3f3f3;
--vscode-editorHoverWidget-foreground: #616161;
--vscode-editorHoverWidget-border: #c8c8c8;
--vscode-editorHoverWidget-statusBarBackground: #e7e7e7;
--vscode-editorInlayHint-foreground: #969696;
--vscode-editorInlayHint-background: rgba(196, 196, 196, 0.1);
--vscode-editorInlayHint-typeForeground: #969696;
--vscode-editorInlayHint-typeBackground: rgba(196, 196, 196, 0.1);
--vscode-editorInlayHint-parameterForeground: #969696;
--vscode-editorInlayHint-parameterBackground: rgba(196, 196, 196, 0.1);
--vscode-editorLightBulb-foreground: #ddb100;
--vscode-editorLightBulbAutoFix-foreground: #007acc;
--vscode-editorLightBulbAi-foreground: #ddb100;
--vscode-editor-snippetTabstopHighlightBackground: rgba(10, 50, 100, 0.2);
--vscode-editor-snippetFinalTabstopHighlightBorder: rgba(10, 50, 100, 0.5);
--vscode-diffEditor-insertedTextBackground: rgba(156, 204, 44, 0.25);
--vscode-diffEditor-removedTextBackground: rgba(255, 0, 0, 0.2);
--vscode-diffEditor-insertedLineBackground: rgba(155, 185, 85, 0.2);
--vscode-diffEditor-removedLineBackground: rgba(255, 0, 0, 0.2);
--vscode-diffEditor-diagonalFill: rgba(34, 34, 34, 0.2);
--vscode-diffEditor-unchangedRegionForeground: #616161;
--vscode-diffEditor-unchangedCodeBackground: rgba(184, 184, 184, 0.16);
--vscode-widget-shadow: rgba(0, 0, 0, 0.16);
--vscode-toolbar-hoverBackground: rgba(184, 184, 184, 0.31);
--vscode-toolbar-activeBackground: rgba(166, 166, 166, 0.31);
--vscode-breadcrumb-foreground: rgba(97, 97, 97, 0.8);
--vscode-breadcrumb-background: #fffffe;
--vscode-breadcrumb-focusForeground: #4e4e4e;
--vscode-breadcrumb-activeSelectionForeground: #4e4e4e;
--vscode-breadcrumbPicker-background: #f3f3f3;
--vscode-merge-currentHeaderBackground: rgba(64, 200, 174, 0.5);
--vscode-merge-currentContentBackground: rgba(64, 200, 174, 0.2);
--vscode-merge-incomingHeaderBackground: rgba(64, 166, 255, 0.5);
--vscode-merge-incomingContentBackground: rgba(64, 166, 255, 0.2);
--vscode-merge-commonHeaderBackground: rgba(96, 96, 96, 0.4);
--vscode-merge-commonContentBackground: rgba(96, 96, 96, 0.16);
--vscode-editorOverviewRuler-currentContentForeground: rgba(64, 200, 174, 0.5);
--vscode-editorOverviewRuler-incomingContentForeground: rgba(64, 166, 255, 0.5);
--vscode-editorOverviewRuler-commonContentForeground: rgba(96, 96, 96, 0.4);
--vscode-editorOverviewRuler-findMatchForeground: rgba(209, 134, 22, 0.49);
--vscode-editorOverviewRuler-selectionHighlightForeground: rgba(160, 160, 160, 0.8);
--vscode-problemsErrorIcon-foreground: #e51400;
--vscode-problemsWarningIcon-foreground: #bf8803;
--vscode-problemsInfoIcon-foreground: #1a85ff;
--vscode-input-background: #ffffff;
--vscode-input-foreground: #616161;
--vscode-inputOption-activeBorder: #007acc;
--vscode-inputOption-hoverBackground: rgba(184, 184, 184, 0.31);
--vscode-inputOption-activeBackground: rgba(0, 144, 241, 0.2);
--vscode-inputOption-activeForeground: #000000;
--vscode-input-placeholderForeground: rgba(97, 97, 97, 0.5);
--vscode-inputValidation-infoBackground: #d6ecf2;
--vscode-inputValidation-infoBorder: #007acc;
--vscode-inputValidation-warningBackground: #f6f5d2;
--vscode-inputValidation-warningBorder: #b89500;
--vscode-inputValidation-errorBackground: #f2dede;
--vscode-inputValidation-errorBorder: #be1100;
--vscode-dropdown-background: #ffffff;
--vscode-dropdown-foreground: #616161;
--vscode-dropdown-border: #cecece;
--vscode-button-foreground: #ffffff;
--vscode-button-separator: rgba(255, 255, 255, 0.4);
--vscode-button-background: #007acc;
--vscode-button-hoverBackground: #0062a3;
--vscode-button-secondaryForeground: #ffffff;
--vscode-button-secondaryBackground: #5f6a79;
--vscode-button-secondaryHoverBackground: #4c5561;
--vscode-checkbox-background: #ffffff;
--vscode-checkbox-selectBackground: #f3f3f3;
--vscode-checkbox-foreground: #616161;
--vscode-checkbox-border: #cecece;
--vscode-checkbox-selectBorder: #424242;
--vscode-keybindingLabel-background: rgba(221, 221, 221, 0.4);
--vscode-keybindingLabel-foreground: #555555;
--vscode-keybindingLabel-border: rgba(204, 204, 204, 0.4);
--vscode-keybindingLabel-bottomBorder: rgba(187, 187, 187, 0.4);
--vscode-list-focusOutline: #0090f1;
--vscode-list-activeSelectionBackground: #0060c0;
--vscode-list-activeSelectionForeground: #ffffff;
--vscode-list-inactiveSelectionBackground: #e4e6f1;
--vscode-list-hoverBackground: #f0f0f0;
--vscode-list-dropBackground: #d6ebff;
--vscode-list-dropBetweenBackground: #424242;
--vscode-list-highlightForeground: #0066bf;
--vscode-list-focusHighlightForeground: #bbe7ff;
--vscode-list-invalidItemForeground: #b89500;
--vscode-list-errorForeground: #b01011;
--vscode-list-warningForeground: #855f00;
--vscode-listFilterWidget-background: #f3f3f3;
--vscode-listFilterWidget-outline: rgba(0, 0, 0, 0);
--vscode-listFilterWidget-noMatchesOutline: #be1100;
--vscode-listFilterWidget-shadow: rgba(0, 0, 0, 0.16);
--vscode-list-filterMatchBackground: rgba(234, 92, 0, 0.33);
--vscode-list-deemphasizedForeground: #8e8e90;
--vscode-tree-indentGuidesStroke: #a9a9a9;
--vscode-tree-inactiveIndentGuidesStroke: rgba(169, 169, 169, 0.4);
--vscode-tree-tableColumnsBorder: rgba(97, 97, 97, 0.13);
--vscode-tree-tableOddRowsBackground: rgba(97, 97, 97, 0.04);
--vscode-menu-foreground: #616161;
--vscode-menu-background: #ffffff;
--vscode-menu-selectionForeground: #ffffff;
--vscode-menu-selectionBackground: #0060c0;
--vscode-menu-separatorBackground: #d4d4d4;
--vscode-minimap-findMatchHighlight: #d18616;
--vscode-minimap-selectionOccurrenceHighlight: #c9c9c9;
--vscode-minimap-selectionHighlight: #add6ff;
--vscode-minimap-infoHighlight: #1a85ff;
--vscode-minimap-warningHighlight: #bf8803;
--vscode-minimap-errorHighlight: rgba(255, 18, 18, 0.7);
--vscode-minimap-foregroundOpacity: #000000;
--vscode-minimapSlider-background: rgba(100, 100, 100, 0.2);
--vscode-minimapSlider-hoverBackground: rgba(100, 100, 100, 0.35);
--vscode-minimapSlider-activeBackground: rgba(0, 0, 0, 0.3);
--vscode-charts-foreground: #616161;
--vscode-charts-lines: rgba(97, 97, 97, 0.5);
--vscode-charts-red: #e51400;
--vscode-charts-blue: #1a85ff;
--vscode-charts-yellow: #bf8803;
--vscode-charts-orange: #d18616;
--vscode-charts-green: #388a34;
--vscode-charts-purple: #652d90;
--vscode-quickInput-background: #f3f3f3;
--vscode-quickInput-foreground: #616161;
--vscode-quickInputTitle-background: rgba(0, 0, 0, 0.06);
--vscode-pickerGroup-foreground: #0066bf;
--vscode-pickerGroup-border: #cccedb;
--vscode-quickInputList-focusForeground: #ffffff;
--vscode-quickInputList-focusBackground: #0060c0;
--vscode-search-resultsInfoForeground: #616161;
--vscode-searchEditor-findMatchBackground: rgba(234, 92, 0, 0.22);
--vscode-multiDiffEditor-border: #cccccc;
--vscode-symbolIcon-arrayForeground: #616161;
--vscode-symbolIcon-booleanForeground: #616161;
--vscode-symbolIcon-classForeground: #d67e00;
--vscode-symbolIcon-colorForeground: #616161;
--vscode-symbolIcon-constantForeground: #616161;
--vscode-symbolIcon-constructorForeground: #652d90;
--vscode-symbolIcon-enumeratorForeground: #d67e00;
--vscode-symbolIcon-enumeratorMemberForeground: #007acc;
--vscode-symbolIcon-eventForeground: #d67e00;
--vscode-symbolIcon-fieldForeground: #007acc;
--vscode-symbolIcon-fileForeground: #616161;
--vscode-symbolIcon-folderForeground: #616161;
--vscode-symbolIcon-functionForeground: #652d90;
--vscode-symbolIcon-interfaceForeground: #007acc;
--vscode-symbolIcon-keyForeground: #616161;
--vscode-symbolIcon-keywordForeground: #616161;
--vscode-symbolIcon-methodForeground: #652d90;
--vscode-symbolIcon-moduleForeground: #616161;
--vscode-symbolIcon-namespaceForeground: #616161;
--vscode-symbolIcon-nullForeground: #616161;
--vscode-symbolIcon-numberForeground: #616161;
--vscode-symbolIcon-objectForeground: #616161;
--vscode-symbolIcon-operatorForeground: #616161;
--vscode-symbolIcon-packageForeground: #616161;
--vscode-symbolIcon-propertyForeground: #616161;
--vscode-symbolIcon-referenceForeground: #616161;
--vscode-symbolIcon-snippetForeground: #616161;
--vscode-symbolIcon-stringForeground: #616161;
--vscode-symbolIcon-structForeground: #616161;
--vscode-symbolIcon-textForeground: #616161;
--vscode-symbolIcon-typeParameterForeground: #616161;
--vscode-symbolIcon-unitForeground: #616161;
--vscode-symbolIcon-variableForeground: #007acc;
--vscode-actionBar-toggledBackground: rgba(0, 144, 241, 0.2);
--vscode-editor-lineHighlightBorder: #eeeeee;
--vscode-editor-rangeHighlightBackground: rgba(253, 255, 0, 0.2);
--vscode-editor-symbolHighlightBackground: rgba(234, 92, 0, 0.33);
--vscode-editorCursor-foreground: #000000;
--vscode-editorMultiCursor-primary-foreground: #000000;
--vscode-editorMultiCursor-secondary-foreground: #000000;
--vscode-editorWhitespace-foreground: rgba(51, 51, 51, 0.2);
--vscode-editorLineNumber-foreground: #237893;
--vscode-editorIndentGuide-background: rgba(51, 51, 51, 0.2);
--vscode-editorIndentGuide-activeBackground: rgba(51, 51, 51, 0.2);
--vscode-editorIndentGuide-background1: #d3d3d3;
--vscode-editorIndentGuide-background2: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-background3: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-background4: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-background5: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-background6: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-activeBackground1: #939393;
--vscode-editorIndentGuide-activeBackground2: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-activeBackground3: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-activeBackground4: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-activeBackground5: rgba(0, 0, 0, 0);
--vscode-editorIndentGuide-activeBackground6: rgba(0, 0, 0, 0);
--vscode-editorActiveLineNumber-foreground: #0b216f;
--vscode-editorLineNumber-activeForeground: #0b216f;
--vscode-editorRuler-foreground: #d3d3d3;
--vscode-editorCodeLens-foreground: #919191;
--vscode-editorBracketMatch-background: rgba(0, 100, 0, 0.1);
--vscode-editorBracketMatch-border: #b9b9b9;
--vscode-editorOverviewRuler-border: rgba(127, 127, 127, 0.3);
--vscode-editorGutter-background: #fffffe;
--vscode-editorUnnecessaryCode-opacity: rgba(0, 0, 0, 0.47);
--vscode-editorGhostText-foreground: rgba(0, 0, 0, 0.47);
--vscode-editorOverviewRuler-rangeHighlightForeground: rgba(0, 122, 204, 0.6);
--vscode-editorOverviewRuler-errorForeground: rgba(255, 18, 18, 0.7);
--vscode-editorOverviewRuler-warningForeground: #bf8803;
--vscode-editorOverviewRuler-infoForeground: #1a85ff;
--vscode-editorBracketHighlight-foreground1: #0431fa;
--vscode-editorBracketHighlight-foreground2: #319331;
--vscode-editorBracketHighlight-foreground3: #7b3814;
--vscode-editorBracketHighlight-foreground4: rgba(0, 0, 0, 0);
--vscode-editorBracketHighlight-foreground5: rgba(0, 0, 0, 0);
--vscode-editorBracketHighlight-foreground6: rgba(0, 0, 0, 0);
--vscode-editorBracketHighlight-unexpectedBracket-foreground: rgba(255, 18, 18, 0.8);
--vscode-editorBracketPairGuide-background1: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-background2: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-background3: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-background4: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-background5: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-background6: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-activeBackground1: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-activeBackground2: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-activeBackground3: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-activeBackground4: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-activeBackground5: rgba(0, 0, 0, 0);
--vscode-editorBracketPairGuide-activeBackground6: rgba(0, 0, 0, 0);
--vscode-editorUnicodeHighlight-border: #bf8803;
--vscode-editorOverviewRuler-bracketMatchForeground: #a0a0a0;
--vscode-editor-linkedEditingBackground: rgba(255, 0, 0, 0.3);
--vscode-editor-wordHighlightBackground: rgba(87, 87, 87, 0.25);
--vscode-editor-wordHighlightStrongBackground: rgba(14, 99, 156, 0.25);
--vscode-editor-wordHighlightTextBackground: rgba(87, 87, 87, 0.25);
--vscode-editorOverviewRuler-wordHighlightForeground: rgba(160, 160, 160, 0.8);
--vscode-editorOverviewRuler-wordHighlightStrongForeground: rgba(192, 160, 192, 0.8);
--vscode-editorOverviewRuler-wordHighlightTextForeground: rgba(160, 160, 160, 0.8);
--vscode-peekViewTitle-background: #f3f3f3;
--vscode-peekViewTitleLabel-foreground: #000000;
--vscode-peekViewTitleDescription-foreground: #616161;
--vscode-peekView-border: #1a85ff;
--vscode-peekViewResult-background: #f3f3f3;
--vscode-peekViewResult-lineForeground: #646465;
--vscode-peekViewResult-fileForeground: #1e1e1e;
--vscode-peekViewResult-selectionBackground: rgba(51, 153, 255, 0.2);
--vscode-peekViewResult-selectionForeground: #6c6c6c;
--vscode-peekViewEditor-background: #f2f8fc;
--vscode-peekViewEditorGutter-background: #f2f8fc;
--vscode-peekViewEditorStickyScroll-background: #f2f8fc;
--vscode-peekViewResult-matchHighlightBackground: rgba(234, 92, 0, 0.3);
--vscode-peekViewEditor-matchHighlightBackground: rgba(245, 216, 2, 0.87);
--vscode-editorMarkerNavigationError-background: #e51400;
--vscode-editorMarkerNavigationError-headerBackground: rgba(229, 20, 0, 0.1);
--vscode-editorMarkerNavigationWarning-background: #bf8803;
--vscode-editorMarkerNavigationWarning-headerBackground: rgba(191, 136, 3, 0.1);
--vscode-editorMarkerNavigationInfo-background: #1a85ff;
--vscode-editorMarkerNavigationInfo-headerBackground: rgba(26, 133, 255, 0.1);
--vscode-editorMarkerNavigation-background: #fffffe;
--vscode-editorHoverWidget-highlightForeground: #0066bf;
--vscode-editorSuggestWidget-background: #f3f3f3;
--vscode-editorSuggestWidget-border: #c8c8c8;
--vscode-editorSuggestWidget-foreground: #000000;
--vscode-editorSuggestWidget-selectedForeground: #ffffff;
--vscode-editorSuggestWidget-selectedBackground: #0060c0;
--vscode-editorSuggestWidget-highlightForeground: #0066bf;
--vscode-editorSuggestWidget-focusHighlightForeground: #bbe7ff;
--vscode-editorSuggestWidgetStatus-foreground: rgba(0, 0, 0, 0.5);
--vscode-diffEditor-move-border: rgba(139, 139, 139, 0.61);
--vscode-diffEditor-moveActive-border: #ffa500;
--vscode-diffEditor-unchangedRegionShadow: rgba(115, 115, 115, 0.75);
--vscode-editor-foldBackground: rgba(173, 214, 255, 0.3);
--vscode-editorGutter-foldingControlForeground: #424242; }
.mtk1 { color: #000000; }
.mtk2 { color: #fffffe; }
.mtk3 { color: #808080; }
.mtk4 { color: #ff0000; }
.mtk5 { color: #0451a5; }
.mtk6 { color: #0000ff; }
.mtk7 { color: #098658; }
.mtk8 { color: #008000; }
.mtk9 { color: #dd0000; }
.mtk10 { color: #383838; }
.mtk11 { color: #cd3131; }
.mtk12 { color: #863b00; }
.mtk13 { color: #af00db; }
.mtk14 { color: #800000; }
.mtk15 { color: #e00000; }
.mtk16 { color: #3030c0; }
.mtk17 { color: #666666; }
.mtk18 { color: #778899; }
.mtk19 { color: #c700c7; }
.mtk20 { color: #a31515; }
.mtk21 { color: #4f76ac; }
.mtk22 { color: #008080; }
.mtk23 { color: #001188; }
.mtk24 { color: #4864aa; }
.mtki { font-style: italic; }
.mtkb { font-weight: bold; }
.mtku { text-decoration: underline; text-underline-position: under; }
.mtks { text-decoration: line-through; }
.mtks.mtku { text-decoration: underline line-through; text-underline-position: under; }</style><script async="async" type="text/javascript" src="https://wokwi.com/cdn/monaco-editor/0.48.0/vs/basic-languages/python/python.js"></script><link rel="stylesheet" type="text/css" href="/_next/static/css/09e0055ef19aaf46.css"></head><body class="enable-motion"><div id="__next"><div class="MuiStack-root css-zf0iqh"><header><div class="header-small_toolbar__yvrzx" role="banner"><a class="header-small_logo__fLyJP" href="/"><svg width="80" height="24" viewBox="0 0 69.532 16.413"><g fill="#fff"><path d="M4.192 15.53c-.63-.737-.765-1.863-.32-2.684.405-.748.346-1.136-.583-3.84-.937-2.73-1.116-3.05-1.935-3.455-1.916-.949-1.765-3.452.242-4 1.892-.518 3.374 1.385 2.418 3.105-.416.75-.36 1.113.593 3.865.969 2.796 1.125 3.072 1.964 3.457 1.192.548 1.62 1.883.969 3.024-.65 1.14-2.566 1.442-3.348.528zm1.912-1.003c.465-.38.426-.796-.103-1.098-.238-.136-.545-.186-.681-.111-.423.23-.407 1.014.025 1.26.226.129.567.106.76-.05zM2.612 4.17c.346-.189.224-1.077-.18-1.308-.337-.192-.995.269-.98.687.013.386.809.812 1.16.621zM11.945 15c-.63-.737-.765-1.863-.32-2.684.405-.748.346-1.136-.583-3.84-.937-2.73-1.116-3.05-1.935-3.455-1.916-.949-1.765-3.452.242-4 1.892-.518 3.374 1.385 2.418 3.105-.416.75-.36 1.113.593 3.865.969 2.796 1.125 3.072 1.964 3.457 1.192.548 1.62 1.883.969 3.024-.65 1.14-2.566 1.442-3.348.528zm1.912-1.003c.465-.38.426-.796-.103-1.098-.238-.136-.545-.186-.681-.111-.423.23-.407 1.014.025 1.26.226.129.567.106.76-.05zM10.365 3.64c.346-.189.224-1.077-.18-1.308-.337-.192-.995.269-.98.687.013.386.809.812 1.16.621z"></path><path d="M4.543 16.22c-2.027-1.187-1.3-4.185 1.015-4.185.75 0 .816-.177 1.864-1.169s2.833-2.627 4.035-3.221c.324.459.571 1.614.607 1.748-.773 0-2.75 1.515-3.588 2.537-.81.989-.985 1.4-.928 2.188.052.73-.081 1.111-.542 1.54-.779.729-1.786.958-2.463.562zm1.56-1.695c.215-.56-.025-.902-.634-.902-.594 0-.896.408-.693.938.198.516 1.125.49 1.327-.036zM13.185 12.06s.283-.565 1.392-3.717c1.44-4.077 1.509-4.406 1.096-5.263-.887-1.84.835-3.684 2.691-2.88.694.3.931.585 1.236 1.49.332.983.303 1.19-.244 1.72-.342.331-.896.716-1.232.856-.47.196-.971 1.255-2.185 4.618-1.443 3.997-1.06 2.817-.67 3.541.961 1.79-.26.492-2.084-.365zm5.066-9.85c-.006-.6-.355-.829-.922-.605-.254.101-.485.309-.512.462-.085.474.537.951 1 .768.241-.095.437-.377.434-.624z"></path><g><path d="M26.397 15.57q-2.378.363-4.232-.922-1.97-1.37-2.308-3.953-.413-3.147.978-5.985 1.557-3.15 4.441-3.59 2.774-.424 4.3.717 1.592 1.186 1.988 4.205.413 3.147-.84 5.918-1.443 3.17-4.327 3.61zm-.876-12.586q-2.066.315-3.209 2.753-1.057 2.24-.735 4.695.23 1.756 1.58 2.672 1.292.861 2.995.601 2.05-.312 3.09-2.744.928-2.173.602-4.657-.285-2.173-1.303-2.918-.971-.715-3.02-.402zM35.637.98a.872.872 0 00-.652.275.947.947 0 00-.257.671c0 1.224-.039 3.081-.102 5.354.318-.509.773-.846 1.271-.896a2.28 2.28 0 01.467 0 63.88 63.88 0 01.082-1.684c.073-1.255.11-2.18.11-2.774a.93.93 0 00-.267-.67.853.853 0 00-.652-.276zm6.825.156c-.257 0-.49.12-.698.358l-2.636 3.06a52.882 52.882 0 01-1.944 2.099c.547.32.914.88 1.074 1.479.945-.925 1.887-1.847 2.771-2.816 1.58-1.752 2.37-2.83 2.37-3.234a.898.898 0 00-.284-.67.912.912 0 00-.653-.276zm-4.208 8.307c-.12.378-.352.707-.712.92a1.978 1.978 0 01-.754.26l2.33 2.345c1.721 1.635 3.047 2.453 3.978 2.453.264 0 .475-.117.634-.35.129-.19.193-.388.193-.597 0-.447-.242-.75-.726-.91a3.81 3.81 0 01-1.13-.605l-.964-.81a106.213 106.213 0 01-2.849-2.706zm-3.69.229a210.995 210.995 0 00-.093 5.105c0 .294.085.567.257.818.208.306.487.459.836.459.532 0 .8-.303.8-.91l.007-4.509c-.606-.039-1.208-.324-1.664-.783a3.926 3.926 0 01-.143-.18zm1.333-3.288c2.338-.235 3.256 3.024 1.645 3.98-.912.54-2.076.252-2.835-.512-.473-.56-.589-.946-.47-1.564.202-1.047.88-1.826 1.66-1.904zm-.262 2.289c.156.58.552.714 1.044.355.48-.35.484-.858.007-1.167-.464-.3-1.198.267-1.051.812zM57.077 15.93c-.282 0-.53-.08-.744-.239-.245-.184-.367-.41-.367-.68-.282-.74-.46-1.344-.533-1.81-.074-.465-.316-1.784-.726-3.958-.312-1.648-.52-2.97-.625-3.969-.545 2.021-1.13 3.733-1.754 5.135-.723 1.623-1.191 2.894-1.406 3.812.074.141.11.279.11.414 0 .275-.122.502-.367.68-.22.165-.471.248-.753.248-.827 0-1.24-.371-1.24-1.112l-.285-1.167-1.001-4.5c-.398-1.52-1.078-3.697-2.04-6.532a1.225 1.225 0 01-.064-.368c0-.569.322-.854.965-.854.398 0 .704.218.918.652.11.22.334.855.67 1.902.362 1.108.723 2.443 1.085 4.005l.89 4.06c.656-1.519 1.308-3.368 1.957-5.548.399-1.33.702-2.25.91-2.765.551-1.354 1.087-2.03 1.607-2.03.43 0 .732.217.91.652.22.527.444 1.782.67 3.766.123 1.005.331 2.211.625 3.62l.79 3.61c.82-1.972 1.847-4.64 3.077-8.001.068-.184.22-.763.46-1.737.177-.716.395-1.273.652-1.671.22-.337.508-.506.863-.506.619 0 1.643.43 1.643 1.043 0 .104-.813.286-1.009.794l-.367.993-.505 1.635-2.729 6.632c-.25.729-.683 1.788-1.295 3.178-.22.41-.551.616-.992.616z"></path></g><path d="M67.427 7.01a64.95 64.95 0 00-.211 5.107c0 .43.012.959.037 1.59.024.63.036 1.16.036 1.589-.623 1.156-1.85.737-2.112-.056.165-2.14.17-1.952.165-3.003 0-1.415.086-3.182.257-5.3.955-2.293 2.369-1.893 2.369-1.893.038.758-.579 1.553-.54 1.966zM67.077.33c2.337-.235 3.256 3.024 1.645 3.98-.912.54-2.076.252-2.835-.512-.473-.56-.589-.945-.47-1.564.201-1.047.88-1.826 1.66-1.904zm-.262 2.289c.156.58.551.714 1.043.355.48-.35.484-.858.007-1.167-.463-.3-1.198.267-1.05.812z"></path></g></svg></a><div class="project-page_topButtons__E_rbw"><div role="group" class="MuiButtonGroup-root MuiButtonGroup-contained css-5kthed"><button class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall Mui-disabled MuiButtonGroup-grouped MuiButtonGroup-groupedHorizontal MuiButtonGroup-groupedContained MuiButtonGroup-groupedContainedHorizontal MuiButtonGroup-groupedContainedPrimary MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButtonGroup-grouped MuiButtonGroup-groupedHorizontal MuiButtonGroup-groupedContained MuiButtonGroup-groupedContainedHorizontal MuiButtonGroup-groupedContainedPrimary MuiButtonGroup-firstButton css-126e75q" tabindex="-1" type="button" disabled=""><span class="MuiButton-startIcon MuiButton-iconSizeSmall css-u0g51i"><svg viewBox="0 0 24 24" role="presentation" style="width: 1.5rem; height: 1.5rem;"><path d="M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z" style="fill: currentcolor;"></path></svg></span><span class="MuiBox-root css-9hblc8">Save</span></button><button class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButtonGroup-grouped MuiButtonGroup-groupedHorizontal MuiButtonGroup-groupedContained MuiButtonGroup-groupedContainedHorizontal MuiButtonGroup-groupedContainedPrimary MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButtonGroup-lastButton css-1vv51b1" tabindex="0" type="button"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-vubbuv" focusable="false" aria-hidden="true" viewBox="0 0 24 24" data-testid="ArrowDropDownIcon"><path d="m7 10 5 5 5-5z"></path></svg><span class="MuiTouchRipple-root css-w0pj6f"></span></button></div><button class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall project-page_button__5z1or css-9q40pm" tabindex="0" type="button"><span class="MuiButton-startIcon MuiButton-iconSizeSmall css-u0g51i"><svg viewBox="0 0 24 24" role="presentation" style="width: 1.5rem; height: 1.5rem;"><path d="M21,12L14,5V9C7,10 4,15 3,20C5.5,16.5 9,14.9 14,14.9V19L21,12Z" style="fill: currentcolor;"></path></svg></span>Share<span class="MuiTouchRipple-root css-w0pj6f"></span></button><button class="MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-6ci2yv" tabindex="0" type="button" aria-label="Like this project"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-vubbuv" focusable="false" aria-hidden="true" viewBox="0 0 24 24" data-testid="FavoriteIcon"><path d="m12 21.35-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"></path></svg><span class="MuiTouchRipple-root css-w0pj6f"></span></button></div><div class="header-small_spacer___h_xx"></div><nav class="header-small_menu__hiyiT"><a href="https://docs.wokwi.com/?utm_source=wokwi" target="_blank">Docs</a></nav><button class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall css-126e75q" tabindex="0" type="button"><span class="user-menu_altContent__kVmnu"><span class="user-menu_alt1__5Xyya">Sign in</span><span class="user-menu_alt2___1kYx">Sign up</span></span><span class="MuiTouchRipple-root css-w0pj6f"></span></button></div></header><main class="project-page_main__KMKhI"><div class="workbench-desktop_container__LDB8z"><div class="sc-kPTPQs iPTNAK SplitPane vertical workbench-desktop_splitPane__nOV1_"><div class="sc-bgqQcB cqSVCo Pane vertical workbench-desktop_splitPane__nOV1_" style="flex-basis: 400px;"><div class="sc-ewnqHT ikqMiO" style="background-color: black;"></div><div class="sc-gTRrQi bMOrrd" style="min-width: 50px;"><div class="workbench-desktop_editor__AmDGz"><div class="tabs_tabs__0p32m"><button class="tabs_tab__iUAy8 tabs_active__IguNq">main.py</button><button class="tabs_tab__iUAy8">diagram.json</button><button class="tabs_tab__iUAy8">ssd1306.py</button><button class="tabs_dropdown__6PGPX"><svg viewBox="0 0 24 24" role="presentation" style="width: 20px; height: 20px;"><path d="M7,10L12,15L17,10H7Z" style="fill: currentcolor;"></path></svg></button></div><div class="code-editor_editorContainer__hSbk1" style=""><section class="code-editor_wrapper__S_Mle" style="display: flex; position: relative; text-align: initial; width: 100%; height: 100%;"><div data-keybinding-context="1" data-mode-id="python" style="width: 100%; --vscode-editorCodeLens-lineHeight: 16px; --vscode-editorCodeLens-fontSize: 12px; --vscode-editorCodeLens-fontFeatureSettings: "liga" off, "calt" off;"><div class="monaco-editor no-user-select showUnused showDeprecated vs focused" role="code" data-uri="vfs:main.py" style="width: 400px; height: 531px;"><div data-mprt="3" class="overflow-guard" style="width: 400px; height: 531px;"><div class="margin" role="presentation" aria-hidden="true" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; top: 0px; height: 2032px; width: 85px;"><div class="glyph-margin" style="left: 0px; width: 19px; height: 2032px;"></div><div class="margin-view-zones" role="presentation" aria-hidden="true" style="position: absolute;"></div><div class="margin-view-overlays focused" role="presentation" aria-hidden="true" style="position: absolute; font-family: Consolas, "Courier New", monospace; font-weight: normal; font-size: 14px; font-feature-settings: "liga" 0, "calt" 0; font-variation-settings: normal; line-height: 19px; letter-spacing: 0px; width: 85px; height: 2032px;"><div style="top:0px;height:19px;"><div class="current-line current-line-margin-both" style="width:85px"></div><div class="line-numbers active-line-number" style="left:19px;width:40px;">1</div></div><div style="top:19px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">2</div></div><div style="top:38px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">3</div></div><div style="top:57px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">4</div></div><div style="top:76px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">5</div></div><div style="top:95px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">6</div></div><div style="top:114px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">7</div></div><div style="top:133px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">8</div></div><div style="top:152px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">9</div></div><div style="top:171px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">10</div></div><div style="top:190px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">11</div></div><div style="top:209px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">12</div></div><div style="top:228px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">13</div></div><div style="top:247px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">14</div></div><div style="top:266px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">15</div></div><div style="top:285px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">16</div></div><div style="top:304px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">17</div></div><div style="top:323px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">18</div></div><div style="top:342px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">19</div></div><div style="top:361px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">20</div></div><div style="top:380px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">21</div></div><div style="top:399px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">22</div></div><div style="top:418px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">23</div></div><div style="top:437px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">24</div></div><div style="top:456px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">25</div></div><div style="top:475px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">26</div></div><div style="top:494px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">27</div></div><div style="top:513px;height:19px;"><div class="line-numbers" style="left:19px;width:40px;">28</div></div></div><div class="glyph-margin-widgets" style="position: absolute; top: 0px;"></div></div><div class="monaco-scrollable-element editor-scrollable vs" role="presentation" data-mprt="6" style="position: absolute; overflow: hidden; left: 85px; height: 531px; width: 315px;"><div class="lines-content monaco-editor-background" style="position: absolute; overflow: hidden; width: 1.67772e+07px; height: 1.67772e+07px; transform: translate3d(0px, 0px, 0px); contain: strict; top: 0px; left: 0px;"><div class="view-overlays focused" role="presentation" aria-hidden="true" style="position: absolute; font-family: Consolas, "Courier New", monospace; font-weight: normal; font-size: 14px; font-feature-settings: "liga" 0, "calt" 0; font-variation-settings: normal; line-height: 19px; letter-spacing: 0px; height: 0px; width: 750px;"><div style="top:0px;height:19px;"><div class="current-line current-line-exact" style="width:750px;"></div><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:19px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:38px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:57px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:76px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:95px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:114px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:133px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:152px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:171px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:190px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:209px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:228px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:247px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:266px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:285px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:304px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:323px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:342px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:361px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:380px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:399px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:418px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:437px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:456px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:475px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:494px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div><div style="top:513px;height:19px;"><div class="cdr wordHighlightText" style="left:0px;width:40px;"></div></div></div><div role="presentation" aria-hidden="true" class="view-rulers"></div><div class="view-zones" role="presentation" aria-hidden="true" style="position: absolute;"></div><div class="view-lines monaco-mouse-cursor-text" role="presentation" aria-hidden="true" data-mprt="8" style="position: absolute; font-family: Consolas, "Courier New", monospace; font-weight: normal; font-size: 14px; font-feature-settings: "liga" 0, "calt" 0; font-variation-settings: normal; line-height: 19px; letter-spacing: 0px; width: 750px; height: 2032px;"><div style="top:0px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/bbeb0a45-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:19px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/bdeb0a45-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:38px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/73b7184b-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:57px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/c3eb0a45-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:76px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/c0eb0a45-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:95px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/c5eb0a45-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:114px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/6eb7184b-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:133px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/6bb7184b-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:152px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/06e75a51-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:171px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/71b7184b-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:190px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/75b7184b-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:209px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/78b7184b-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:228px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/7bb7184b-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:247px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/04e75a51-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:266px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/13e75a51-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:285px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/10e75a51-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:304px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/0ce75a51-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:323px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/0ce75a51-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:342px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/0ee75a51-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:361px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/b969e65e-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:380px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/bc69e65e-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:399px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/63ffe657-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:418px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/18e75a51-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:437px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/5fffe657-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:456px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/66ffe657-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:475px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/61ffe657-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:494px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/69ffe657-d0ac-ef11-a81b-7c1e521f9ab6</span></span></div><div style="top:513px;height:19px;" class="view-line"><span><span class="mtk1 detected-link">https://my.wilo.com/en-US/forums/general-discussio</span><span class="mtk1 detected-link">n/ae998479-d1ac-ef11-a81b-7c1e521f9ab6</span></span></div></div><div data-mprt="1" class="contentWidgets" style="position: absolute; top: 0px;"></div><div role="presentation" aria-hidden="true" class="cursors-layer cursor-line-style cursor-solid"><div class="cursor monaco-mouse-cursor-text " style="height: 19px; top: 0px; left: 0px; font-family: Consolas, "Courier New", monospace; font-weight: normal; font-size: 14px; font-feature-settings: "liga" 0, "calt" 0; font-variation-settings: normal; line-height: 19px; letter-spacing: 0px; display: block; visibility: inherit; padding-left: 0px; width: 2px;"></div></div></div><div role="presentation" aria-hidden="true" class="invisible scrollbar horizontal fade" style="position: absolute; width: 301px; height: 12px; left: 0px; bottom: 0px;"><div class="slider" style="position: absolute; top: 0px; left: 0px; height: 12px; transform: translate3d(0px, 0px, 0px); contain: strict; width: 126px;"></div></div><canvas class="decorationsOverviewRuler" aria-hidden="true" width="14" height="531" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; top: 0px; right: 0px; width: 14px; height: 531px; display: block;"></canvas><div role="presentation" aria-hidden="true" class="invisible scrollbar vertical fade" style="position: absolute; width: 14px; height: 531px; right: 0px; top: 0px;"><div class="slider" style="position: absolute; top: 0px; left: 0px; width: 14px; transform: translate3d(0px, 0px, 0px); contain: strict; height: 138px;"></div></div></div><div role="presentation" aria-hidden="true" style="width: 400px;"></div><textarea data-mprt="7" class="inputarea monaco-mouse-cursor-text" wrap="off" autocorrect="off" autocapitalize="off" autocomplete="off" spellcheck="false" aria-label="Editor content;Press Alt+F1 for Accessibility Options." aria-required="false" tabindex="0" role="textbox" aria-roledescription="editor" aria-multiline="true" aria-autocomplete="both" style="tab-size: 32px; font-family: Consolas, "Courier New", monospace; font-weight: normal; font-size: 14px; font-feature-settings: "liga" 0, "calt" 0; font-variation-settings: normal; line-height: 19px; letter-spacing: 0px; top: 0px; left: 85px; width: 1px; height: 1px;"></textarea><div style="position: absolute; top: 0px; left: 0px; width: 0px; height: 0px;" class="monaco-editor-background textAreaCover margin"></div><div data-mprt="4" class="overlayWidgets" style="width: 400px;"><div class="sticky-widget" widgetid="editor.contrib.stickyScrollWidget" style="position: absolute; width: 386px; display: none;"><div class="sticky-widget-line-numbers" role="none" style="width: 85px;"></div><div class="sticky-widget-lines-scrollable" style="--vscode-editorStickyScroll-scrollableWidth: 736px;"><div class="sticky-widget-lines" role="list" style="left: 0px;"></div></div></div></div><div data-mprt="9" class="minimap slider-mouseover" role="presentation" aria-hidden="true" style="position: absolute; left: 0px; width: 0px; height: 531px;"><div class="minimap-shadow-hidden" style="height: 531px;"></div><canvas width="0" height="531" style="position: absolute; left: 0px; width: 0px; height: 531px;"></canvas><canvas class="minimap-decorations-layer" width="0" height="531" style="position: absolute; left: 0px; width: 0px; height: 531px;"></canvas><div class="minimap-slider" style="position: absolute; transform: translate3d(0px, 0px, 0px); contain: strict; width: 0px;"><div class="minimap-slider-horizontal" style="position: absolute; width: 0px; height: 0px;"></div></div></div><div role="presentation" aria-hidden="true" class="blockDecorations-container"></div></div><div data-mprt="2" class="overflowingContentWidgets"></div><div data-mprt="5" class="overflowingOverlayWidgets"></div></div></div></section></div></div></div></div><div style="position: relative;"><div role="presentation" class="sc-iVCKna jILvIB Resizer vertical workbench-desktop_splitPane__nOV1_" style="width: 1rem;"><div class="sc-dicizt knbFHj"><div></div><div class="sc-fFGjHI gbpnKg" style="transform: scale(0); visibility: hidden; flex: 0 0 0px; position: relative;"><button>➡</button></div><div></div></div></div><div class="sc-gxYJeL NntKf" style="opacity: 1; width: 1px; background-color: rgba(120, 120, 120, 0.3); transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;"></div><div class="sc-gxYJeL NntKf" style="opacity: 0; visibility: hidden; width: 4px; background: rgb(227, 242, 253); margin-left: -2px;"></div></div><div class="sc-bgqQcB cqSVCo Pane vertical workbench-desktop_splitPane__nOV1_" style="flex-basis: 400px;"><div class="sc-ewnqHT ikqMiO" style="background-color: black;"></div><div class="sc-gTRrQi bMOrrd" style="min-width: 50px;"><div class="workbench-desktop_preview__AdZiG"><div class="tabs_tabs__0p32m"><button class="tabs_tab__iUAy8 tabs_active__IguNq">Simulation</button></div><div class="simulation_container___BvyD"><div></div><div class="simulation_simulationControls__Jqtsp"><div class="MuiBox-root css-1ynyhby"><button class="MuiButtonBase-root MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-default MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-default css-1yeoas6" tabindex="0" type="button" aria-label="Start the simulation"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-vubbuv" focusable="false" aria-hidden="true" viewBox="0 0 24 24" data-testid="PlayArrowIcon"><path d="M8 5v14l11-7z"></path></svg><span class="MuiTouchRipple-root css-w0pj6f"></span></button></div><div class="MuiBox-root css-1tanlhh"><button class="MuiButtonBase-root MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-default MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-default css-7zja2y" tabindex="0" type="button" aria-label="Add a new part"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-vubbuv" focusable="false" aria-hidden="true" viewBox="0 0 24 24" data-testid="AddIcon"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path></svg><span class="MuiTouchRipple-root css-w0pj6f"></span></button></div><div class="MuiBox-root css-1tanlhh"><button class="MuiButtonBase-root MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-default MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-default css-1ohvc2h" tabindex="0" type="button" aria-label="Zoom, grid, and more"><svg class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-vubbuv" focusable="false" aria-hidden="true" viewBox="0 0 24 24" data-testid="MoreVertIcon"><path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"></path></svg><span class="MuiTouchRipple-root css-w0pj6f"></span></button></div></div><div class="diagram-editor_viewer__mFJaI"><div tabindex="0" style="cursor: pointer; flex: 1 1 0%;"><div style="transform-origin: 0px 0px 0px; transform: matrix(0.984848, 0, 0, 0.984848, 169.47, 155.299);"><div class="react-draggable" style="transform: translate(0px, 0px);"><div class="diagram-part_diagramItem__IbJC1 diagram-part_selectable__qT1rF diagram-part_editMode__6lC9N" id="esp" data-draggable="true" wokwi-controller="board-esp32-devkit-c-v4" style="top: 9.6px; left: -100.76px; transform: rotate(0deg); text-rendering: geometricprecision; background-image: url("https://wokwi.github.io/wokwi-boards/esp32-devkit-c-v4/board.svg?v=3"); width: 27.9mm; height: 56.628mm; user-select: none;"><svg width="27.9mm" height="56.628mm" style="position: absolute; top: 0px; left: 0px;"><defs><filter id="ledFilter" x="-0.8" y="-0.8" height="5.2" width="5.8"><feGaussianBlur stdDeviation="2"></feGaussianBlur></filter></defs><circle cx="6.09mm" cy="42.07mm" opacity="0" r="4" fill="red" filter="url(#ledFilter)"></circle></svg></div></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 159.2px; left: -3.9978px;"><span>esp:0</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 168.8px; left: -3.9978px;"><span>esp:2</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 149.6px; left: -3.9978px;"><span>esp:4</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 120.8px; left: -3.9978px;"><span>esp:5</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 149.6px; left: -100.149px;"><span>esp:12</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 168.8px; left: -100.149px;"><span>esp:13</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 140px; left: -100.149px;"><span>esp:14</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 178.4px; left: -3.9978px;"><span>esp:15</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 140px; left: -3.9978px;"><span>esp:16</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 130.4px; left: -3.9978px;"><span>esp:17</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 111.2px; left: -3.9978px;"><span>esp:18</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 101.6px; left: -3.9978px;"><span>esp:19</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 82.4px; left: -3.9978px;"><span>esp:21</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 53.6px; left: -3.9978px;"><span>esp:22</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 44px; left: -3.9978px;"><span>esp:23</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 111.2px; left: -100.149px;"><span>esp:25</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 120.8px; left: -100.149px;"><span>esp:26</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 130.4px; left: -100.149px;"><span>esp:27</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 92px; left: -100.149px;"><span>esp:32</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 101.6px; left: -100.149px;"><span>esp:33</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 72.8px; left: -100.149px;"><span>esp:34</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 82.4px; left: -100.149px;"><span>esp:35</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 34.4px; left: -100.149px;"><span>esp:3V3</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 44px; left: -100.149px;"><span>esp:EN</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 53.6px; left: -100.149px;"><span>esp:VP</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 63.2px; left: -100.149px;"><span>esp:VN</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 159.2px; left: -100.149px;"><span>esp:GND.1</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 178.4px; left: -100.149px;"><span>esp:D2</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 188px; left: -100.149px;"><span>esp:D3</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 197.6px; left: -100.149px;"><span>esp:CMD</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 207.2px; left: -100.149px;"><span>esp:5V</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 34.4px; left: -3.9978px;"><span>esp:GND.2</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 63.2px; left: -3.9978px;"><span>esp:TX</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 72.8px; left: -3.9978px;"><span>esp:RX</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 92px; left: -3.9978px;"><span>esp:GND.3</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 188px; left: -3.9978px;"><span>esp:D1</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 197.6px; left: -3.9978px;"><span>esp:D0</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 207.2px; left: -3.9978px;"><span>esp:CLK</span></div><div class="react-draggable" style="transform: translate(0px, 0px);"><div class="diagram-part_diagramItem__IbJC1 diagram-part_selectable__qT1rF diagram-part_editMode__6lC9N" id="oled1" data-draggable="true" wokwi-controller="board-ssd1306" style="top: 99.14px; left: 57.83px; transform: rotate(0deg); text-rendering: geometricprecision; background-image: url("https://wokwi.github.io/wokwi-boards/ssd1306/board.svg?v=3"); width: 27.7mm; height: 22.6mm; user-select: none;"><svg width="27.7mm" height="22.6mm" style="position: absolute; top: 0px; left: 0px;"><defs><filter id="ledFilter" x="-0.8" y="-0.8" height="5.2" width="5.8"><feGaussianBlur stdDeviation="2"></feGaussianBlur></filter></defs></svg><canvas width="128" height="64" class="custom-board-view_pixelated__7Uq_2" style="position: absolute; background: black; left: 1.46mm; top: 5.27mm; width: 24.8mm; height: 12.4mm;"></canvas></div></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 101.603px; left: 92.0032px;"><span>oled1:GND</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 101.603px; left: 101.452px;"><span>oled1:VCC</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 101.603px; left: 110.901px;"><span>oled1:SCL</span></div><div data-draggable="0" class="diagram-part-pins_pinOverlay__3Rj48" style="top: 101.603px; left: 120.728px;"><span>oled1:SDA</span></div><svg class="diagram-editor_connections__K6X2M diagram-editor_editMode__SqnZq" fill="none" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" viewBox="-114.15 -18 256.88 141.6" width="256.88" height="141.6" style="left: -114.15px; top: -18px;"><g><path d="M114.9,105.6L114.9,61.6A4,4,-90,0,0,110.9,57.6L0,57.599999999999994" class="diagram-wires_outline__33OH_ diagram-wires_editMode__SHY0G"></path><path stroke="green" d="M114.9,105.6L114.9,61.6A4,4,-90,0,0,110.9,57.6L0,57.599999999999994"></path></g><g><path d="M124.73,105.6L124.73,90.4A4,4,-90,0,0,120.73,86.4L0,86.39999999999999" class="diagram-wires_outline__33OH_ diagram-wires_editMode__SHY0G"></path><path stroke="blue" d="M124.73,105.6L124.73,90.4A4,4,-90,0,0,120.73,86.4L0,86.39999999999999"></path></g><g><path d="M96,105.6L96,42.4A4,4,-90,0,0,92,38.4L0,38.39999999999999" class="diagram-wires_outline__33OH_ diagram-wires_editMode__SHY0G"></path><path stroke="black" d="M96,105.6L96,42.4A4,4,-90,0,0,92,38.4L0,38.39999999999999"></path></g><g><path d="M105.45,105.6L105.45,76.804A4,4,179.8880943229338,0,1,105.45,76.796L105.592,4.008A4,4,-89.8880943229338,0,0,101.592,0L-92.15,0A4,4,-90,0,0,-96.15,4L-96.14999999999999,38.4" class="diagram-wires_outline__33OH_ diagram-wires_editMode__SHY0G"></path><path stroke="red" d="M105.45,105.6L105.45,76.804A4,4,179.8880943229338,0,1,105.45,76.796L105.592,4.008A4,4,-89.8880943229338,0,0,101.592,0L-92.15,0A4,4,-90,0,0,-96.15,4L-96.14999999999999,38.4"></path></g></svg></div></div></div></div><style>
.markdown-body {
background: #eee;
color: black;
overflow: auto; /* Enable scrolling */
padding: 1.5em;
min-height: 100%;
}
.markdown-body.dark {
background: #111;
color: inherit;
}
.markdown-body.dark a {
color: #88f;
}
.markdown-body.dark pre {
background: #333;
}
.markdown-body::-webkit-scrollbar {
height: 16px;
width: 16px;
}
.markdown-body::-webkit-scrollbar-thumb,
.markdown-body::-webkit-scrollbar-track {
border: 4px solid transparent;
border-radius: 8px;
background-clip: padding-box;
}
.markdown-body::-webkit-scrollbar-thumb {
min-height: 40px;
}
.markdown-body.dark::-webkit-scrollbar-thumb {
background-color: #3d3a3a;
}
.markdown-body::-webkit-scrollbar-track {
margin-bottom: 8px;
}
.markdown-body.dark::-webkit-scrollbar-track {
background-color: #2a2a2a;
}
.markdown-body.dark table {
color: black;
}
</style></div></div></div></div></div></main></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"p":{"name":"esp32-micropython-ssd1306 Copy","id":"415721271111259137","files":[{"name":"main.py","content":"https://my.wilo.com/en-US/forums/general-discussion/bbeb0a45-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/bdeb0a45-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/73b7184b-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/c3eb0a45-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/c0eb0a45-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/c5eb0a45-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/6eb7184b-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/6bb7184b-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/06e75a51-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/71b7184b-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/75b7184b-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/78b7184b-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/7bb7184b-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/04e75a51-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/13e75a51-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/10e75a51-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/0ce75a51-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/0ce75a51-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/0ee75a51-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/b969e65e-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/bc69e65e-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/63ffe657-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/18e75a51-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/5fffe657-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/66ffe657-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/61ffe657-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/69ffe657-d0ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/ae998479-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/b0998479-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/b8998479-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/b3998479-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/b6998479-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/e3a0de7f-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/f1a0de7f-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/e1a0de7f-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/ba998479-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/be998479-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/e6a0de7f-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/e9a0de7f-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/eda0de7f-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/f3a0de7f-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/f5a0de7f-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/4d095a86-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/45095a86-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/43095a86-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/48095a86-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/4f095a86-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/4a095a86-d1ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/d0366030-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/d2366030-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/d4366030-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/d8366030-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/d6366030-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/da366030-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/9615d236-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/dc366030-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/9a15d236-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/9815d236-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/9415d236-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/7c05573d-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/7e05573d-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/9e15d236-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/7a05573d-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/a015d236-d2ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/fc192212-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/fe192212-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/001a2212-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/f9e92318-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/fbe92318-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/f7e92318-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/ebe02c1e-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/01ea2318-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/ffe92318-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/03ea2318-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/07ea2318-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/05ea2318-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/f1e02c1e-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/49ad1226-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/efe02c1e-d4ac-ef11-a81b-7c1e521f9ab6\nhttps://my.wilo.com/en-US/forums/general-discussion/ede02c1e-d4ac-ef11-a81b-7c1e521f9ab6"},{"name":"diagram.json","content":"{\n \"version\": 1,\n \"author\": \"Uri Shaked\",\n \"editor\": \"wokwi\",\n \"parts\": [\n {\n \"type\": \"board-esp32-devkit-c-v4\",\n \"id\": \"esp\",\n \"top\": 9.6,\n \"left\": -100.76,\n \"attrs\": { \"env\": \"micropython-20231005-v1.21.0\" }\n },\n { \"type\": \"board-ssd1306\", \"id\": \"oled1\", \"top\": 99.14, \"left\": 57.83, \"attrs\": {} }\n ],\n \"connections\": [\n [ \"esp:TX\", \"$serialMonitor:RX\", \"\", [] ],\n [ \"esp:RX\", \"$serialMonitor:TX\", \"\", [] ],\n [ \"oled1:SCL\", \"esp:22\", \"green\", [ \"v0\" ] ],\n [ \"oled1:SDA\", \"esp:21\", \"blue\", [ \"v-19.2\", \"h-124.73\" ] ],\n [ \"oled1:GND\", \"esp:GND.2\", \"black\", [ \"v-67.2\", \"h-96\" ] ],\n [ \"oled1:VCC\", \"esp:3V3\", \"red\", [ \"v-28.8\", \"h0.15\", \"v-76.8\", \"h-201.75\" ] ]\n ],\n \"dependencies\": {}\n}"},{"name":"ssd1306.py","content":"#MicroPython SSD1306 OLED driver, I2C and SPI interfaces created by Adafruit\r\n\r\nimport time\r\nimport framebuf\r\n\r\n# register definitions\r\nSET_CONTRAST = const(0x81)\r\nSET_ENTIRE_ON = const(0xa4)\r\nSET_NORM_INV = const(0xa6)\r\nSET_DISP = const(0xae)\r\nSET_MEM_ADDR = const(0x20)\r\nSET_COL_ADDR = const(0x21)\r\nSET_PAGE_ADDR = const(0x22)\r\nSET_DISP_START_LINE = const(0x40)\r\nSET_SEG_REMAP = const(0xa0)\r\nSET_MUX_RATIO = const(0xa8)\r\nSET_COM_OUT_DIR = const(0xc0)\r\nSET_DISP_OFFSET = const(0xd3)\r\nSET_COM_PIN_CFG = const(0xda)\r\nSET_DISP_CLK_DIV = const(0xd5)\r\nSET_PRECHARGE = const(0xd9)\r\nSET_VCOM_DESEL = const(0xdb)\r\nSET_CHARGE_PUMP = const(0x8d)\r\n\r\n\r\nclass SSD1306:\r\n def __init__(self, width, height, external_vcc):\r\n self.width = width\r\n self.height = height\r\n self.external_vcc = external_vcc\r\n self.pages = self.height // 8\r\n # Note the subclass must initialize self.framebuf to a framebuffer.\r\n # This is necessary because the underlying data buffer is different\r\n # between I2C and SPI implementations (I2C needs an extra byte).\r\n self.poweron()\r\n self.init_display()\r\n\r\n def init_display(self):\r\n for cmd in (\r\n SET_DISP | 0x00, # off\r\n # address setting\r\n SET_MEM_ADDR, 0x00, # horizontal\r\n # resolution and layout\r\n SET_DISP_START_LINE | 0x00,\r\n SET_SEG_REMAP | 0x01, # column addr 127 mapped to SEG0\r\n SET_MUX_RATIO, self.height - 1,\r\n SET_COM_OUT_DIR | 0x08, # scan from COM[N] to COM0\r\n SET_DISP_OFFSET, 0x00,\r\n SET_COM_PIN_CFG, 0x02 if self.height == 32 else 0x12,\r\n # timing and driving scheme\r\n SET_DISP_CLK_DIV, 0x80,\r\n SET_PRECHARGE, 0x22 if self.external_vcc else 0xf1,\r\n SET_VCOM_DESEL, 0x30, # 0.83*Vcc\r\n # display\r\n SET_CONTRAST, 0xff, # maximum\r\n SET_ENTIRE_ON, # output follows RAM contents\r\n SET_NORM_INV, # not inverted\r\n # charge pump\r\n SET_CHARGE_PUMP, 0x10 if self.external_vcc else 0x14,\r\n SET_DISP | 0x01): # on\r\n self.write_cmd(cmd)\r\n self.fill(0)\r\n self.show()\r\n\r\n def poweroff(self):\r\n self.write_cmd(SET_DISP | 0x00)\r\n\r\n def contrast(self, contrast):\r\n self.write_cmd(SET_CONTRAST)\r\n self.write_cmd(contrast)\r\n\r\n def invert(self, invert):\r\n self.write_cmd(SET_NORM_INV | (invert \u0026 1))\r\n\r\n def show(self):\r\n x0 = 0\r\n x1 = self.width - 1\r\n if self.width == 64:\r\n # displays with width of 64 pixels are shifted by 32\r\n x0 += 32\r\n x1 += 32\r\n self.write_cmd(SET_COL_ADDR)\r\n self.write_cmd(x0)\r\n self.write_cmd(x1)\r\n self.write_cmd(SET_PAGE_ADDR)\r\n self.write_cmd(0)\r\n self.write_cmd(self.pages - 1)\r\n self.write_framebuf()\r\n\r\n def fill(self, col):\r\n self.framebuf.fill(col)\r\n\r\n def pixel(self, x, y, col):\r\n self.framebuf.pixel(x, y, col)\r\n\r\n def scroll(self, dx, dy):\r\n self.framebuf.scroll(dx, dy)\r\n\r\n def text(self, string, x, y, col=1):\r\n self.framebuf.text(string, x, y, col)\r\n\r\n\r\nclass SSD1306_I2C(SSD1306):\r\n def __init__(self, width, height, i2c, addr=0x3c, external_vcc=False):\r\n self.i2c = i2c\r\n self.addr = addr\r\n self.temp = bytearray(2)\r\n # Add an extra byte to the data buffer to hold an I2C data/command byte\r\n # to use hardware-compatible I2C transactions. A memoryview of the\r\n # buffer is used to mask this byte from the framebuffer operations\r\n # (without a major memory hit as memoryview doesn't copy to a separate\r\n # buffer).\r\n self.buffer = bytearray(((height // 8) * width) + 1)\r\n self.buffer[0] = 0x40 # Set first byte of data buffer to Co=0, D/C=1\r\n self.framebuf = framebuf.FrameBuffer1(memoryview(self.buffer)[1:], width, height)\r\n super().__init__(width, height, external_vcc)\r\n\r\n def write_cmd(self, cmd):\r\n self.temp[0] = 0x80 # Co=1, D/C#=0\r\n self.temp[1] = cmd\r\n self.i2c.writeto(self.addr, self.temp)\r\n\r\n def write_framebuf(self):\r\n # Blast out the frame buffer using a single I2C transaction to support\r\n # hardware I2C interfaces.\r\n self.i2c.writeto(self.addr, self.buffer)\r\n\r\n def poweron(self):\r\n pass\r\n\r\n\r\nclass SSD1306_SPI(SSD1306):\r\n def __init__(self, width, height, spi, dc, res, cs, external_vcc=False):\r\n self.rate = 10 * 1024 * 1024\r\n dc.init(dc.OUT, value=0)\r\n res.init(res.OUT, value=0)\r\n cs.init(cs.OUT, value=1)\r\n self.spi = spi\r\n self.dc = dc\r\n self.res = res\r\n self.cs = cs\r\n self.buffer = bytearray((height // 8) * width)\r\n self.framebuf = framebuf.FrameBuffer1(self.buffer, width, height)\r\n super().__init__(width, height, external_vcc)\r\n\r\n def write_cmd(self, cmd):\r\n self.spi.init(baudrate=self.rate, polarity=0, phase=0)\r\n self.cs.high()\r\n self.dc.low()\r\n self.cs.low()\r\n self.spi.write(bytearray([cmd]))\r\n self.cs.high()\r\n\r\n def write_framebuf(self):\r\n self.spi.init(baudrate=self.rate, polarity=0, phase=0)\r\n self.cs.high()\r\n self.dc.high()\r\n self.cs.low()\r\n self.spi.write(self.buffer)\r\n self.cs.high()\r\n\r\n def poweron(self):\r\n self.res.high()\r\n time.sleep_ms(1)\r\n self.res.low()\r\n time.sleep_ms(10)\r\n self.res.high()\r\n"}],"serverFiles":[],"owner":"411908379453834241","locked":false,"unlisted":false,"updated":1732721549025,"hearts":0,"userLiked":false}},"__N_SSP":true},"page":"/projects/[projectId]","query":{"projectId":"415721271111259137"},"buildId":"Jgf9C4Fm-yuItJy5IN1PL","isFallback":false,"isExperimentalCompile":false,"gssp":true,"scriptLoader":[]}</script><script defer="" src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"rayId":"8e93479de8932154","version":"2024.10.5","serverTiming":{"name":{"cfExtPri":true,"cfL4":true,"cfSpeedBrain":true,"cfCacheStatus":true}},"token":"c99f757ebc0f4b1faa48d9a5210dd113","b":1}" crossorigin="anonymous"></script>
<script src="https://wokwi.com/cdn/monaco-editor/0.48.0/vs/loader.js"></script><script src="https://www.googletagmanager.com/gtag/js?id=UA-150413053-5" data-nscript="afterInteractive"></script><script id="google-analytics" data-nscript="afterInteractive">
window.dataLayer = window.dataLayer || [];
function gtag(){window.dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-150413053-5');
</script><next-route-announcer><p aria-live="assertive" id="__next-route-announcer__" role="alert" style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; top: 0px; width: 1px; white-space: nowrap; overflow-wrap: normal;"></p></next-route-announcer><div class="context-view" aria-hidden="true" style="display: none;"></div><div class="monaco-aria-container"><div class="monaco-alert" role="alert" aria-atomic="true"></div><div class="monaco-alert" role="alert" aria-atomic="true"></div><div class="monaco-status" aria-live="polite" aria-atomic="true"></div><div class="monaco-status" aria-live="polite" aria-atomic="true"></div></div><script src="/_next/static/chunks/1354-dde8698882d588ba.js"></script><script src="/_next/static/chunks/pages/index-e6b2ed21e312ddf4.js"></script></body></html>