This commit is contained in:
Mike McFetridge
2026-07-20 09:23:17 -04:00
parent c1315882da
commit 72272e4006
3179 changed files with 562960 additions and 14 deletions
+201
View File
@@ -0,0 +1,201 @@
<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
<DT><H3 ADD_DATE="1782517148" LAST_MODIFIED="1783194019" PERSONAL_TOOLBAR_FOLDER="true">Bookmarks bar</H3>
<DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="1782841891">Docker Servers</H3>
<DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="0">LXC</H3>
<DL><p>
<DT><A HREF="http://192.168.2.9:5380/" ADD_DATE="1749508019" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAXklEQVR4nKSSAQoAEAxF0c7KmbgsihbGmP1S4n+eGfiYjURQR/QXU0jdUyfOCAUt14THPCGNPgbyC4mKUuGd+8DiG/M6JL4+a4BWZptXIPE8uDu94fRfuP7TS1ba3gUAAP//RAmYrwAAAAZJREFUAwC6HBoyqWs03wAAAABJRU5ErkJggg==">Technitium DNS</A>
<DT><A HREF="https://192.168.2.19:8000/#/vault" ADD_DATE="1749343783" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACv0lEQVR4nFRTvUvbYRB+3l8SUUGJJjro6AeK4uKiGA2iiJNDipn8A0JH0UEK0qHgIDg1LVi7OAh+BVHBwW8rdRJEUcHRwSFNSIydzMf1nreJpS9cfm/unrv37rk7B3pExKfyWeWX/DuF5+dnofD+piwUEvr5ouKnryleNlSCVCSTSdnc3MTh4aFJJBJUwe/3Y3h4WEKhEHw+n8Hf80Plncnn81HHcd7rn+zZ2ZlrcnLSuby8pJN0dHRY8O3trWgw093djYWFhcLAwEBe1R7N5pvRn6QxxqvOGB8fN/F4HBMTE1hcXDT7+/ssDyMjI4hEIrK8vIz6+nqsr6+LBqHtN0uQdDotwWAQDw8PJpfLoa+vD0dHR9DMUDpDQ0PgIx6PBy0tLXJycoKamhpjEWtra+bx8dFMT09LT08PTk9PcXV1BS0PmqG9MyBtU1NTQix96Otks1k5Pj5Ge3u7MOLo6Kh9cWdnBy6Xy2axu7trdbQRQywzoK9hm5RhaBm4uLgAOejq6kJbWxtIpvIDknd/f4/r62vLQW9vL7xeLw4ODuBmZI2ExsZGtsgayAHLUPbhdrtxc3MDctTa2mqzIpYP2hIqKiqEhru7O0mlUlap3XgrY3t7+z8dMcTSh76OsmpYgqZutra2hC+MjY2hsrISS0tLbKe9U0cbMcTSh76uj3qamppkb28PsVjMlJWVoba2FsoNzs/P7TccDqOzs5P9x+zsrGlubpb5+XmUl5cbR8cgpXVLNBqV19dXWVlZkdXVVQkEAvZFCu/U0UYMsfTRk+EgfdXSIqVRnpmZcdiNqqoqyWQyttfV1dXy8vJiyP7c3Fyhv7+/oN1x64x8Z4A6xcRUAgTrzIuWAp0N8/T0ZIlraGjA4OCgXSbdkdIy/VQJmeI612m0Txo1zL0oAuyrvDAbbm4Rm1bZ0AH7oNj4HwAAAP//O4Db/AAAAAZJREFUAwBmaqDo7blb5AAAAABJRU5ErkJggg==">Vaultwarden Web</A>
<DT><A HREF="http://192.168.2.8/admin/" ADD_DATE="1762955984" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACKUlEQVR4nIRTO2gUURQ9980M+9FRSbIEREGJnwUhWohoQDBiQCyMlVaKSWWprYWfJkHEJo0/0BDEJoXEwmrFgIL4w0IkElLKBqOyWXZ3zOzOvOt9mWwyO0nIhcvc9+49593f2FiS3ERuT5AKCjqj6zqtR1VG3S93l0vYQFTTCLLBb026KOZeJr4RcjiEIrKLznnsho9+MHLrEpT6SmX5vBANRT1t6QuZaua0PWcft2G/UqwemESTBHb8IKAnpOiwmOdEZ9jiM6Spi5nz8vpDc5ckoOSF+8FtF6KBIM359rouLrj61Hynfqnd4LFE/92QwAhLZr86MJBdwGCo4Dg1jHwK8bxXWpWMtdYAm7srmz3cSdXRlfaxvc7o+wFU88CXSal0XYImWHRIdEvzXrpqTyn0SL61I9xKYsXA6p2AZwnDFUJjKzArzk3iaswRpr4TOsU+4RIqlxifxxchsSk8A476Crca0cuNb4TR8xqvxQ4KhH4p/uDSQzf/AF/FfGvOy3tQU+iWoBxFnXVKjP2PgMJt4I3P2BmrtI1URNaSgVKY0RoVMV1zdgjFQcYBEzNGmK5FdSsBVC2F6WYXlntwUeOnR7Dl9WOSVtjLCNqAq+K6vI/R4QiR1GZtI9zTIcbGo41t3YOnQNpTuC7Aa2c1UvIjODG3L3rXTEhA/1ZNwciENEzG9H4HwdrF6EmtlLgmeBWBkUkhOcn4KEtjpYFDFIFHRIfF9pLx/wEAAP//JW3liAAAAAZJREFUAwBaSb+Y8BCb5gAAAABJRU5ErkJggg==">Pi-hole</A>
<DT><A HREF="http://192.168.2.12:3000/login" ADD_DATE="1776871688" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAACD0lEQVR4nERSTWsUQRCt6urObjImO2YTyQYxIfHgFyaHSMBAwHhavUoOgn/DvyR49eQhXrwqgoJCogublchGJKC7s7NuuttXPQFnapruqVf1XlWXlYWVGHz0E/Ln5H0M5wSLkShiZVcjFhZHIiRTbIyJbIiY2cBIF6yibmZpLKpXMQog5ID7ApocCjViXJ3GRb796OrT5zSZkDg2UkUCaS+gBLOMHEZCOXKt643N3XG/S7XpxCwVunr1zCm3JsMf6xb29n+9feWHf8DGIv8BbBORHqzKsw7pmw+elN87Re9QGk3Uri4tySaYqscBdMK2BnR2Y8vli2fvD+zsfNk/NqlLZFyKURO53NICDKO5dm7+ysP9nwcvs7U7+dZeDKF5/zE4xiddU59WLSJWucQjJozHMys3oaqxseOareLbp+L4KFu9Xf7oMtCQYLSZ7Na2KXqKIZk+c7fujXpH5Wlvqf1s2Pk8OPxgLzX0JlVbYiHwaNFWNzHUl1d9WeSbu8H7wdePKCaqZnhFJTFAITCHGAPuAXl8Maovr2frd/uvX0iW48q1ObjvahCiEknUBE6D8Wsma+60z969iUA6TBHIXWRbkVi2VmsAgfYciv7Wlq4NO1/K0xM7m0fvkVeHDWs1HfWNtooBPAZ8kCfZrB/8ViWUxpK4Gr6Y9hZIbJK+BDHkR0N2UzrexMlIYxIK4H8AAAD//8WYKOwAAAAGSURBVAMAEH/DrfFmSEQAAAAASUVORK5CYII=">Linkwarden</A>
<DT><A HREF="http://192.168.2.5:3000/domains" ADD_DATE="1779740090" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABwklEQVR4nJySz0tbQRDH57v73iPJi0FJCi0ttfQH1NL21kJ/UCg9FAq1YGmhf0HppedepAXv7aVH/wER9OBBEA+CF0FBVERFCCpBoqIxJjGJb3fHfaJgfB4Sv7DM7uzsZ2Z3x+n9XPspgGtEnOFTS8ZaIENk0kSkiGnJ7g3Kivf/zygO6Jzw+0udqUkxU44levoGvOkzn6AWBNAtGDM+0l99dyXACYSQyi1jkJmfXQkQKr+OjtV5/ddC4k40A3P6JlUTbVDxcCRJL0zqtFaiIVl2Tt9/8FT2RACpDOpvv8p85cA41RJkucgOMyJVFPLkWfM+coWjGsvCNnuuJ8yNe6g+eYN9x2VzMc7+SEi9G6lABSzWFnVS63CfyShCUIO8GJfsQHDpGyRSCD7+cHNHhyTLBeOUCnA2s8oP6tQQ2/lQVADsRgDFHcT+fVePG72NbxDzOeh6jrKdzkYAzehlt9xyPIQdPNwy4M4jLr7+JPds+RN2TLUECA9/++VuCIEVu+wNfU0B/Hauv+oW2y8+uHtMPGZdfTZ76QQgXaPjPlTMdlwiGXYfKb8NOp5i5bdDXb+NSmeXzEqJGRs/JCDmzsOPAQAA///11RgtAAAABklEQVQDABF1pmC5EosYAAAAAElFTkSuQmCC">Domain Locker</A>
</DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="1783093358">Docker-Prod-01</H3>
<DL><p>
<DT><A HREF="http://192.168.2.3:3200/" ADD_DATE="1775412380" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgklEQVR4nGxTW2icRRQ+Z+bf/ZPs5t9NspvNddOmtI22JtAIUjXBh7wJXsBAXoIKgUJtRDGlhVIx+CLig6CGICGKiLXFFsGKD6LVhz5IEY1tatNikiZuskn2lr3P/8/McbL64EMPzBk4M/N937mMBQ+wiYmJ/QB8UGvv3vz8/MLo6GhQKXVISklVWfX3PfTIObfiXpmd+eBT6/8Pg8G2aLGYzAcd58Tw0NCZmzcXfzDhkXC4+ZUj/QPvIGNUKhRRKg8y2XTWnNUA0Cw+NjZ28smh4elSqbR17adrMz3xuNzZ3r5hzvyC1HfLy38dYQzri4XirdZY+3lXePk9UmYWvT419eXRgWPvSw1h7rMPDz762NvFchXa2jtOTU2d/v2zubk/Kvn096Vc9t7cx7PTSIoDUU19zW1ubFzt6e55JtrSxIgAOjvaHCCgXFUGb61ufG04rC08k/RZKJpGxuNl8EEVLRf+k79n4Y9mZu5XNDgGQe9Ft7e3WXdpmTLpnZ/rfSiUZqIePbFLdsywDxcUv/4uvjZSU9Db2+H4fRZrsOtJigq2tMZwX3srBT5/D3Wk9ylbu1ABGxqZB2llQyek6TbvPtgYawhYpkX86sJdlRIcmHSx6pIOsDpobu3ATR6DkuuoBl0BYWQHZQWykmmPW74dlG5hMenWUnjjxWffPBZhb4lAm2qhAk9jEFkuATK9Bs0m1bRuAFcqEJ2DEHTCZFMVctSgV8q+y9bLJ06+wMXG85HUAi6ur2AEU5hTzXDYn4M7PA6duAW7HoO6aC/se/oUyUIKJDDVF3J46sdvI1a4MXD+iede7c8olF2geYkYdaGGXULoJgkZ4NClPTNkDoT8HmQ5aacxQH8n7uPS3aVPrPX1tWlRLl4eONpvCSEI8d/O7Dmq7aafxiutQCoN8VATLxTy/Ldfb3xz6cKFS9ZXFy9ecRpD51LpnbOOE7LNzFuI3APSfgMiNRFHY4wxZdoH5l72zp+3v5id+fC0wfdwcnLyQDKZTCUSif2xWKyvJEQ6YNsdZddN1Nl2GFCVhQlyv7/OIEtzbzV6/Pjqw37/gbW1tRUcH3/pLFgswoCySOgqohC32C9aqccRrU3Lx+q8qmdKomOc8ywRHTIK65F0qeqKJUuRjJoa5UHrAkMeNUXImN920MyjMIRdbhV2kENcAzielC0mjTwYZCAWMYTX/wEAAP//qVgbeAAAAAZJREFUAwCqrb01QsxI6gAAAABJRU5ErkJggg==">Dockhand - Prod-01</A>
<DT><A HREF="https://192.168.2.3:9543/if/flow/default-authentication-flow/?next=%2F" ADD_DATE="1775391533" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADVElEQVR4nHxTS4hbVRg+9/2cJDe5mdvMnU6nmZl0ajuOY6E6XUmtFaaCG0vpruJOhFJBikWkm4IbwZVQFOpzUaS6EB+0iwYRK9jR+hg7BsZJMkkm7+d9nnPvPSbRpCDit/jh/PD95/v4/48E/4L28LFJZXH1mRMvvLyCMaZG/eTFq2HwHyCG9fRpSosdjXmOvY80rWSnXH2DN6t75MjEzUMLs1clWWRzu93E1Nze3+S5+dL1c2tbowHDHx5JpcKQiyVMwxF8ByloIuHZbPRxZ/vnA4HVOxOwoRSvaau+ZZzK53et6t3b3wNwmQQg/bfE8uamo5486/qY0TENVOj4z2IfJiRWQqIk0zquqd2uo9CqrhMcTxe/kz8G4G084JKDsnrhgsBbRhJ6kDdb1pLfaR6RkQeAssJAScf5eotTgibPIQdSoT1Prl069nyfhgcqhgo0hIgyox61srnXg+L95yTHDojpJ4DQ2iBgIwM6nArKNu/TrotVeYLEyvTCQ0LoWibzJhwq2Jk/PkPTnIcCUGU6Zc/3aCz4BhFnm8Cq5QkEoc+IKt3CHHu/WAucnqERF69QYwtzQbZkMJEjJMeeIuwW8DxMsbACAMNgCCFQRKIRgoVLIdT4yvIxVTRBqPL1rZfGA+4Jy1HC7YlEr5khEymKdkrYrOQBK4WBNLWASW2/amtzyxvfrp+Pdrbe93f+oHOZanh8B7Fzry4iMra/t/nLh3JUj/FW3sOdJkWHFBzVNAD4KOiKcTIiUjuNH++c1xWKvHvjnc/61GCoQJvl/qQqRUN2Wh2313aCA0/RFC/ibrtDthoNvI+HYFoioKCn9soHV17rk28MyONDqqXTfWcSL9BkI2hXWVeI2vGDSwoqb++69d2Ia9p4SpsktosVEJ+Z4Yq/Z64Bo2wNHIxv3a9Hu9LSPCJd0yKNwu2WPPWFMpsqTbL+l4YcO1HL5X2yvEWVsAjYw0+/565/2hwMIB/EYh0dRjP3+ibe5RNJPGvkPq9vF74pMdpPi0n9RUwgxihtAa++A4PHjrf/IT1I2wDZbDoA7axnLr+ykQhbWvGTKz9MJA4Fv350Mx2JBDVEi2sOF/rAfuvs9dECCPC/GATmcjB6xR89eYar9m4VCneao95fAAAA//8hVRlcAAAABklEQVQDADBZjXzyul3hAAAAAElFTkSuQmCC">Authentik</A>
<DT><A HREF="http://192.168.2.3:2283/" ADD_DATE="1748633479" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACmUlEQVR4nGRTX0hTYRQ/537f3G66cokp4r9SlEWBSg1MRIvCoh4i8iUIwkAwX6Ikkop8kR56CTGyJ+k1CCpqFUlhCRrYjCTLTMMcS7cSdMvVtntP525zbNcPvnu/c+45v3PO7/ddCaZFABhzbm/kdyebtQkXTCBiv2VqbsQcj2ZHxFlWx+77vCtMn76SDq3W6e8f051KqnL7uIWIFNChhq0y2LiqUFAzEQhygzWjg1+X3QcQqZMAs2QoMKKO3pYYWjoDqFRmzJYX7ZbXvFUQg21s98ExeCmWu90NgDTIIfsYrYqyspsilft1Dh+UgWk7IJYnAVbE3tAQVofb+FzLpRvhG3gkIVxkx440Gi1A1PLPebRSzy3pU8cGIuw8BIRflPpVO8fmJwPL+XxB4eBm87BMTFAhWtCKan6TLfc8J3soRx+Gglg9J6UT3yT5YU8jJMKIr97K/EfvRfbDnp5di3FlSivaZZvfxckdplo5BsBn3rsF0OJPtN49rbrIB9ZTFsBh9scBLPdmZyEMvayQ3QTwSXJ7XQKp442S97rTVtPAzhOMGtRs/s3FC8Wqt8QbhjU4ztVZXlhN6AF/jGTeN+LztF73lY4JxwAiHEnwqKxRwfCl6M6bzUByrlZb8ddpy1RIEYoyQ/PCpqGOT24dnJwzRoBR6Whh4g6nGkPahMEKQ2vjQp30iC3auHCECSjCFbkO2PjMUk/2x28iXyI7ZFxr7jJcVE2gfkiSKwToTBhtZa4cTLTKKuUkFeNwFEP8ms+gh4RLCbimAPUgbFwLAvBFCsB7xco/CHVlgKBeJmfO8oj6U1PyvEG8r+nZhGHIde+Pq+qD8t6wVyc8x+YeTpyBv4XPufXHGiAXJCfL6CEBd5Ya3O/W8/4DAAD//96YCi8AAAAGSURBVAMAGTf4WAOCMh0AAAAASUVORK5CYII=">Immich</A>
<DT><A HREF="http://192.168.2.3:5216/" ADD_DATE="1775477630" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADk0lEQVR4nFRTa2wUVRQ+996ZfczOLl2gbNkdl9a+ImjRYBFTG9PE1CAaNTHEhh+SItZaIfwwlaICmhDrX5KmP0SMZm0wUYlGEgPGEtti2tCgtUppl0fpdnHc7c5257GzuzNzmdmG101uzsm5+c53znfuYWDlIPtSx2nY2PKMoqmdiqq2lUpFwYmxrCvh9XiG3V7XyZuzk6P3YxDcPYK3ujHSv5TOdAcCAbb5yc1QE60tJ716Yw7NXInDci5XwhgNEmPpYCKRyN/JgiEc9kS59aeXc0r7ztdesbq7Oi0pvYxTRhpZiEJdoJqOTFy0BgYGMWEJzmv5swn9v1chmdQZO4G1gQ/3Z7Ny+0eHegvbtz/Hvn/wMLkwNg4lTwkYhgE9paMdL71IxsfO0V1vdBXGJy621wSF/uuQ3I/qmlq2iYviSMfrO+HAvnfw8zteRllJguDqCsRgFqSMBJu3PEF//C4GJ76MQSqVorKsWF/HhiAUDrViLad2BVYFmO633oTeQx8iScrA2sq1Tnc0nUnTxk2P0B9OfYV+PnMO3uvtg/n5m2hv5x6wdWIcLFZkpa15y+M0lc3h30cnYM3qIBiGgXRdR01Nj6Gfvo+h386P0Z79B5AQXg9nfvkVUtklvNWuyq6kDRtmMSJE6wHn4ijA5MCkxO6b0Lyuw66ODvhzagbe7tmHeJ6j9gNwZhEMMYmE6lqbqBhhyqNAK58AIwyWbTVNA4IxHD76Meh6oewbDLEtAUzuTd7xbDLX4sL8XBQCL9BbywStcxUhEhFQaF0lcBwHyAarqgqi+D8SRZGmdAPYqjBduHEaMYxrkeH9/PDkpandvNdtnjxxnAiRKNQ+3Eg5zu1UXKYzTKCaWoBr12YhkZgHn4uzJi/9ZWN9wyQUrRWlJWm3rChwpO9dwvtDNohAqURRoWBBsUjBNAARwkBVVQhta25AHxztt6am/rYq1gR7SEZcSFRFaiqnpy8/reXNwrOtTzGOKqbNSh1l0Io2bjdCHjfAsc+OF2JDp1yrAvzA9cvjnxNHO58bznt8wa2jF/5omIvHrfq6ajMUqkQ+L8Yetw0niMavzphHPjkG3wx9y/I+7qyh3dory7J5V9IwhDlX/UOfSlmpm/f72Uc3NoAgbCgvk903mv53FhRZLgUrgoPFuYW+JCS1O5N4YJ0bN7W2yKq8R8vn20zDiDhhwrCLnNc77Pf5v7jyz8jY/ZjbAAAA//9/u8ebAAAABklEQVQDAOFgi0LQ0+cvAAAAAElFTkSuQmCC">MySpeed</A>
<DT><A HREF="https://wg2.mikemcfetridge.com/#/" ADD_DATE="1778866916" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAACTklEQVR4nFxSS2sUQRDuqn5NZn1Fs8YXa4xhhQQURDBBjc+DeosIwYveAoLg3YN/wl+gIAgieBcEQXMTISIIPlgMbLJkIWE3u9PdM91lT4zx0cx8VHfX93V/VS0e3H9sueqByKXOQDqheyALqTpBOKm90h0SMSEo3UflUGLi3QDlg4pp73ZwH3G3DGjt2KDYlxB39sg2OpCEIjMD3umQ82unrgLCzOxUe3l17vZUo9G+cXF0dHjgyvE99apOJd07NzRdk7s0f980iQBMyVN3vbfaPX2ylkiYnKhuT/DocPro+afVbjZZSz8u9u4+bcyO65E0gLOYBJcUrt1YOnNh/M2rhcvn61++tiCEY/vTsWoyfrCyU8PZkUrmAhmTUs5vnpgGAGscaPXh3Wdd0fPz35utzqXJw8127+XbxYnajvpe/WS+1ewUWiA8u/PQcdVH2cmBpZW1EtMuiQyl4SoWrQ9yHWTQCWmdoRIDIaYwYown2oQcE92nHDlqQRZDxguNPBVkMO95iHkiGgBREuIgTpSzwEOMA1GcRgycbSB5DhgJOjjmSwKwvwf8F8PvSMQqbSwgIAIVQAgMIcC/AgQU/zIS2udR3xvrQXChERVyJZPUc81kvMGfU8iXXkVseFSrTNR9WoluchSOy5XlNQuiY4kVdotTXrs0nRum1KG5W6o6FLwnYlyKhRevjc1/fGu5lXWGuEWIFFi6PmNBZlFepwbLh2lR9V2wQhsQsRUGlRGyRFRxd7OsrNeFvgnxGW98WiZRkHj4VW5WxDZtOvkJAAD//0EOnswAAAAGSURBVAMAFIAdTuYksK0AAAAASUVORK5CYII=">WGDashboard</A>
<DT><A HREF="http://192.168.2.3:81/" ADD_DATE="1779051143" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC+UlEQVR4nHyT22sTeRTHz+/3m8nMZCYxTW1ju9nuqisuq8sq3YettOzi7v4JKgUFr2++iaAPQt5Eioj6qAi+CFofRX1QvIEXxHqBKhi12qbTpmnSJplLZub3+x1TLwHReuA8nXM+58uXcygsEohAZk/+/uvTratXIwBZrO+bBbywviMSuDmqYu/La6FIcnWkU2UXE8OPS98F4N0+A4z5jXKeDvCCAjzPGmFRLoUqXUvmlAeybN5yp9fd+LFwzP8CgJijtXK+15zJ78BqtV54jKlEWevTK2pRlglrAlbJIrsSuMvnHLIi6Xf/dGbNX/YjkstJugB4Pfnwb86dYRnXUZTUtVqg7AGHZps+vOEh5kul0JxylN1jrljTUC2oNsTw8PXOgYVZ5YOC0MmGQk5QL6LAlX/TGrkUhmTISiXv3XzSrNuFcz5fsl8Q8l/oh2cqJhRcAj+0AF1+VehR9ATHlf/BI880U93hT4WJ2oQztE4ygGXZ41fGu7YDN6/6uvtPrCd53ZJCtgB6mxagzVysyy4IM1NAlrkUnuXQJXtlIw6Bs5xO20sOtHcHbmC2/TJZKLmVwGsszH7wAJxm1jAm5wnjsx/dlT4l6KhNm7PNNRmAbAF4Mg3cSIAXSfRDAS0Ftbt+TKekH0t0VJZnSP1dxSRz9ChGpgAtKw2j87ip/mzKmGCcwZ14uo3FoU2HR58A+XwI7Ux93lVndayS9d5scLY45h+prIzvA9CgPZ7YkMboQDkQyr2p0dcZ2WMttTp4S4EV0GJCMBMa5JVfl+O2HQwqSveGFZO958tWingablE7jWTl7cyozpJp6sbUgEWlFuA36/lNv/qnIzy5jXpkwnfIqXa9p5+DOdi8BaxxtLmlXfBjQA3FULBBT8inMyNfn/KmPqM2LTYiruwP1V6zVGPBmOBgx2JakIq7AcPbzgv7Ru5trvHNX/gc9YGDHbMiMzjpyV333WmM9PjpTKrn/M47O7//TF+oASSX/zi8aqQ+h4feDOUX63sPAAD//+0eCf8AAAAGSURBVAMAWf5+VGKHtAkAAAAASUVORK5CYII=">Nginx Proxy Manager</A>
<DT><A HREF="https://book.mikemcfetridge.com/login" ADD_DATE="1781476355" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADb0lEQVR4nGxTbUxTZxR+3nv7gfS2lBaKZULRueHYh7Iwk21RQJbIXGDzxz6yubhkyT5g07ksWYwh4YfZH5OZmRES0zFYjFnQGcjcBCdp+DV0xBEl2hZoMIhYWNvQ3rbc3o+ztywYMj2/Tt5zzvOc5815BDwiOomEtZxG+zeHFrNHiVKlD97W1YX1g2uFTsYMCpysCkdTHR/FXhj74W/5m6kobgZjSgf9+EEB43XexvL97P/sVAMLxjOv9YQU//lg1rWlQIXDCu2XkGw6trcazT667EH2e7Q7/mC9WMmjmDiiRp188PM7rUNxz4fd16LN1xdk9O3zqglFF7+79g9780k7gnFFu3SfzI2VNrz/TPFQQ4XRtboBTfz62GTJ7m7/rVzL2ckElpJJKrOZwMBY245i2sjz7okEJpYURpqhc61CR2MV+7hO4jpW5BP+66mDx/5Mli4mUmS3iYbAQzMIqk4oEPl6PM/kDIgmgfZy9refkHBhKmnUbLQJbDCi09jteeiGrvcFk0I0o8NuFSEQcWWAwkGyfLjWY8WBmiIksjoGZ9L0tNvM2nd6yGRXE+rlSFKsclmE4y+XYHRuBedCyyyXl8aHy2wivqx1w8NB+4NJOMwC2rYXseE7GYzMphjzjy3QvbiCWI7w+6yMV302VLut+Dm0jErJjPrKQvw2ncKCrOKNagfSOaKBaZltL7NSe12pJlQ4LfpgRKY5WaUjdS6aS6nw34ijiWst4qwn/4rhcacFb9UU08XpNE1EFRyudeppxWBXExYzO3MjScH5uKZoJF6MyKivkLDNaUZ/OMm8kog9PomGZ2QspjW2f5udEmmdLi0KwnOSqn6203OC/TQeHekJsz0ufRmv+Ar1wN20MBVX0bLVjmhaw+jdDPZvkchlY/pgOGt2SlYc2VU+3GSOnGblT11gdOY9R/T13kPHR+a/uHJPc+8qBT1bYjXOT6eFcruI3d5Cg3+YGDc24JNaKfauL9uGl7wD7BZygQA/wgcnPNS1daz6wLddN7Mtt6NZNG8SjLmUxsZjxJorLPGj9WWnSiZ7+tiLn86u+SbviVWAPFJjIz/nU7DinanWc0veg11X7+/b7C5kh5+XBnaEe79iTYdm1pza+Z+ZVuMhM62iN6AAV5RWpJY24OtNZ9lpqAHumQZA56y0vvdfAAAA//8NbvBeAAAABklEQVQDAJtTqthuOZOnAAAAAElFTkSuQmCC">BookStack</A>
<DT><A HREF="http://192.168.2.3:3552/dashboard" ADD_DATE="1782919109" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACMElEQVR4nIxSTWgTURCeebubBty2WkWNXgq2SbooHqU3FRTxJB4ERbBF20CCPwi9edCDBy9i2yCCRRBPInjw4kltBUHQU2mTbG2pgrSCjVgUMWl3p99uX/q7hSw85mfffPPN98akLb5rqYl7Pks7E4kSudPvpkej7plRyawz2Sa+14diDmKfuQzTG3VXRaJ6fg/pYv2dv9r2pakugNvOWExYunQ4rq0tln+xLoBfnnkGZnfgi0gGPKYCn4UydQEIc+3ieN5Nf2iw/h9etCotOEejANbOSbl0MalIlcKGTDd37ZkZnPnTyLG/dpaJO4UoRUpeGqRG+ovJ90GNuZ6O6tWglQaPns3NJnIxxQqZJhTPM8k8biWEZN8mBl2t0/HGePU73J0k9Bx/3sA/B7/MTNsAsB/xAZwhiFwQNj4KVcorDOz4wtmwOEA16LH4ch3eIYziIjWM7j8RzwHoMuZrZvGRtibVGio92v06UEi+JWYTyW+IgyU6LcTdKD4Bv3lVcbnPG8UD+i2PvUeGKKwyneJl6lHfpx+lZKepxctoPRaUWnxSrcYMZXmXeL3IAecJnEAniKj6XhB7ZtYZs7Hs3eADBHn1oOjM3ugoJHwx7orQcSSnUTAK+jbEPALbyj59HnTbR8JnNMS8guIdYQuhh8vWOIl2xzDPb4QHQe5CyEb0szHvrdEyMfN2dBrC6vzLu6l3QXKglHqa6ygMM4AkfFbOG4qmPJIWrLRDil/XAJYAAAD//0CKFCMAAAAGSURBVAMAVj3FzFDo4EMAAAAASUVORK5CYII=">Arcane</A>
<DT><A HREF="http://192.168.2.3:3000/" ADD_DATE="1783082300" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACmElEQVR4nHRTT0gUURh/37w34+7sjpr5B8kUMYk8FG1dBG8hQqcuSpCXEpSiICKIDpbHIgk6VRQkSKIeolNRCB1CJLQIgy6ZhWvk6mp/3JnZ2Zn3Xt+bdXW1+oY3M2/e9/3e+/2+32ikKKQksG1OCODQir8NDGyfQ1E24CVV0c2RROf3uJEQgajTuDS5DouVHv94/fnbIRgi2X8BqKd8dOdA82y9ddeP6cfcCCWWGxCBC5kII6bAHX7n3jWtuucunpl9U6hhhZfx+y31k9XWC6fMaMw4PGhOO/LyhxXwAeD2wUrxxTL83TXRRNr2L+App5FbSFhTRGd6if66IjaaKTca+bqfw6/UCjizXM4qnICWepwYcWZGkpmXja59FvKE5SaFG8OHupK11hju7GtA1KkIJwBty7ZEUYKZplK9bC070T61cKJjMGUXaxAmf4sbrSiUCLmEqAAU9ZyojYuIxfSqZftV+1SyUFxI2wIwAlnncgkqSNg6qRiKXRrRylL2s/2fv57sGEz/VaxCU21TITe9kDeDVC2lhEQ9Md9zJb3eOU7ozuIQQAniMm2JUZAqIBQHAN1CvawUqRrz/LXRxL3xLuzoDqOFAOpW4XjvWbDlMJk/B4JIzXFFsFJl9vWPHnkg4T8AvUvpx2zNm9OiVMdqDhtcZV5M6rjcX60xe/rHjj7csDYUA8DeS4tuy3q2G/ueISUaw8ocLnAkpY4tqSBg24H9Y0/sdP9IQoFA4Z9QN6kmfWjPhpR9vDzHk2YpMzSTMhKhGinBEaUsZukx46e3xLh8itsLrNkykgoFgkM8udVUPd1Q3p2jtJVy2YxZETTIAmo7eXju1/Cpq5/mizXYJkoBJC8kru0jBmnD5xAJMDHYmaPiDwAAAP//8YKkGAAAAAZJREFUAwCBgC0+4/nm9AAAAABJRU5ErkJggg==">PatchMon - Linux Patch Management Dashboard</A>
</DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="1782563221">Docker-Deploy</H3>
<DL><p>
<DT><A HREF="http://192.168.2.15:3200/containers" ADD_DATE="1782342509" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgklEQVR4nGxTW2icRRQ+Z+bf/ZPs5t9NspvNddOmtI22JtAIUjXBh7wJXsBAXoIKgUJtRDGlhVIx+CLig6CGICGKiLXFFsGKD6LVhz5IEY1tatNikiZuskn2lr3P/8/McbL64EMPzBk4M/N937mMBQ+wiYmJ/QB8UGvv3vz8/MLo6GhQKXVISklVWfX3PfTIObfiXpmd+eBT6/8Pg8G2aLGYzAcd58Tw0NCZmzcXfzDhkXC4+ZUj/QPvIGNUKhRRKg8y2XTWnNUA0Cw+NjZ28smh4elSqbR17adrMz3xuNzZ3r5hzvyC1HfLy38dYQzri4XirdZY+3lXePk9UmYWvT419eXRgWPvSw1h7rMPDz762NvFchXa2jtOTU2d/v2zubk/Kvn096Vc9t7cx7PTSIoDUU19zW1ubFzt6e55JtrSxIgAOjvaHCCgXFUGb61ufG04rC08k/RZKJpGxuNl8EEVLRf+k79n4Y9mZu5XNDgGQe9Ft7e3WXdpmTLpnZ/rfSiUZqIePbFLdsywDxcUv/4uvjZSU9Db2+H4fRZrsOtJigq2tMZwX3srBT5/D3Wk9ylbu1ABGxqZB2llQyek6TbvPtgYawhYpkX86sJdlRIcmHSx6pIOsDpobu3ATR6DkuuoBl0BYWQHZQWykmmPW74dlG5hMenWUnjjxWffPBZhb4lAm2qhAk9jEFkuATK9Bs0m1bRuAFcqEJ2DEHTCZFMVctSgV8q+y9bLJ06+wMXG85HUAi6ur2AEU5hTzXDYn4M7PA6duAW7HoO6aC/se/oUyUIKJDDVF3J46sdvI1a4MXD+iede7c8olF2geYkYdaGGXULoJgkZ4NClPTNkDoT8HmQ5aacxQH8n7uPS3aVPrPX1tWlRLl4eONpvCSEI8d/O7Dmq7aafxiutQCoN8VATLxTy/Ldfb3xz6cKFS9ZXFy9ecRpD51LpnbOOE7LNzFuI3APSfgMiNRFHY4wxZdoH5l72zp+3v5id+fC0wfdwcnLyQDKZTCUSif2xWKyvJEQ6YNsdZddN1Nl2GFCVhQlyv7/OIEtzbzV6/Pjqw37/gbW1tRUcH3/pLFgswoCySOgqohC32C9aqccRrU3Lx+q8qmdKomOc8ywRHTIK65F0qeqKJUuRjJoa5UHrAkMeNUXImN920MyjMIRdbhV2kENcAzielC0mjTwYZCAWMYTX/wEAAP//qVgbeAAAAAZJREFUAwCqrb01QsxI6gAAAABJRU5ErkJggg==">Dockhand</A>
<DT><A HREF="https://mygitea.mikemcfetridge.com/" ADD_DATE="1782341388" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACm0lEQVR4nKRTS0hUURg+/znnzswdR0MxzUq0sIQEozJ6gwQtBDEX1SISigiKil60adO4K4gWuQhqESVENIIE0abHIoUIhJDQSiym0hGdHBx1Hvdxzt9/r2PUwhZ1Lv+55z//497vO9/h7D+HLLzh4GPG/VWMsYYGhosJUTK8yhA8p5NBtLA/tIFBbHhh3zNk/zj8xh1dNWtEULZq5Da6KolCzAlA0MDAsW23aW3LRHxyQM9kktVSGkIhBTmrBlQj8sjt2mYjYPSihhRoXWWEDVM52u9tUBZKwSSH78BlGZeiCIRgApEFTMGsDHzkAoybWuPzeydG6qjmGedMa81c1KgJmE5nk+i4Oc65DFJT9PYRUTmWVuQ6nKYqdFlPAdI3EAwAmPYmhS4eaLrIaisaw7O5Hzrv5PwgUYdcer8HX2li47Rs9YhErV+5NsEDLrL2PDSublb7t5xF04iUnt7XJRpW7VRKuT48WKB+kBP912RIdBy9Wxe1uPNBOSxBHQSluO1bz0FiZpQ72tKVJTXiSttDMAMlHkKh8oSDOS/4g5OjPXZOXQLg500IveMAK7P5tN6xrg3Liirl2PQIa2k8zlKZBL4f63PSuaQOBQNEA7mT8X7hAR98mnpTsUd2hQ2jn74+S7Y9KMMYCS5T66ua2KeJAVEWWaFjb29gcnachyOmdPLq1pPLqddQkBsn04viOHanvg8Na7fKC3tTzV7cVd8O03MJ3t3fiZFIsWFb7jgd1ebuU5+n4HdVkZxF7BDTJKxawwz1Erkb5zJpZgaKfcbIZ1zwKZV1D98/8+WlxyYsoU5su15eXL68dJvEMLfcDBUD8Q1Gft4efnQhHvf60YPwF4kvfT8KxYuJSw2IRv+MDw3RDYz5XP1q/hMAAP//0TToVwAAAAZJREFUAwAvgy25P9cgGAAAAABJRU5ErkJggg==">Gitea</A>
<DT><A HREF="http://192.168.2.15:3100/#media" ADD_DATE="1782393901" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABCklEQVR4nMSTu2pCQRCGR0nShKTOM6RMky7pQt4gNkleRFLlDYT0aX0AwU7s7AURxAvi5VzweN+d3TlHR1HwsqvFKfxhi9md75+ZXTYJMZWEmIptcLUblBrjf0HwNdYhjFQEAYbr5fPyZAi1llPoVutON5NKGQ0YfrLBviTw3MEdpz1YO3A5CcOFEXYEH5wbYSUbHAidoAg6fGnCatCcaB4jMsIKCUbX93+Yec+f7MAGa9Rg0t4ztmd6BTd8QeUNXNnCcq7OGzB860nKdRDfhqhfkRbPDGdt8NEIXHnGlany/djjsLfZ/rhJF6tKqjQEfTrZgSujvDPlxAOp35cfmAafYFACYuryn2kJAAD//0xs+74AAAAGSURBVAMAv0PsBQMOTlQAAAAASUVORK5CYII=">Miker&#39;s Homepage</A>
<DT><A HREF="http://192.168.2.15:3020/project/1/history" ADD_DATE="1782395819" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVR4nFRTTUhUURT+zn3vzcwbp9Q0kgkGxFolVvRnMZANtAgSWgWDhaESgVAREbZqK7iwWohUiJItWgiGRoHiSiiKQKI2k9RGpsSiSceZdN59t3PvG6e6cOFyzvnu+c53zrERHOKrzOvi5SSE6gbRKRSKcWOLVmWh/Dn4GMHjB/P/Yghbp709itp4P9uuQAgHxSKONDYqHfb28xeC67JLlUBiGD+W+jA1VdAwi69gsIuahkmEnLSQklQ+L9PJE5i+fYO6UyexmP2qPmQWpQiHLOU4rQhXHUUiPoFMRgr+wEfNrn6EQqeZ8gYRp/Q8K9Wyj2whzE21NJO2Gbq/ixtwOLa2oV9jLXRcagVZQyiVfKZrB2URFpeXcWxPE2V/5nDryVN8LxSZqyDD2JOS34fRfHCG0NEzCkt0cgYvKIm1JCa2uUl8A2HDIWKGCr72GR4SjmPD98ZsTtYGKbVYwvRBByifyLbVhbakYTM+/0optnHW4BPBGaTHGGrjX/y4yaq/oMDnrxfU1XNn6W5nhyGwoypK955NKxGLwScdW+6eQlxUJsA4NAE2cImJ+rpKhxP19WzzgwxbRykD5BIoy+QT/DYcJAci6tLA5HNVF4sZxABn5zkg6fsqSKZjWVDGsojdoxAWi1gqi6h1ZtxGibD6KxCxuppYSK7fL2tUFlHKMd2SYRbNMw7zMwM8idptUTV4rZcGr/dSbaxKQTepEkPBVCoMW/i4sIT9B3YiFD7OLDYt2xZqLU930udxs/0Mte5tMsDZN+9guS43g4ERN8TZhzD+6KEwg5Fb6eNBmmFHWCmjpFwtFNSWXjn9JkgjQCQS5vmYQe5bn8ZaRspMpgRn9wTq3O0ceQiRsPM684lWVtfUi4X3uP9yVvgRl4eAPC53iME95WWqbOPfdU53JXkyuzgwhfx6MCOxbVlYNMc2XueR/9b5DwAAAP//IFmdeAAAAAZJREFUAwAvDTJTWfkTagAAAABJRU5ErkJggg==">Semaphore</A>
<DT><A HREF="http://192.168.2.15:8150/" ADD_DATE="1782404137" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACk0lEQVR4nHRTX0hTURj/zrlXUwt6sWyjbVpSL1JBSaaNskx7qCAiUxH/zIKgIsoIoiAW1FOhL1FZObeilgn10IMUDZus8CV7EHwpcVtsq/eQ2L3n9DvXuzVKP/ju+c75zu/78/vO1WkZcQbbdwsp38LUiLPmTNfzD0vd4zmjMtBTUhE6UaPstcMdG4SkUzBLocUkyKfOlM8RatvhfHC4LIdj6rN+9HipsaC9IUmN0ChOvYXBbRHQKHQvYFG9zDj4vfXlgq488lfRZmKi0QrIaI8N+IrtJDGpI2g99hsXwRbCa2GIvrBceMdI+ztJsgmmwSSd04biQS2V2iWEyCb7+mLrKme7EfAe/Cug7zM94aZ8C45HHR6pi2+KMMbYae3q5DTn/LVyQWcSicQ2rGZFsP0kk/KhsoXgm376ns1xxbbU5Q2LbaKEdn8+BPCYDY5LKVsUQCX6UWoEkDJuJeLC7wi0eTlGNY6euuxyYno6vROmy+7sVTKZTLlcLqfb7Z5xX5qqA5UT9t1OyWhckShzPODAQM9GAfO9Ho8HRcijatJorxh3NPbXj0IYa0aIIDZznMxrWOsLAqwG+IICY01kt5RPscURK2yIkzhgBSt/0ukozhp6kf9TKy7epv8lCV6O/L5eV4sKhixOJFVnesPz+WrQ50WUeCdfG2OXEeyjso2ta6bFsWo1xkFSL5NRJNMd3p8fIwg6j2WwIOMV85b3qWkITEeuxL4WWlVYEhNye9r34rMOks4g00COR0i/6W8YE4YZ/QekRjkB3QeNaKvErDrkANy0K1HgsxjbANdM9e7zfx+cj7mgKuv1CbOmRJYcUv+B5UMFdwHsQM/98Xh8OAdyjrQ2COIRmFmw3ZLqGY3REvIHAAD//6UDjRQAAAAGSURBVAMAVhsGi2RHiq8AAAAASUVORK5CYII=">IT Tools </A>
<DT><A HREF="https://mealie.mikemcfetridge.com/g/home" ADD_DATE="1782405310" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC9klEQVR4nHxTTUwTQRR+MztDW7al3YVCkQpIMRr1oiejxhj/NfFgIiYmRo0xJmqa6EGjIrKgCPGoRq+aeIKTGj3gXyAaOajcjIkVaEEFCi1/WnZ3dsbdlUaM6Fx29733ffnet98QmDsCACH38ffJ97Knq0N6iKtlkBoADYRTw+NtlSsn22Jx58MZ/Bf41bmSAC8j3ZjSA0gDnu9h3aTxokJ6Y7wl1uCSaIDnEzi1nrhatEIJvSYIeoeHxm6PXIndGzoTVVwFBGD52DRjhODmdEuN5rA7JLYcV83b40pw2SL1iQDxLng+cSRaGe6WCJIyOZOMXokuxQzEew9FZErns14qNaav1jS5EptcArS4SrkdlMl6g8F0tnVpJ8bQc+JC4nBFZaDLEgUHUbqlqhwh+lTCaOV3Q8yGvMib062mcEOf9iQOnrXltT2Mo1WyB5GcyROjoxMbI2WhZ0jAG+Vi4hgO1ye/McvcY1n8UyFF3kyO50Iyacy01l7YfRP0WdN6HPAiks1xZlgQiUSUpO1elwN2VsTOvpGGZD8zzZ1ciI+lfsk3o/MkFfDgi1azNeCTTs4YfMhDIBP0Yb8Q4pZ6MXFSmzPbNcohcfYePB+tVYp9d3SdH53S9UXFfl8X42ImO/FjTVClsoxJue/s5xfzM4MWCtKAVrU56KWdhiUYtg0SnNeXXuprWyhwv/953a/3fq16Z4lc0Mk5JJnJ1tmljrDiaR2xc+LOaX+GzQWJOpBQB1ipy9U7wnLBQ4tDv2kY2yq05PsZI3EkM2m2lxbR5uGWWH0+J3kCyZX0AbgDLvbbYCFS2Wlje7Q51f9yE5DVd8E4pGYeUjW0rKSIxk9tCDL/5Wz3vKQCjDTF9so+qZ0JkZzM6tur2lJ9eWPzO7fXQcGW1bX31QCpS0+ya2GWaLT7liuFUrRLwjAwMW1smw/O3wWHZH8HGM97EwfHptgjjMW+DKiFzvaugsEzUZ+gSKm8PvjVHsZ2kcN/bmVFIZKXaOlhp/4TAAD//xTX1i8AAAAGSURBVAMAozhf/qTi9y0AAAAASUVORK5CYII=">Mealie</A>
</DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="0">Laptop Docker</H3>
<DL><p>
</DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="0">External Services</H3>
<DL><p>
<DT><A HREF="https://proxy.mikemcfetridge.com/login" ADD_DATE="1755039432" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC+UlEQVR4nHyT22sTeRTHz+/3m8nMZCYxTW1ju9nuqisuq8sq3YettOzi7v4JKgUFr2++iaAPQt5Eioj6qAi+CFofRX1QvIEXxHqBKhi12qbTpmnSJplLZub3+x1TLwHReuA8nXM+58uXcygsEohAZk/+/uvTratXIwBZrO+bBbywviMSuDmqYu/La6FIcnWkU2UXE8OPS98F4N0+A4z5jXKeDvCCAjzPGmFRLoUqXUvmlAeybN5yp9fd+LFwzP8CgJijtXK+15zJ78BqtV54jKlEWevTK2pRlglrAlbJIrsSuMvnHLIi6Xf/dGbNX/YjkstJugB4Pfnwb86dYRnXUZTUtVqg7AGHZps+vOEh5kul0JxylN1jrljTUC2oNsTw8PXOgYVZ5YOC0MmGQk5QL6LAlX/TGrkUhmTISiXv3XzSrNuFcz5fsl8Q8l/oh2cqJhRcAj+0AF1+VehR9ATHlf/BI880U93hT4WJ2oQztE4ygGXZ41fGu7YDN6/6uvtPrCd53ZJCtgB6mxagzVysyy4IM1NAlrkUnuXQJXtlIw6Bs5xO20sOtHcHbmC2/TJZKLmVwGsszH7wAJxm1jAm5wnjsx/dlT4l6KhNm7PNNRmAbAF4Mg3cSIAXSfRDAS0Ftbt+TKekH0t0VJZnSP1dxSRz9ChGpgAtKw2j87ip/mzKmGCcwZ14uo3FoU2HR58A+XwI7Ux93lVndayS9d5scLY45h+prIzvA9CgPZ7YkMboQDkQyr2p0dcZ2WMttTp4S4EV0GJCMBMa5JVfl+O2HQwqSveGFZO958tWingablE7jWTl7cyozpJp6sbUgEWlFuA36/lNv/qnIzy5jXpkwnfIqXa9p5+DOdi8BaxxtLmlXfBjQA3FULBBT8inMyNfn/KmPqM2LTYiruwP1V6zVGPBmOBgx2JakIq7AcPbzgv7Ru5trvHNX/gc9YGDHbMiMzjpyV333WmM9PjpTKrn/M47O7//TF+oASSX/zi8aqQ+h4feDOUX63sPAAD//+0eCf8AAAAGSURBVAMAWf5+VGKHtAkAAAAASUVORK5CYII=">Nginx Proxy Manager</A>
<DT><A HREF="https://wg2.mikemcfetridge.com/#/signin" ADD_DATE="1754834581" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAACTklEQVR4nFxSS2sUQRDuqn5NZn1Fs8YXa4xhhQQURDBBjc+DeosIwYveAoLg3YN/wl+gIAgieBcEQXMTISIIPlgMbLJkIWE3u9PdM91lT4zx0cx8VHfX93V/VS0e3H9sueqByKXOQDqheyALqTpBOKm90h0SMSEo3UflUGLi3QDlg4pp73ZwH3G3DGjt2KDYlxB39sg2OpCEIjMD3umQ82unrgLCzOxUe3l17vZUo9G+cXF0dHjgyvE99apOJd07NzRdk7s0f980iQBMyVN3vbfaPX2ylkiYnKhuT/DocPro+afVbjZZSz8u9u4+bcyO65E0gLOYBJcUrt1YOnNh/M2rhcvn61++tiCEY/vTsWoyfrCyU8PZkUrmAhmTUs5vnpgGAGscaPXh3Wdd0fPz35utzqXJw8127+XbxYnajvpe/WS+1ewUWiA8u/PQcdVH2cmBpZW1EtMuiQyl4SoWrQ9yHWTQCWmdoRIDIaYwYown2oQcE92nHDlqQRZDxguNPBVkMO95iHkiGgBREuIgTpSzwEOMA1GcRgycbSB5DhgJOjjmSwKwvwf8F8PvSMQqbSwgIAIVQAgMIcC/AgQU/zIS2udR3xvrQXChERVyJZPUc81kvMGfU8iXXkVseFSrTNR9WoluchSOy5XlNQuiY4kVdotTXrs0nRum1KG5W6o6FLwnYlyKhRevjc1/fGu5lXWGuEWIFFi6PmNBZlFepwbLh2lR9V2wQhsQsRUGlRGyRFRxd7OsrNeFvgnxGW98WiZRkHj4VW5WxDZtOvkJAAD//0EOnswAAAAGSURBVAMAFIAdTuYksK0AAAAASUVORK5CYII=">WGDashboard</A>
<DT><A HREF="https://vault.mikemcfetridge.com/#/login" ADD_DATE="1754834849" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACv0lEQVR4nFRTvUvbYRB+3l8SUUGJJjro6AeK4uKiGA2iiJNDipn8A0JH0UEK0qHgIDg1LVi7OAh+BVHBwW8rdRJEUcHRwSFNSIydzMf1nreJpS9cfm/unrv37rk7B3pExKfyWeWX/DuF5+dnofD+piwUEvr5ouKnryleNlSCVCSTSdnc3MTh4aFJJBJUwe/3Y3h4WEKhEHw+n8Hf80Plncnn81HHcd7rn+zZ2ZlrcnLSuby8pJN0dHRY8O3trWgw093djYWFhcLAwEBe1R7N5pvRn6QxxqvOGB8fN/F4HBMTE1hcXDT7+/ssDyMjI4hEIrK8vIz6+nqsr6+LBqHtN0uQdDotwWAQDw8PJpfLoa+vD0dHR9DMUDpDQ0PgIx6PBy0tLXJycoKamhpjEWtra+bx8dFMT09LT08PTk9PcXV1BS0PmqG9MyBtU1NTQix96Otks1k5Pj5Ge3u7MOLo6Kh9cWdnBy6Xy2axu7trdbQRQywzoK9hm5RhaBm4uLgAOejq6kJbWxtIpvIDknd/f4/r62vLQW9vL7xeLw4ODuBmZI2ExsZGtsgayAHLUPbhdrtxc3MDctTa2mqzIpYP2hIqKiqEhru7O0mlUlap3XgrY3t7+z8dMcTSh76OsmpYgqZutra2hC+MjY2hsrISS0tLbKe9U0cbMcTSh76uj3qamppkb28PsVjMlJWVoba2FsoNzs/P7TccDqOzs5P9x+zsrGlubpb5+XmUl5cbR8cgpXVLNBqV19dXWVlZkdXVVQkEAvZFCu/U0UYMsfTRk+EgfdXSIqVRnpmZcdiNqqoqyWQyttfV1dXy8vJiyP7c3Fyhv7+/oN1x64x8Z4A6xcRUAgTrzIuWAp0N8/T0ZIlraGjA4OCgXSbdkdIy/VQJmeI612m0Txo1zL0oAuyrvDAbbm4Rm1bZ0AH7oNj4HwAAAP//O4Db/AAAAAZJREFUAwBmaqDo7blb5AAAAABJRU5ErkJggg==">Vaultwarden</A>
<DT><A HREF="https://ansible.mikemcfetridge.com/project/1/history" ADD_DATE="1754835475" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVR4nFRTTUhUURT+zn3vzcwbp9Q0kgkGxFolVvRnMZANtAgSWgWDhaESgVAREbZqK7iwWohUiJItWgiGRoHiSiiKQKI2k9RGpsSiSceZdN59t3PvG6e6cOFyzvnu+c53zrERHOKrzOvi5SSE6gbRKRSKcWOLVmWh/Dn4GMHjB/P/Yghbp709itp4P9uuQAgHxSKONDYqHfb28xeC67JLlUBiGD+W+jA1VdAwi69gsIuahkmEnLSQklQ+L9PJE5i+fYO6UyexmP2qPmQWpQiHLOU4rQhXHUUiPoFMRgr+wEfNrn6EQqeZ8gYRp/Q8K9Wyj2whzE21NJO2Gbq/ixtwOLa2oV9jLXRcagVZQyiVfKZrB2URFpeXcWxPE2V/5nDryVN8LxSZqyDD2JOS34fRfHCG0NEzCkt0cgYvKIm1JCa2uUl8A2HDIWKGCr72GR4SjmPD98ZsTtYGKbVYwvRBByifyLbVhbakYTM+/0optnHW4BPBGaTHGGrjX/y4yaq/oMDnrxfU1XNn6W5nhyGwoypK955NKxGLwScdW+6eQlxUJsA4NAE2cImJ+rpKhxP19WzzgwxbRykD5BIoy+QT/DYcJAci6tLA5HNVF4sZxABn5zkg6fsqSKZjWVDGsojdoxAWi1gqi6h1ZtxGibD6KxCxuppYSK7fL2tUFlHKMd2SYRbNMw7zMwM8idptUTV4rZcGr/dSbaxKQTepEkPBVCoMW/i4sIT9B3YiFD7OLDYt2xZqLU930udxs/0Mte5tMsDZN+9guS43g4ERN8TZhzD+6KEwg5Fb6eNBmmFHWCmjpFwtFNSWXjn9JkgjQCQS5vmYQe5bn8ZaRspMpgRn9wTq3O0ceQiRsPM684lWVtfUi4X3uP9yVvgRl4eAPC53iME95WWqbOPfdU53JXkyuzgwhfx6MCOxbVlYNMc2XueR/9b5DwAAAP//IFmdeAAAAAZJREFUAwAvDTJTWfkTagAAAABJRU5ErkJggg==">Semaphore</A>
<DT><A HREF="https://ns1.mikemcfetridge.com/" ADD_DATE="1750943810" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAXklEQVR4nKSSAQoAEAxF0c7KmbgsihbGmP1S4n+eGfiYjURQR/QXU0jdUyfOCAUt14THPCGNPgbyC4mKUuGd+8DiG/M6JL4+a4BWZptXIPE8uDu94fRfuP7TS1ba3gUAAP//RAmYrwAAAAZJREFUAwC6HBoyqWs03wAAAABJRU5ErkJggg==">Technitium DNS Server</A>
<DT><A HREF="https://immich.mikemcfetridge.com/photos" ADD_DATE="1754839177" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACmUlEQVR4nGRTX0hTYRQ/537f3G66cokp4r9SlEWBSg1MRIvCoh4i8iUIwkAwX6Ikkop8kR56CTGyJ+k1CCpqFUlhCRrYjCTLTMMcS7cSdMvVtntP525zbNcPvnu/c+45v3PO7/ddCaZFABhzbm/kdyebtQkXTCBiv2VqbsQcj2ZHxFlWx+77vCtMn76SDq3W6e8f051KqnL7uIWIFNChhq0y2LiqUFAzEQhygzWjg1+X3QcQqZMAs2QoMKKO3pYYWjoDqFRmzJYX7ZbXvFUQg21s98ExeCmWu90NgDTIIfsYrYqyspsilft1Dh+UgWk7IJYnAVbE3tAQVofb+FzLpRvhG3gkIVxkx440Gi1A1PLPebRSzy3pU8cGIuw8BIRflPpVO8fmJwPL+XxB4eBm87BMTFAhWtCKan6TLfc8J3soRx+Gglg9J6UT3yT5YU8jJMKIr97K/EfvRfbDnp5di3FlSivaZZvfxckdplo5BsBn3rsF0OJPtN49rbrIB9ZTFsBh9scBLPdmZyEMvayQ3QTwSXJ7XQKp442S97rTVtPAzhOMGtRs/s3FC8Wqt8QbhjU4ztVZXlhN6AF/jGTeN+LztF73lY4JxwAiHEnwqKxRwfCl6M6bzUByrlZb8ddpy1RIEYoyQ/PCpqGOT24dnJwzRoBR6Whh4g6nGkPahMEKQ2vjQp30iC3auHCECSjCFbkO2PjMUk/2x28iXyI7ZFxr7jJcVE2gfkiSKwToTBhtZa4cTLTKKuUkFeNwFEP8ms+gh4RLCbimAPUgbFwLAvBFCsB7xco/CHVlgKBeJmfO8oj6U1PyvEG8r+nZhGHIde+Pq+qD8t6wVyc8x+YeTpyBv4XPufXHGiAXJCfL6CEBd5Ya3O/W8/4DAAD//96YCi8AAAAGSURBVAMAGTf4WAOCMh0AAAAASUVORK5CYII=">Immich</A>
<DT><A HREF="https://homepage.mikemcfetridge.com/" ADD_DATE="1754224826" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABCklEQVR4nMSTu2pCQRCGR0nShKTOM6RMky7pQt4gNkleRFLlDYT0aX0AwU7s7AURxAvi5VzweN+d3TlHR1HwsqvFKfxhi9md75+ZXTYJMZWEmIptcLUblBrjf0HwNdYhjFQEAYbr5fPyZAi1llPoVutON5NKGQ0YfrLBviTw3MEdpz1YO3A5CcOFEXYEH5wbYSUbHAidoAg6fGnCatCcaB4jMsIKCUbX93+Yec+f7MAGa9Rg0t4ztmd6BTd8QeUNXNnCcq7OGzB860nKdRDfhqhfkRbPDGdt8NEIXHnGlany/djjsLfZ/rhJF6tKqjQEfTrZgSujvDPlxAOp35cfmAafYFACYuryn2kJAAD//0xs+74AAAAGSURBVAMAv0PsBQMOTlQAAAAASUVORK5CYII=">homepage</A>
<DT><A HREF="https://lw.mikemcfetridge.com/login" ADD_DATE="1750942431" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAACD0lEQVR4nERSTWsUQRCt6urObjImO2YTyQYxIfHgFyaHSMBAwHhavUoOgn/DvyR49eQhXrwqgoJCogublchGJKC7s7NuuttXPQFnapruqVf1XlWXlYWVGHz0E/Ln5H0M5wSLkShiZVcjFhZHIiRTbIyJbIiY2cBIF6yibmZpLKpXMQog5ID7ApocCjViXJ3GRb796OrT5zSZkDg2UkUCaS+gBLOMHEZCOXKt643N3XG/S7XpxCwVunr1zCm3JsMf6xb29n+9feWHf8DGIv8BbBORHqzKsw7pmw+elN87Re9QGk3Uri4tySaYqscBdMK2BnR2Y8vli2fvD+zsfNk/NqlLZFyKURO53NICDKO5dm7+ysP9nwcvs7U7+dZeDKF5/zE4xiddU59WLSJWucQjJozHMys3oaqxseOareLbp+L4KFu9Xf7oMtCQYLSZ7Na2KXqKIZk+c7fujXpH5Wlvqf1s2Pk8OPxgLzX0JlVbYiHwaNFWNzHUl1d9WeSbu8H7wdePKCaqZnhFJTFAITCHGAPuAXl8Maovr2frd/uvX0iW48q1ObjvahCiEknUBE6D8Wsma+60z969iUA6TBHIXWRbkVi2VmsAgfYciv7Wlq4NO1/K0xM7m0fvkVeHDWs1HfWNtooBPAZ8kCfZrB/8ViWUxpK4Gr6Y9hZIbJK+BDHkR0N2UzrexMlIYxIK4H8AAAD//8WYKOwAAAAGSURBVAMAEH/DrfFmSEQAAAAASUVORK5CYII=">Linkwarden</A>
<DT><A HREF="https://trilium.mikemcfetridge.com/login" ADD_DATE="1748610548" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACOElEQVR4nKSSTWhTQRDHZ2bTNE1iWhMPbdNCS0HxIK14EAUDSrF48GguetCTKIII9hARCtYPBA/Fo16KH4dSKKgHMfRSEWPFUogiQiKKCTY2SfPR5OXlvbe77osUcojF4MCyM7P//e3OMAT/aY52xKefHPQZYAyYjPehkF5JrITpSDBAJLwSUBgdzs2hqe8lRJDNF28uXRz8vL5ytmpUTwDIEZXyqeUkwE8OYDArJIyqA+4wjHzmzr54/tHYnN91chHDYf5weXr422Zy1uRWSGkAwaY3+FISPiMVflBBUK0hRHlA6KVzViU3X2Cx87ZKE9olzaiELG5oiLShUtzOo6T3xPEBWZbjPipS46+IuuTmhiivOaVejnyMXj9ucj5uCfMHEqWltEuVjBBzDGlq4Uw8zWbelPQrx7pXQNJ+9cIIOjoRXTvSzBMo626vSLjJBCF6XB3uvV6nj/k6/b+cDtfk03BsofHmVqMy03uG0dd/lTz+o9TVrSC+Jb2289XyLhZKd9d3c7BAgEwyyeYuH771duseNndbqrZUXl4L2D7/6vfycu2erNcHhMf9fG3MOTM6MVmF7eYAEYXasrZfuHv7CM9mJ6xUKssCgUh/uTeu0i+2BTQb17U+nsl4eD6vi2LRQ/nceFsAa73wRZSKGkjRIy0BPJd3tdLR3wCQSLwTdT2qPPanPvjZFqA3Gq0S4Q1ASqpQSKTVtgC2BRdfrxKwC5LoMVeT10qD8A+WOnWoa3A+Vmt19hsAAP//o3nR+AAAAAZJREFUAwCZmfaIJW0LFgAAAABJRU5ErkJggg==">Trilium Notes</A>
<DT><A HREF="https://auth.mikemcfetridge.com/if/user/#/library" ADD_DATE="1756306464" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADVElEQVR4nHxTS4hbVRg+9/2cJDe5mdvMnU6nmZl0ajuOY6E6XUmtFaaCG0vpruJOhFJBikWkm4IbwZVQFOpzUaS6EB+0iwYRK9jR+hg7BsZJMkkm7+d9nnPvPSbRpCDit/jh/PD95/v4/48E/4L28LFJZXH1mRMvvLyCMaZG/eTFq2HwHyCG9fRpSosdjXmOvY80rWSnXH2DN6t75MjEzUMLs1clWWRzu93E1Nze3+S5+dL1c2tbowHDHx5JpcKQiyVMwxF8ByloIuHZbPRxZ/vnA4HVOxOwoRSvaau+ZZzK53et6t3b3wNwmQQg/bfE8uamo5486/qY0TENVOj4z2IfJiRWQqIk0zquqd2uo9CqrhMcTxe/kz8G4G084JKDsnrhgsBbRhJ6kDdb1pLfaR6RkQeAssJAScf5eotTgibPIQdSoT1Prl069nyfhgcqhgo0hIgyox61srnXg+L95yTHDojpJ4DQ2iBgIwM6nArKNu/TrotVeYLEyvTCQ0LoWibzJhwq2Jk/PkPTnIcCUGU6Zc/3aCz4BhFnm8Cq5QkEoc+IKt3CHHu/WAucnqERF69QYwtzQbZkMJEjJMeeIuwW8DxMsbACAMNgCCFQRKIRgoVLIdT4yvIxVTRBqPL1rZfGA+4Jy1HC7YlEr5khEymKdkrYrOQBK4WBNLWASW2/amtzyxvfrp+Pdrbe93f+oHOZanh8B7Fzry4iMra/t/nLh3JUj/FW3sOdJkWHFBzVNAD4KOiKcTIiUjuNH++c1xWKvHvjnc/61GCoQJvl/qQqRUN2Wh2313aCA0/RFC/ibrtDthoNvI+HYFoioKCn9soHV17rk28MyONDqqXTfWcSL9BkI2hXWVeI2vGDSwoqb++69d2Ia9p4SpsktosVEJ+Z4Yq/Z64Bo2wNHIxv3a9Hu9LSPCJd0yKNwu2WPPWFMpsqTbL+l4YcO1HL5X2yvEWVsAjYw0+/565/2hwMIB/EYh0dRjP3+ibe5RNJPGvkPq9vF74pMdpPi0n9RUwgxihtAa++A4PHjrf/IT1I2wDZbDoA7axnLr+ykQhbWvGTKz9MJA4Fv350Mx2JBDVEi2sOF/rAfuvs9dECCPC/GATmcjB6xR89eYar9m4VCneao95fAAAA//8hVRlcAAAABklEQVQDADBZjXzyul3hAAAAAElFTkSuQmCC">authentik</A>
<DT><A HREF="https://semaphore.mikemcfetridge.com/auth/login?return=%2F" ADD_DATE="1779546326" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVR4nFRTTUhUURT+zn3vzcwbp9Q0kgkGxFolVvRnMZANtAgSWgWDhaESgVAREbZqK7iwWohUiJItWgiGRoHiSiiKQKI2k9RGpsSiSceZdN59t3PvG6e6cOFyzvnu+c53zrERHOKrzOvi5SSE6gbRKRSKcWOLVmWh/Dn4GMHjB/P/Yghbp709itp4P9uuQAgHxSKONDYqHfb28xeC67JLlUBiGD+W+jA1VdAwi69gsIuahkmEnLSQklQ+L9PJE5i+fYO6UyexmP2qPmQWpQiHLOU4rQhXHUUiPoFMRgr+wEfNrn6EQqeZ8gYRp/Q8K9Wyj2whzE21NJO2Gbq/ixtwOLa2oV9jLXRcagVZQyiVfKZrB2URFpeXcWxPE2V/5nDryVN8LxSZqyDD2JOS34fRfHCG0NEzCkt0cgYvKIm1JCa2uUl8A2HDIWKGCr72GR4SjmPD98ZsTtYGKbVYwvRBByifyLbVhbakYTM+/0optnHW4BPBGaTHGGrjX/y4yaq/oMDnrxfU1XNn6W5nhyGwoypK955NKxGLwScdW+6eQlxUJsA4NAE2cImJ+rpKhxP19WzzgwxbRykD5BIoy+QT/DYcJAci6tLA5HNVF4sZxABn5zkg6fsqSKZjWVDGsojdoxAWi1gqi6h1ZtxGibD6KxCxuppYSK7fL2tUFlHKMd2SYRbNMw7zMwM8idptUTV4rZcGr/dSbaxKQTepEkPBVCoMW/i4sIT9B3YiFD7OLDYt2xZqLU930udxs/0Mte5tMsDZN+9guS43g4ERN8TZhzD+6KEwg5Fb6eNBmmFHWCmjpFwtFNSWXjn9JkgjQCQS5vmYQe5bn8ZaRspMpgRn9wTq3O0ceQiRsPM684lWVtfUi4X3uP9yVvgRl4eAPC53iME95WWqbOPfdU53JXkyuzgwhfx6MCOxbVlYNMc2XueR/9b5DwAAAP//IFmdeAAAAAZJREFUAwAvDTJTWfkTagAAAABJRU5ErkJggg==">Semaphore UI</A>
</DL><p>
<DT><A HREF="http://192.168.0.59/index.htm" ADD_DATE="1748783654" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACy0lEQVR4nKRTW0hUURRd5z7mrTklKKVS6mCamQhZRlrQh5Dhh0l99CFR2YfVh0GYZGpgRhGaaRQiQhD5YWgRoShJH1EiYpqPfBsqmZWvmWbuzNx7T2eujSj1VftyPs6+Z621zz5rc/jPENZv5lx0h36xqcmi1PI8pjccpBIPZSiAimm1p0lQbLc/T9YfutO79Cxny1CWCBV6pR4G5QnLSlAmLJAHghgLICbHdfIpLSmEEOrDcH5wz7x0tOObJ2uVlkDiz8AZ0AJ55CTkDxYGJpocWerch9nGXD9OI6CUitWjjiqOAdkGhBNg3myDOTgNYvpTiNkNIJZQQJUZA7vKaEkpw+jXCNrn3GdnnDRKZkXpAsLAmWz42DcKSZI0lYEfZrgym8EfLIKHmkCkmRB1oqZQI1hw0ojqQcftz26Kt8sqRHMYZqdnUH69EHU1Vb7qUFFehpHRcSAxF22Ocgy7M6COFF+ljokEoXx4ufL1kmyxK4CRJ79bQGA0mdHb3Y2eri7o9DqW40Coytor4JOUiWnvfjF+8PF9YZtR8Jh4DnZF2fAoHMfh0pUCVN4qg6L9WxcchbxogTRsFbhzMeb8ApvFnhFigJ6scvjK9ng8sO2MxYG0w7CvrICqKgMSVgVFRNs4kkveeMNPpedpkn0LnvOtX+SHLq8Xqd+7kJiUhOmpSezakwiVqQ/29yEsfDv6W6dgK30Ew4ob+qITN8wXjhVrr7DbKtYHiJjUM4X2l89Re+8uDEajdg1BFGGkoajIeYGGsg4IThlkq/WrKS/j5pqVWdM8YytyfuOU3OQD2ZeXUf+gCnHRCZDGw/C+fQSCwEMUOM0nhsLj1xjGvcGJ0YFCc6SJtGrGYp91Mhg/a1xQXo0hnPI+nM/J4PZGvTNkp9b9dZiOhOsuLwVHWjcNBUInMqPFr+ZD2Ipha14nI7Dw0EX/HPwxTP8SvwAAAP//ExTeHgAAAAZJREFUAwBgWxfAc0obGgAAAABJRU5ErkJggg==">ORBI - Secondary</A>
<DT><A HREF="https://192.168.0.1/login.php" ADD_DATE="1748783596">ARRIS - Main</A>
<DT><A HREF="https://dash.cloudflare.com/6116fb596da5d78d170f330fe4a34d27/home" ADD_DATE="1781733810" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABSElEQVR4nNyTP0vDUBTF703SoKXaxupQq9VmM66igw7iIgiFbkIRQXCQLv0C4u6miB9AChZddBEhKm7i0tKCCiGT1D9oC6lRIalJnjFih9aSIYPgDy487nvnvPMuPAo8QoFH/t6AabdBCOkwr4+SZlUWsCty5+Nn95Hjas3n8Ffxe6Vfyy6I1rM02mgG+p788ztzGBUKbQ3q5eI46q89Zj6bNiUx0XJbmJc702cCIhotBoZ0mtT3lg/ABTa1tYls4JIenD60jTRnBkRVe/WT1ZSbmIpPApSPM0S5yRjybomQlxn8iv2RWxRBU4NOJG4IMDQAQLOAdgHjc9ZUKAbMxBKQah7I/TmQShEgnlhnrIvttR+xk0a5daoZK8wDPTIFVmnDHpb6/X5FGsN6IbdCag8xt/jgDwITiYL19thoYffwFYJH/sFf+AQAAP//NSy7bAAAAAZJREFUAwDo8m/0S1zkagAAAABJRU5ErkJggg==">CloudFlare</A>
<DT><H3 ADD_DATE="1782841889" LAST_MODIFIED="1782919109">Edge-WAF</H3>
<DL><p>
<DT><A HREF="https://192.168.2.20:8443/dashboard" ADD_DATE="1782842358" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB0klEQVR4nKRSO0tcURCeOefcu+4moIXkQZpAipBASJogJKRMYYJlFpJfkMIiELBQ8YkWi/ovtBMbRbDQRlRQUNFCtNNGsPKFq/fcM37nro9d77UQD1zO3JnvmzPzzSh65DHXRjz4oUuIe0Wkn5mW4GrWzFNJTOQnrmkmagIGOOkO2jf6ahIQgyb+phxAXwFutUJHSYi4FaEjEA38pDz2bgU3eYjbbm1qr7U51YKiR56bCpxRxI4Ohbk+E8kUo0VhkWOnMhJQw1MCYNw5O6WVHkai19V8iLunHP0nA0FFZbcgTD9Cjhb1iXuP34Gq0EAA3zmXF0FuzmyBngQXkPeF5XCXGnjnrEzf8jnpSEDqbCSqL6yGkn8jknDOUxVMmLkSRlkipQwSvQvzrpE0wppBKTRicm+TmOaS2ZotpSooFim208G2cCVnzom1ToYqz3CMr6KluG3uIZduwR+tD6D2SmJHqmxaJts8TWa+v2SVW4aQWDZgMjXw/OfhknWFf+bT6EK0/udzsPYrWU6i4JX+ONZk14pftIp2qjk1U4jjfAtenD/d/P0MI5txLvjrvxi29zEF8x5zbwXoU/yTdVbt+62F2XkdqrO8T1cqVFPSy/3AcwkAAP//A0d4ywAAAAZJREFUAwBhIqU49UOZtAAAAABJRU5ErkJggg==">SOCFortress WAF</A>
</DL><p>
</DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="1782826649">New Projects</H3>
<DL><p>
<DT><A HREF="https://awesome-docker-compose.com/" ADD_DATE="1755088848" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACU0lEQVR4nKRTPWgUURCe97O3l58zkSiJYkwMCCEYsLQQOyGNVUxh5y/aWBhOsHMVrIQUBsHSRpBoqxYiUUQDphAhSRXlckkRLpcz5/3kbve9GWd3zzR3Z5OBt7tv3nwf33xvVkKbGJ7Njw4//X0a/hMP5+rjsinrUZQTZG8oQffiJIlWBLiSWNbNBA+il0WTowAaQEGtCIoHNtwWCu7HEOkooR1n2KNkf/pHFzze7IrUed4exoweQw1tQnJwGwfFQOFFCgfK3dLp/3lXTMQdcUus7eTqKuiIcXlMwKspjA7HwiMSQhUq3MeOAMozVdWy4pEnW5eM9bNZIb6EpYUU17VTcOLZdpoJRkECabBVq7SWKA75BhfQ0htpE3ZtujcjRmY2x8GBayDVEIQaiB9My9QCMWwX+VsRKGWxXv5GRFp393lkat+Pl3YndcqlzyWZ7AFruJDNVg1b0LIPkZvcMgEDQKcOT2J1Z8lUShOgpVsRgdGBxY9g6xfQ360LpRxG1Cg0CTApGRd7hoYVuFj7Uw58urqePrIY5p/Pz2udN2a629FnhOP2s1Qfg+C8EdpNuM57rBZJSOmIzp5QVs5Wq5fX04OLfJ3hHj9lMlrmpod+GWsvMkFWdvYkpFI3HUXXZaLTkV29CdBunYz/mkrFc2vpwXfxLAjDC7dLhqXGCRyc3ToqMbgitXuWr06iX8uwj0u2I/khe6tvJR6yuPbfTd1+S258jeEseB5C26CWI31n5muHbBBgVDRHKpqycE3Nqb19BGz+HzYWNnwB+4hHL0un/gIAAP//KUx6GwAAAAZJREFUAwDWHBMXQl0TagAAAABJRU5ErkJggg==">Awesome Docker Compose</A>
<DT><A HREF="https://zoraxy.aroz.org/" ADD_DATE="1760540019" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABk0lEQVR4nKRTu0oDQRSd1yYmoPkFES18gRAlmCpBIYKlxNJKsFD/QEJae/0JJViIaCBoIb4wNkp828VKEJEEE3dnxzlLNiSaVdSByz2cc+7szJ27jPxzie9EpRRFppQqLw9twTEdtof/i0Y9jGRPKfF6Z0WBO3rEYZxSy2vHptU3mpiIxdIiRogUQs0ggMFB89rAyf2RxJQp6fZT5XgR957s8s0igMFBg6exxt1A3yvJ36z3JSnNiuI8D3KjUBpDAIODBg+8pNYL5vZhIFrq1NSQ4Gz38mBrP3NenuP+YA4BDA4aPI631sN6D6RthyjjhDHx6AiCxblBCQLY4bQGD7xuXX0ODBYsVuVLVbc6jBMzgy9bpjXoHFNjcJZphpWUVcPfXnTraENW3SPja4TwpMHIwtVJdpU0rN5IYt60yQqx5fr9WW7arWl6xoAIpBijBdsmD3mljEyhnEYAg4PGfIFUq2d0RvXiaPO6LWRHbk6zO8OUmroDzwhgcNButaex5vMk0prg5h81z1F2PvHHn+lX6wMAAP//laJMlAAAAAZJREFUAwBpQ7W82fVFJAAAAABJRU5ErkJggg==">Homelab Gateway | Zoraxy</A>
<DT><A HREF="https://netalertx.com/?ref=selfh.st" ADD_DATE="1779738159" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACi0lEQVR4nIxTTUhUURQ+580dledIkGHoLoIQhMBZVBIxCjEQtGvRIgmaoEXRqjRGGnUGrdRlVESUm1ZBm2qTm9GRVi7cBuGiFioyLjLnjfO8756++96bfshFB+575557vu/83asoEsYSq3zt7Dzve94NrfWgr/URa2tValspVUmkUi+ObW19JGZpYjgmIOnqOrq2szNl9vevSRAkrC0Rk2o4W0d2HOO0tb0+7rp5rlbXQ59JImeRyPWMeZttNC7VjRHFbNaVoi+Ow5uOQw4iHiYKAhHq1Lr/kcipJa3fgF2HGbhETzyim3eValwgSs4x8ydj6EcQhNkdAsk5rHsgek+0P6t1qyvyFJhb3EF0dpdoUaJKnBSi7gIcbjgqViAhUSJB35EHVGMjp4gGba3TiNNvjRbjw9dFtDstLTwK/GXoPUrxKkhrEXGz4QqfpEKDhmKD0zxtiDDY5YzWYQaryaQ0okZKM1OLQeAhjpocgf8SlDKKiHWoj5EFobn0rxjnACOwIYA6ZmepfXIy1EPbAaKQwiaoe+Iy2DoaY7hUKsn9kZFwSlKvy8zMjD0TE/Uh9MXhBvpKaexOwhDAwbEOAFOhUOCVlRXZrlbpyvAw+74vy8vLYSYYimWx2Hf2s4XdVYrGxcVikcfHx3lhYUEymQzPz88z/pLL5SwJgUTiq2yAvZ0A+FuSqBv/04jsA6z29vakXC5TOp2mgYEB+DP19fVRNpvlIAj8SqXSAsxzdP8ZI6q9L+6D6ekP+bGxDP2HTJVKS4WJiYvAer8fU63W83ltbeLh3Fyu5nnKYOISjw51s80i1d6ux/L5Vyd6e4vYh4+pSfDrOUNsFtcpumDdsW0Dq4z1EmvpT8xPAAAA///9chjWAAAABklEQVQDAL0UJXttcY7WAAAAAElFTkSuQmCC">NetAlert X</A>
</DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="0">AI</H3>
<DL><p>
<DT><A HREF="https://huggingface.co/spaces/stabilityai/stable-diffusion" ADD_DATE="1754658458" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC1klEQVR4nHxTW0gUYRT+/tmZ2ZnVFW+rq66GiRiZWZmRDz1EqWhilG/RQxDsQ9BDQvRQmPRUUE9hJZRdICJfhKIyxAKXDLoJYZG0GVi4pbm76s7qzuzM3xm3pBIbmNs55/vOdy6/gFUvzpo6eUbrOe7Gfy72r6H7Kc/1b5/ci8mBFuhfSwERcJUHUdR873K/cv9IC4usShCa5dvyZ7q6WPjOVlifyZJIhXAn8VQCXv9wEG1Hy4vYmxUEX77xKl+k4yGiV3xQHQQgEP8dRR/GIrAoged3jI8y/56NpeyD7RLsx6HrXPFpN85i9poP6Qos5gQ3CcRtBg4zSS+HQqVwsOnza6tcgTM1fi4tE1xow2bM9DVCNmBxhpPdheh5kAtIHLrB0H6xGL1PsgAn9YP9oFrvtt48hU02VrQf2YkXdWCfHJAUMAvYXTuHskKq32QQHRwHG8KQRFJjq3KqQHLUWZkX2ULQl0sKsBjyAnFiF8Co/LoNGuIJAYZJLlLgUixUl5PfopYJFMBnqb/T3mUFUL1hmFTSPE1IlaDFZJy45MOaDBOxBQeUTANdx8bhsGMXFgC5mJQQxiYYfsezod2qR4RYRep0RIPHKeD0/jSoAR9MInE1h+AIRwGdSpBIRXwKPBxoJextNhXmOzzBtiHE+olA/dV5u73UDHcmvek/QmAmpnyMCPQYkHMAQW/PTtGTNlcEa5rGRCUI5JRlykJioxSUILmWPU5qVQaRGzRPnW6RYpLfUepBgUjzNSHTjBM61eWiHsipLCpl1OZTWd10HGQxRWyvXpLssgrdBBfHIvKzioL2QQg5u6CPECiK1AqWAGll1hLCGhMQC6XWhtE+ZDUAhYcHJ+YwtLTKnb08vb0F9e74qwZoH9fT6knIqX0+Ya7rAykuYSP7MP+2Dg7VgLvifVSpHrgawOPjjUxbcRpRQyuaR6kescRf9iY6UVOw8JoZf5p/AgAA//9dDLaaAAAABklEQVQDAOxxCiS5FJvSAAAAAElFTkSuQmCC">Image creation AI</A>
<DT><A HREF="https://toolbaz.com/writer/chat-gpt-alternative" ADD_DATE="1755121160" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACb0lEQVR4nHxTTUhUURS+59775o0/zfhLZRgpCbkpMUkQzMQMhCAo3BQlFlESFC5auDNchLQJgn6MqG1Ii8CoyMUY6FQQLlyIRAyYNEKOPt+8+X3v3tOdmR5NM43nbe4957zvfOc751Kyg22Mnt4XHRuo3ykHCh1ICFVOaVzvukpj5oQEiNte35W6hvm5QIDQ3gBx8vN5KWCZTnb7Ib1bKERDphphnEjll4WJtJgS5ohQT9AC708L9C0qoXNrpLfHGO3vwALWkMsmoA5ojp075N1efxAXOFv1ZGEydHtwTzXTymV4eUYXidYU925rtXu7KlffrpDp7M+C5wEhJqJNmoifxDTo6j7ZdG96PROMXDyyBtJpRSddTsq8CNNE/MPAtW8DB/WGlqY+Aew7cSwktjiD3LPL3t64RkWqHoEilPmmGOfLDsJK7dPg+yxAZKjtOeEa1D77MqwwsyJEho/eryGJW2ZKEFtKRU+ZCnoYJT5OiUE8i9XNZ49RFQFGmV/jvCannysvLc/wy4ia+wBckTMnQPzbwjhidho9d3rpYZN3IHp/MLTquS2HpJSabW6eBydVpUoRWuF7yT1lIYLOgu9xcAbyRTRu9vf5E79mIzZ8qHuxeMols3mpLaDb0eNJqgtobmmvmXi9RPIXCf8gMOThpCBz6vIx01r47uU6btmcrC1Vce4BAJZAKylxkDB3jEWr7Jpxo3uEJ2JjUkguuPZG0yteCbQN/6P5T/l5RavsvgUnbnX6RaxRqGXdJHqw+mHg3f8K0VIMKOOfTcE3TMlWgfEQjhOKJ4oLlmxBTR1CF9r300qaPjD1NVwq7zcAAAD//wVaOBoAAAAGSURBVAMA1r8F3xBEDwYAAAAASUVORK5CYII=">ToolBaz AI</A>
<DT><A HREF="https://gemini.google.com/app" ADD_DATE="1754665497" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACh0lEQVR4nIxSS08TURQ+9zGPtrQUFEFajAswoTERU5PSjYHEhZCYuID+AGOa+GLhjkiwwTVsjCb8A6QxcaMkbmAl1HdADaa4QEoqkAJtp512Zu5cZ1ofKAU9m3vul/N995xzPwqHhBIKNdtnXSKxcVANrgXyHzh2yXewp27YzqcBSK1adIAAgrBfLroDyR1XM3B6tKMtPlGyYP7PDngQBEuV5z2d18Hd5Ns81uWb84Wv2eRodFI4tAMeA4piYGQu9XRjT+vzVUe7c6nxHCy7TxdW6JELj4brX/XEOJ2LIeMPgZ9EO89eDXUbDl885Qj43wtn2Qe5E76KJ8kOEteymhlJjIgLFaYlBJbQrw74IIhqd/vNgt40lpICrjcozJZZkHwxTkDGdDIdy0TnoJjcHH1bxg8sslbpQHkKLZQ23AZNvmwyZ8cya+Hv9KC5VDpPVtUunik0Q1GTEAPKACGMRUCmDknOzCcG4HGKiBMxCXl1jygoThdsKAKk8ias51TI6gXQiA4cSdWv4RxZFzsXMMJeUwNEXReLaYBiNJkMSaqxc4N75TFZLLmwvsm4ukWAegETiQEXiGlyBcrmaP4bfrhyH5XtEWhl/mkgqGPGBiaefep70eguxFv1LX+utM40rd56up5gTV9Ti0JkcQRXlzjICcQRq/gARYDZ5+xsD+0PzCyQsjbgduzmJE8KjLo0cGc6j2lmYHEELVS2b4dF3mek3t45IzoZFK6ceZxIq8o95tkmqnuD5OjHu/NDx1/C5GsB9nhgn5F+OwpQODUoFz83JHdVL1sl/lPQd8ta2X9YuRIRwPNtcXXN0KdyQmYK+ofKEEE1a2lNgXh1J9ugj1uvsr3Y3/EdAAD//429n5gAAAAGSURBVAMApnISZcw7dI0AAAAASUVORK5CYII=">Google Gemini</A>
<DT><A HREF="https://docs.anythingllm.com/agent/usage" ADD_DATE="1755372780">AnythingLLM Docs</A>
<DT><A HREF="https://www.perplexity.ai/" ADD_DATE="1755300643" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACUElEQVR4nJRTMWhaURQ9+TGQBCK62AiiImrVBseasVEzlIY6Nk1TlIwlU5KhWSqFFBtCCIQuqU07mAabTtqhoyAI6SSI1sEO1QqKDqYKFqP+3/duVLTt0By4/7/37rn33XveewKAKLM2M+maxmOiY+xzyWyCGaanpzE+Po5Go8Gn0Gg09C8Wi/SfmZlBt9tFs9lED22hH8xhsdzEwcE+TCYjzRcX3WQcRqORfJwzhAlheCaTTcBgMGBzcwPz8w5WjUAVORwObG1tkI9zRmL6A0EQWAtTSCaTODl5j9XVR9DpdOSzWi04OnpNa5zDuaIoko9rIMlkMmxvP8Xc3C3I5XJks1moVCp4PB4iRSIRVCoVlsiKer2OdDqDQOAlOp3OVQW8TK1Wi8PDV8jlclAoFFhb8zFiGmNsi2q1iuPjd5TEbDbD5/NSzCABydm+RKlUgiSJ8Hofs0TfUCj86PnaWF9/gr29feJw7qD1/kAUJczO3oDf/wyZzFe241u0Wi2yYPANEokEdncD0Ov1g/5HEkxOTmJp6R7JEg5/oDWlUsFMSePT0zDK5TLcbhfjTo2eAu8lHo9jYeEOE6nB2pCYgPexsvKQSFyXaPQTXSK1Wo1YLEYxg1PoZ3M4bmN5+QFrIQO73Y6Li5/k5qKmUinYbDacnX3E+fmXv1u40kGE0+kkpf3+58jnvzPL09hkMsPlco30P2ihj2bzF0KhELs0QXoPUq+2Wq2GnZ0XdJycM4yRx8QvVF8TDn43OAqFAv7lZ2jzBPw53/2zmv8Az/L5NwAAAP//oE7mDQAAAAZJREFUAwCNjvrsBRWUZgAAAABJRU5ErkJggg==">Perplexity AI</A>
<DT><A HREF="https://ollama.com/library/dolphin-llama3" ADD_DATE="1755121267" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC40lEQVR4nExTS0hbURCd+/ISTRQ/Cz+oEQwILkTdKFQQtAvBIBSKS6WCpdSKgpQuBdFl6cJNixK6EwQNVNBQpYogJIG6UxBBS238gpoPSfN7edczlwRyYXInd+bM9zyNcKSUgvIHeh/Ea5rmH9xZFugXuH9AXhb5KYzGP0II6ff77Xj0XF1d/drb23uNt5ZcLqezQHft7Oy8ury8/Amf5VAoZGeMCsCR+KGnp2cD/yfm5+et4+PjxuHhobRYLMQSCATkzMyMsbi4qMPnXWNj48bNzY2DsRxdIstnTdPcd3d3GZSrezwefW5uTnZ1dUnY6eTkhJaWlnSv12vCJ1tfX++uq6v7AtukjigvEPU9JFdVVaVfX19rq6ur0jAM4Xa7CcEpGAzS2tqavL+/1yorK7mKHBK+Bfa7howf8GBh2draEul0WrpcLrG5uUmDg4M0NDRE6+vrxG/RaFTu7u6KvD8HmhSIcgGlJZFIyOHhYQ2ZCOWpSWcyGXXbbDZ1Y8A0NjZG29vbpsPhYOxfbqEZvQgMhZxOpywrKxMLCwvU3d1Np6enhMDU0dFBx8fHNDs7SxigRJuitbWVK3Hqhb3CQA8PD3R2dkbV1dV0dHREvb29agtYK9XW1iobB2xqairAFA9CzIvS0lJem7BarTQ9PU2YBT0+PlIkEqFsNktTU1OEwSnalJSUMAd4Q/+YBwf8iOwmypft7e14kjQ6OkqxWIyenp4IvFDgzs5OiQSSfZkDWICfmfYNxjeoQKRSKRmPx7WKigrZ1tYmIFR0ZDgcFrCb7Jvnz1cNE/6NSCsAWex2u+Hz+UyuCDxgByWsc8b9/X2zpqbGYF8Go5qAojII8hE9+8rLy22YPk/X4JILVGYdGXNsQ/82rNd3e3v7ibEal9LQ0PB/YGBgBHtexoQNJglAHEhJXreAH9nz8/Pl/v7+Eaw8ydjCZ8y3+rqSyWQfepyA2gdpztt5UwfYxgpaDhZjngEAAP//vU1PSAAAAAZJREFUAwDmXpxWfKhH5wAAAABJRU5ErkJggg==">ollama AI models</A>
<DT><A HREF="https://www.promptcowboy.ai/" ADD_DATE="1758028565" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACSElEQVR4nKRTTWgTQRidmf1Jdtlkk5Cmbawk/UFtLwlC8NCL3rQ3aRFB7FERpQc9iYduoCB6aXsQBYUiKLYN3rx6UtCLLUUJSGtRSG1T7KZxk012dmfHyUoOltSU9jvssvPm+957O28QOGKhdhsoAJAuLnKUAtgKh60aoPdiD0ohK7oXB41pbL2B8y0meg0aACLbhNenphKhk7HLTr3yOnb19pqHM4qzAPAMd/gmE8hmIdQ09+e9m4lwaugJCQa779h4HXFcRlaVHuObOcaGDl97PtMV6Qg9pbyQru2U5/i/ajyZHjMXCo76oXu+XjUt9pUCnODgIjZE5D99fXryZSSmnmACklgvvSEVc4XJALTw6GEaIgKP3bi7XNvS+3YdQDg1bCEfT6iEXeIyvaKvFD0+MLazujGzpD2bHNHXfnuW9YXHDySZn3BLu7RSrhcoxoovICsuEgnlJQCVKJI7evh8YcMRRJ8cp+RV9NLFcWabY7YpD6l7wbUIMW24KUbUz3bZSVerICQn+uFXw2T+ZNSvBAWp04YhJYC5ijmyeX86yWx/93KwtVI4V/pVHa6XK2fCVyZGLR2/CHTGJVcJOL29fTQ1NCgooigMJgekbkWV/X5f2OmKnvJ+vqahf3LQWFglViaaznwEHAfUWBxY2MauQ35Qq75UM8ofasXt93Ol7WWNnVgzSI1EgGZg2FHxt+YX5l3iQNsw3mJd//RudvbLeLFYBQdJ4n7FSBDI5WA2n6dN9v8O8MKVy6G9DYdWsF+1vY3t6g8AAAD//xNHBC8AAAAGSURBVAMAL1wGdV2gIecAAAAASUVORK5CYII=">Prompt Cowboy - #1 prompt generator</A>
<DT><A HREF="https://www.autoprompt.cc/" ADD_DATE="1774974507" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABeklEQVR4nIRSu04CURC9u3tJWIOJncAPUClmC42dCX8gMbAW6g+QNUSs5RM0JiT2WCj4QBFRChu1IfbSSDRIuWo2WOzL2Z31sq4appj7mLlzzpk71LIsQgjHcbZtgyd/GYbAw54GAmSU8YEyv0HwhtWiLB1B0QReIO5D0zSdqjwfpATpxD1DDLyu64abKobD4FEnUvAoYXHY9F57OWX99u5+KZNdzmTTi+nHTgfy4A2CfCO4ZSilB4eV3Z3teDy2Vyq96PpNtbJR2Dw5qqISDwF5AxlVVWtn5/WLxpgoRmPR8GR0ajr58f7mdZxpgINhGKFQ6Pi09tBul/fLg8FnvXE5IYrP/X6xuAXIkOBIh2Rgguw1TVtIpQr5vCRJzesrJac0W635udnxSAQFIBeKiyAIT93u2sqqLMtwk0gkgK00k4Rs6BggsD/hsGXsh7DxjjieZ9r8UzN8wMJ4hHu295tHCcsAseHMuL/rnxqU+gPhv2kNIvgkjLYvAAAA//8lctzdAAAABklEQVQDAPlu2vjH9IPSAAAAAElFTkSuQmCC">Free Automatic AI Prompt Generator | AutoPrompt.cc</A>
</DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="0">Proxmox Services</H3>
<DL><p>
<DT><A HREF="https://community-scripts.github.io/ProxmoxVE/scripts?id=web-check&category=Network+%26+Firewall" ADD_DATE="1760540060" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACgElEQVR4nHxTbUiTURQ+577vNjc3l4JaCZpUVFIUFOUPIQ0hIRKiePtjGCOYQQkaSJrli6kQtb7ILEyCAn/sTxFkUNki/4X2TwUhEFy5VjJn+2rbvafrYEHzrQMX7uU+5znPOc+9KvwvvF7FNlN6GBkWRcW7UdB1kQth/0zWfevY7MbWBCqDKQG7oKeHjGCGBIX9vp37lOCdonigH5IJAMRJuQwJ1L9Od8cs1pCtMc3hUrkdd1dbFuML8eAD//r9z6fAODC7sfaNl6lCPScLuQUBHSkIfq7OX66SVwEiuKHabKOtTU0ra1uQg3L0+WpMQh1hSBfShPNJwdyFFjgGyHROkCe1e1Kx2K3bIyPb1iiwX31/1gSZxM2/gI2ZgXVErtRMr156Jbk/Eqkjzi8TUQ0iTCLgwIrT+UrXtGRGAQrwx4XECVWkBZamBFVKBzKz0TSNt7tcb80ApxHxnmylihMNO8LhrutPhkr+zCBP923iaGpPkwQCJRjCoIXSD6N6XSAr9abXa6Xl5ZMyo1sSVUjClzLZk7ExodfNF1PoogX5eXlc4oTdCVCHrb0TB4AoU6Rd0+IKgGwNAxn3iHYwBpWYOxRb78TepIAuDnhUqplXED2HCr69aHCE6gWJTll9i6z6GhWlv8zh+IhG3toHPhQnUuyMbEkqwvz6gu+zDfbgdvmY0nINKZzfb3O7F1exihFBcvxx7Hhjw5QlvOjknB8syYPyrdb4tAR3/HQ6H3U2N4ezWNWIQFqG0vMTe5TIqS+RcOoHFT0FRfG0uVwzuVhDBVhbq5qXllpUs7myxGHqq6DotbaWFr8R1lDBhrk5jDL2iRE9Cy18faMbfONs/AYAAP//plRx/AAAAAZJREFUAwA9rwjgDtQ5PwAAAABJRU5ErkJggg==">Proxmox VE Helper-Scripts</A>
<DT><A HREF="https://pve2.mikemcfetridge.com/#v1:0:18:4:::::::" ADD_DATE="1754832584" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACYElEQVR4nHRTS0iUURT+7v+YaUZJrRkwqlVEET0oolVQLXotahGO6SYYNBASe2hQgaUJJUhZU0ZQMdBmekhhbcxFErSPEiIXbRLJmKEZcpz4351z/39sEOfAB+e/3/fd/957zlFA0QcoHiDgRxjVQ3KsZQ/nooJcRR/PiFxHeYYwgEBE4RKuEZpJM0uaFsp/M6FN7oe2Yzs2ZwvIb3qKaRIcJMF14uoJ3cEGw4Rzwv/7++lTiMTrsfXzF3wT+W68psXjuoq5Wg294gZ20m87Xd/YE5xySPGPcd+7gk9FGwOWg0Yi3ojseewjySh9xGgTVwWStUM4ogq0Op6/C+WgPFO8iHEHSJOZ3yxHx2lS4sP4ABvNqoKFokl3Fngw1Y4xMkywMTBP8BpzrGEte9ireAmo8RQmDQttERXevImajTHcG0tghIxTDM55jTnWsJY97JVVkMlLOD+7kNR1PDRshGJRzA5+xBnmL+3FSK6EtWENpmWhY00K6bJHQ5VQquRLQ5R3mjuLk7qGjOlA1IWRG/+O9hOjshfwqgm9RzfgccFALERXsGy0Nt7F88UrZLtwQAvhbclCzcowSjN5tG15hCSxh5jnR/x6Gun1DXjyx0A0qmPBNnGM32GxjOAyKvDCOpKRmzi8XBn/XsY7esC05cre8MtIJblAgtUrNPyq09BB5t1057KZG6mHc15jjjWsZQ97ldQPJISDXfMF7BGD2Cb+d+Edwq0At12/JTtZI7Xkkd6KB22oGKYXhP4lw3SV0EKamWCY8kAwjX0kpFHzhJwVObJGlapJjse53x9p9x8AAAD//98VFFAAAAAGSURBVAMAUNvs3fYarJQAAAAASUVORK5CYII=">Proxmox 02</A>
<DT><A HREF="https://pve1.mikemcfetridge.com/#v1:0:18:4:::::::" ADD_DATE="1754832554" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACYElEQVR4nHRTS0iUURT+7v+YaUZJrRkwqlVEET0oolVQLXotahGO6SYYNBASe2hQgaUJJUhZU0ZQMdBmekhhbcxFErSPEiIXbRLJmKEZcpz4351z/39sEOfAB+e/3/fd/957zlFA0QcoHiDgRxjVQ3KsZQ/nooJcRR/PiFxHeYYwgEBE4RKuEZpJM0uaFsp/M6FN7oe2Yzs2ZwvIb3qKaRIcJMF14uoJ3cEGw4Rzwv/7++lTiMTrsfXzF3wT+W68psXjuoq5Wg294gZ20m87Xd/YE5xySPGPcd+7gk9FGwOWg0Yi3ojseewjySh9xGgTVwWStUM4ogq0Op6/C+WgPFO8iHEHSJOZ3yxHx2lS4sP4ABvNqoKFokl3Fngw1Y4xMkywMTBP8BpzrGEte9ireAmo8RQmDQttERXevImajTHcG0tghIxTDM55jTnWsJY97JVVkMlLOD+7kNR1PDRshGJRzA5+xBnmL+3FSK6EtWENpmWhY00K6bJHQ5VQquRLQ5R3mjuLk7qGjOlA1IWRG/+O9hOjshfwqgm9RzfgccFALERXsGy0Nt7F88UrZLtwQAvhbclCzcowSjN5tG15hCSxh5jnR/x6Gun1DXjyx0A0qmPBNnGM32GxjOAyKvDCOpKRmzi8XBn/XsY7esC05cre8MtIJblAgtUrNPyq09BB5t1057KZG6mHc15jjjWsZQ97ldQPJISDXfMF7BGD2Cb+d+Edwq0At12/JTtZI7Xkkd6KB22oGKYXhP4lw3SV0EKamWCY8kAwjX0kpFHzhJwVObJGlapJjse53x9p9x8AAAD//98VFFAAAAAGSURBVAMAUNvs3fYarJQAAAAASUVORK5CYII=">Proxmox 01</A>
<DT><A HREF="https://192.168.2.2:8006/#v1:0:18:4:::::::" ADD_DATE="1718677644" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACYElEQVR4nHRTS0iUURT+7v+YaUZJrRkwqlVEET0oolVQLXotahGO6SYYNBASe2hQgaUJJUhZU0ZQMdBmekhhbcxFErSPEiIXbRLJmKEZcpz4351z/39sEOfAB+e/3/fd/957zlFA0QcoHiDgRxjVQ3KsZQ/nooJcRR/PiFxHeYYwgEBE4RKuEZpJM0uaFsp/M6FN7oe2Yzs2ZwvIb3qKaRIcJMF14uoJ3cEGw4Rzwv/7++lTiMTrsfXzF3wT+W68psXjuoq5Wg294gZ20m87Xd/YE5xySPGPcd+7gk9FGwOWg0Yi3ojseewjySh9xGgTVwWStUM4ogq0Op6/C+WgPFO8iHEHSJOZ3yxHx2lS4sP4ABvNqoKFokl3Fngw1Y4xMkywMTBP8BpzrGEte9ireAmo8RQmDQttERXevImajTHcG0tghIxTDM55jTnWsJY97JVVkMlLOD+7kNR1PDRshGJRzA5+xBnmL+3FSK6EtWENpmWhY00K6bJHQ5VQquRLQ5R3mjuLk7qGjOlA1IWRG/+O9hOjshfwqgm9RzfgccFALERXsGy0Nt7F88UrZLtwQAvhbclCzcowSjN5tG15hCSxh5jnR/x6Gun1DXjyx0A0qmPBNnGM32GxjOAyKvDCOpKRmzi8XBn/XsY7esC05cre8MtIJblAgtUrNPyq09BB5t1057KZG6mHc15jjjWsZQ97ldQPJISDXfMF7BGD2Cb+d+Edwq0At12/JTtZI7Xkkd6KB22oGKYXhP4lw3SV0EKamWCY8kAwjX0kpFHzhJwVObJGlapJjse53x9p9x8AAAD//98VFFAAAAAGSURBVAMAUNvs3fYarJQAAAAASUVORK5CYII=">PVE2</A>
<DT><A HREF="https://192.168.2.1:8006/#v1:0:18:4:::::::" ADD_DATE="1754807327" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACYElEQVR4nHRTS0iUURT+7v+YaUZJrRkwqlVEET0oolVQLXotahGO6SYYNBASe2hQgaUJJUhZU0ZQMdBmekhhbcxFErSPEiIXbRLJmKEZcpz4351z/39sEOfAB+e/3/fd/957zlFA0QcoHiDgRxjVQ3KsZQ/nooJcRR/PiFxHeYYwgEBE4RKuEZpJM0uaFsp/M6FN7oe2Yzs2ZwvIb3qKaRIcJMF14uoJ3cEGw4Rzwv/7++lTiMTrsfXzF3wT+W68psXjuoq5Wg294gZ20m87Xd/YE5xySPGPcd+7gk9FGwOWg0Yi3ojseewjySh9xGgTVwWStUM4ogq0Op6/C+WgPFO8iHEHSJOZ3yxHx2lS4sP4ABvNqoKFokl3Fngw1Y4xMkywMTBP8BpzrGEte9ireAmo8RQmDQttERXevImajTHcG0tghIxTDM55jTnWsJY97JVVkMlLOD+7kNR1PDRshGJRzA5+xBnmL+3FSK6EtWENpmWhY00K6bJHQ5VQquRLQ5R3mjuLk7qGjOlA1IWRG/+O9hOjshfwqgm9RzfgccFALERXsGy0Nt7F88UrZLtwQAvhbclCzcowSjN5tG15hCSxh5jnR/x6Gun1DXjyx0A0qmPBNnGM32GxjOAyKvDCOpKRmzi8XBn/XsY7esC05cre8MtIJblAgtUrNPyq09BB5t1057KZG6mHc15jjjWsZQ97ldQPJISDXfMF7BGD2Cb+d+Edwq0At12/JTtZI7Xkkd6KB22oGKYXhP4lw3SV0EKamWCY8kAwjX0kpFHzhJwVObJGlapJjse53x9p9x8AAAD//98VFFAAAAAGSURBVAMAUNvs3fYarJQAAAAASUVORK5CYII=">PVE1</A>
<DT><A HREF="https://images.linuxcontainers.org/" ADD_DATE="1717984578" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADUklEQVR4nExTX2hbVRj/vnvudm8SkyzZDY3LSk0qq9aNUmkVfAnihm+KjJbWB0FlT0Kns7IafCi+uNmXTQqlIAj1LWvBlfnQp6EPCmZRO6ZbG9ItJi4sWbu0N/c2Te65387JWsiFc893vj+/7/ed830KdHxEpBzIy8vL8fHx8etjY2M/SflAPz09rXTGYKdBLFfqJiYmzuVyuVSlUumRNsMwCvF4/Ju5ubkfEdEWKgnitgHS6TQbHR3l8tBsNl+fnZ29vLCwkHQcBzweD3ddFzjnzOv1QldX16/Dw8NTqVTqd+k/MjLCcJ+6vr6+PiWcp0QGbWVlhS8tLWG1WlV0XQfGmCtASNiY3+9v9fX1zczPz18SZxMLhcJbOzs7l0SGIdu2SeBxIbNisYiLi4uUyWSg0WigAJEAXLLRNA3D4fDfyWTyK8zn81siKGSaptNqtZgsSzoHAgFJHScnJ8GyLKrVaiAYSsZtoFAopPb394NiWxa2mntcVVVFLEmXxI4yqwAFWbuUo9EoijsheU4kEqqs6b9CgdjA0Gtfbtctz9GAHzTdIwEkTxClQTabhe7ubvD5fFAqlUBkxaBg9rBUhPLjTSVyLEZsesCY2nhS1zfqDvm1QwjkYuZWFjbyedh/AYhEIhCLxcDn8cCdf+5AtcHp1VgYP4r7dtXn136htx3u/vvSabhlmXhY08ipm3hIlEPPXghs24JwMAixeIL+vLuG555r0Fn3vhsyt1188MFggxXXNFBVp9YzwLK9b+Jm8Djp6EKjvoMSwOsPkC3u76hVxRO3f6bEVo47u7bKXzjJ2cWzZ0q8tXfqsNM0WDkPvZvrXENSHnkNYIEwqLoXaM+Gk6UMDq0u8SPVDUBNY9yI3dd7T11sN1L9ZjpqXv8+tfd//hO1VlHIdR2z60WWG3wHOTI4sXqDguV7oltR5UED1GOJee30+19H3v34IYo6FWz3NWF55rMkrf32rVotDlu1LVCjPSKIwCkXmO9IGFrG8b/YK298Ef386k0B5u7HSpdnQyV+dPke+T/84b3zu/nbFxhQCFwODqp1b/zlq6upGzNnwrjd6Y+do5kWwzF67Vp7sCrfXRh0Hty9Qo6jaYn+88anV/4QIZQeAeED/CDmKQAAAP//QDBgxAAAAAZJREFUAwDjL5doPNBx0gAAAABJRU5ErkJggg==">LXC Containers</A>
<DT><A HREF="https://argon2.online/" ADD_DATE="1717984652" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACLElEQVR4nGRTyYoUQRB9kZ2V1d3TbYsw7goKjjq4Is7FL5hBvXrwKgjjzY/Rn/AiOArCeFE/wI0WFDy4HIQRW52yK6sq04jMql6cpJaorHgRL15E6ls3tw63Ye970CrgFXgRgbznHTZkNTa/fNgAOfZ4nGfVuk69vWfSwdXcjlwDrp0wXdGOgSWIpzQZXENnxBkJq7ZgMM06iM2G86hKyR5ZyBUS8Ldg2GVNRYoMdBHc0K8qoNtTOL6UwFoXSmgS1L7kOdCkZqXq6LyUIoz/OiwtG1y/0RfGEGIM2unbFCgR67c8Q5BTZw0zMDhwRKOwPpQ16ytYNadV/I2iAPYfaqE/aOH55jZWrnCfckYpEWNeW/U/PNDPHM5damPre4mnD7dDKb2+Yl1EJD/vP5fbR7WTlOmfMRi+tvj2uQx6nOTvPJvMw84AUSAfqB49ZtBdUPj43qKlgeEbiwuX23BOip9qEQM0s0WRfj72uLiS4t0rzv6lDB14sZlhca/GnsUWygKTCRWsRi2LtKYsPfUHCidOG/z8UeH23d3QmsD72HdQY/l8ipfPMvRM4p1zEsXrmr6PrSGvNWjjwR+kHQpdcFWk+OnDb3xlPUyqAriZWB3KUeQ4ggyI4hb64Vt+sJNMY8OWafskIeiEBOzieDPUwT0xya5Ww0QmrN0GdboqtG6hF+9uj0gn07NikoFic0PbsV8nNZIca6JYXc7Mqaz1ctMR4l8ut78eOWvu/AMAAP//HNHWlwAAAAZJREFUAwBNjhk4h7XMggAAAABJRU5ErkJggg==">Argon2 Hash Generator</A>
<DT><A HREF="https://tcude.net/creating-a-vm-template-in-proxmox/" ADD_DATE="1748446502" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACeklEQVR4nIRTS0xTQRQ981o+goVg2xiLkYWkMZAomhhTVkB0IYkUPwsJaBDdKqJLRTcW4kZFiTsRIxK1FKwmJqaKLNUYV120KtJgpCH9BPuhNKYd7319NY0K3M17M/eee885M6OHFiaTySJ0Rd1SimYIWAVgpu1SLZ2SQJi+nwXkW5n5dT8cDgc5IVTwZksbJcZoacg3FELAaDSq/9FoFNlsFgURp4Zd4cWF54ImbxG6Yj9tqmCz2YzzvWfRbrcTq1wDmga3+wVuDt1GKBTSesg4MdmhEO1TefDuhgbMTHtQX1eHS/1XsHefDTt37cHA4HW0th6k3Gu1RuNoYKwg+h7SsZ8nc8EztxuX+69CSllIGSaSM+lykqxNaGo5oDKhijcK5axc0Nd7DjqdgmuOgX/AqoxIBCe7e1BcUqJK1MKqsNtsmN1+CO/ef0AqtYLVIhAIwOEYJH/aVJMJa2IGpVVVVXyM8Hq9WC+ePHXCYDCAMYzVq37K3BH5fP51G6RSKSQSyT8YZpBeWvqJhWAw33XNqK+vQzq9AsZQLCvkV4RNc064cOzoEVXbasEDhm7dwIRrMm90SIGQX/hvePguLNUWXLzQ998mLS3N8Lx6icqKStyhWuS0+/WQYobsbIrFYjje0YVHYw/Q2GjD+PhjzH+fR03NNnR2dMBms2Fu7hs6T3SDazno+k8Lo3FrtaLP+mi9kTfLy8pw+kwPDrfbUbu9lsfg6+wspqbcuDcygmRyWeMkY0JmrIWP6SH1rCikrVMUflXIZDJ/K0qQA538mHSqlcm4v7xswyhdDX4pWQLx8RaRUXrNrDR9FsmvTyR5VGaUnkjox0dO/AYAAP//YPutkAAAAAZJREFUAwCltfQVEk9+8AAAAABJRU5ErkJggg==">Creating a VM Template in Proxmox</A>
<DT><A HREF="https://firebog.net/" ADD_DATE="1749149148" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABdklEQVR4nJRTv2vCQBi9JBfjj1oRRYQW7ergVgIFccisg5TO7v0Xuri04Fy3Qv8DaaFjBaWdCg79CzrYQiESIQ1pKJqk74KCJGKSB8d39919717el6NkDxqNRl6SpLzjOFksqSAI89Fo9Im5uznDbRc0m80az/OXmJ65rlvjOC7tJ0Xuajwe32zWdHuzWq3WKKVZXdfTrVbrrlQqmZlMZmlZlsj2U6nUsl6vPxeLRbJTAW49Hg6Hp4PB4EGW5fN+v/+K9ApDWB+xMXSocHYqwMZXp9NR2FxV1UOs5yQE1J+AUTKLyWRSIhEQIMCtJyzCfZNEAO9P2LbtOSSKotFut9Oslb1ej49DcMDidDp9NAzDRFcWk8nkmsT4BK8z3W73VlGUD7TRLhQKb+t0OAGk/7I4m82eKpXKCxOF4hWJqgCSPQJN0ywU/pEQBAgSicSCxECAAL/rN4mBQBfK5fI7gpvL5SwSAQFr8R6OYOAFDLyHBz9hBP8AAAD//0h3SZ0AAAAGSURBVAMAKHdpMv6yEwQAAAAASUVORK5CYII=">Blocklist Collection ¦ Firebog</A>
<DT><A HREF="https://cloud-images.ubuntu.com/jammy/" ADD_DATE="1723378648">Ubuntu Cloud Images</A>
</DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="1782682344">Homelab - Oracle</H3>
<DL><p>
<DT><A HREF="https://www.oracle.com/cloud/sign-in.html?redirect_uri=https%3A%2F%2Fcloud.oracle.com%2Fcompute%2Finstances%3Fregion%3Dus-ashburn-1" ADD_DATE="1717984423" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACOklEQVR4nIxTzWsTQRR/M7Obj41NhHqoySF6tRclB0V7SFDQXhSEba1YD14VpYIgnnLrpT348RcYPNhFwRzrwYq1iBBvBUGQllpTiQetSbpfM8+3mw9jW2PfsjAz7/1+83sfo8HfxuZMk8M/zYIxCxQtsAvoLOZMEOSUsAdDimXt2JCA6Bgt8MX5awPZlH1SMmVwpRA0aEX5FMCRAarml5/e0oVy+VcH01WwOj56VdfEzaju52KCvEFEQB0KVsBp50oFDfQrynXvp62lUlfBp4nCbCZu3K57Hji++4YDVgkgsJttSCARWDqmayNJTYONuj2TebZwh9UuFi4PGNEndd9babjqSvb5q7f98l818yNxTS8lhTj0w/YmOAo+Remi56nrAbgIwLGdwfY/8GWthcWm79+QSCccpjRHg6NN9Na/r2y+DI4oJ1Xs04AQ9nlzvno4tS44O8YZ1ZI+FtvaYttbu4uFvmWKVSGS2Kg7HwYjeiY5fOBccDv2QWOLQSWODI5qST39LQ4VarecCTQYkfijtUtn8gywz/UIH8dOF9Iq/nCfC/A1IWdDSWtmfnooEb1rSwl1x31P2qqkjYd6sH0zopIChsDQj6eYAL/mTO8vv77HOhNVHc+ZURG7pUP0lCEiLR0BmMoWVo4i6+hBQ3cWue08OPi0YkEL+2eUH09OJnLKO6EzLYaKhRytUZYgOWdK+PZGTX93dr7U2DHKvQ/kf7bjMfXWCYvArGVz11aawxbSNCH0POffAAAA//8D/fPNAAAABklEQVQDAJ8i/5+bHHu1AAAAAElFTkSuQmCC">Cloud Sign In</A>
<DT><A HREF="http://129.213.86.62:81/nginx/proxy" ADD_DATE="1779203208" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC+UlEQVR4nHyT22sTeRTHz+/3m8nMZCYxTW1ju9nuqisuq8sq3YettOzi7v4JKgUFr2++iaAPQt5Eioj6qAi+CFofRX1QvIEXxHqBKhi12qbTpmnSJplLZub3+x1TLwHReuA8nXM+58uXcygsEohAZk/+/uvTratXIwBZrO+bBbywviMSuDmqYu/La6FIcnWkU2UXE8OPS98F4N0+A4z5jXKeDvCCAjzPGmFRLoUqXUvmlAeybN5yp9fd+LFwzP8CgJijtXK+15zJ78BqtV54jKlEWevTK2pRlglrAlbJIrsSuMvnHLIi6Xf/dGbNX/YjkstJugB4Pfnwb86dYRnXUZTUtVqg7AGHZps+vOEh5kul0JxylN1jrljTUC2oNsTw8PXOgYVZ5YOC0MmGQk5QL6LAlX/TGrkUhmTISiXv3XzSrNuFcz5fsl8Q8l/oh2cqJhRcAj+0AF1+VehR9ATHlf/BI880U93hT4WJ2oQztE4ygGXZ41fGu7YDN6/6uvtPrCd53ZJCtgB6mxagzVysyy4IM1NAlrkUnuXQJXtlIw6Bs5xO20sOtHcHbmC2/TJZKLmVwGsszH7wAJxm1jAm5wnjsx/dlT4l6KhNm7PNNRmAbAF4Mg3cSIAXSfRDAS0Ftbt+TKekH0t0VJZnSP1dxSRz9ChGpgAtKw2j87ip/mzKmGCcwZ14uo3FoU2HR58A+XwI7Ux93lVndayS9d5scLY45h+prIzvA9CgPZ7YkMboQDkQyr2p0dcZ2WMttTp4S4EV0GJCMBMa5JVfl+O2HQwqSveGFZO958tWingablE7jWTl7cyozpJp6sbUgEWlFuA36/lNv/qnIzy5jXpkwnfIqXa9p5+DOdi8BaxxtLmlXfBjQA3FULBBT8inMyNfn/KmPqM2LTYiruwP1V6zVGPBmOBgx2JakIq7AcPbzgv7Ru5trvHNX/gc9YGDHbMiMzjpyV333WmM9PjpTKrn/M47O7//TF+oASSX/zi8aqQ+h4feDOUX63sPAAD//+0eCf8AAAAGSURBVAMAWf5+VGKHtAkAAAAASUVORK5CYII=">Nginx Proxy Manager</A>
<DT><A HREF="https://next.mcfetridge.us/" ADD_DATE="1779208927" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVR4nMSTv0vDQBzF36WXFq3VQrt0sCSbCILSQhdH14KIFJzEqYOD3Vz7BzhEty52cHESdHBUUDoIdnSoONxmdVIUNDYx3p2hTaCFcB36gfDN+ybv3XE/KATV5h7g1fibgWgwgFho7BwS32xBCVKj/siKeCIg8rSHYWhBlZubwlbRRCGfgUaA8tI8Npbz0GMaFnNp+c3MzIQSaFAcVUrYLJj4tHuoNK5xsbsm+9vNG9TLKzCzKbSeXrB6cNn3hGaQjOuyTscpZhOD7BTXyYTu/0NBAp5QgAqTDwgtou26sv44v/jquf3+t+PCdv61qN6ogP2ze9w+dvHQfcdV5xnVk5bcwtM2Q+f1AyUjK/tB+FE+9jAGYg0Y1GGavFXKECuG9vkdiutvXC3wJx3Rybi5Lq7zHwAAAP//hjg0FQAAAAZJREFUAwAVQlGyJHQr2AAAAABJRU5ErkJggg==">NextCloud</A>
<DT><A HREF="http://mcfetridge.us:8250/ngclient/" ADD_DATE="1781824213" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACu0lEQVR4nDRT2WpUQRA91ctkXzW4kIio4IDiAkYEQX3wSXzxRxR/RNAfEXzxQRCJIqKioiIRJIoSiQlJnMx2l+4qq3vGYZrqrlun6vTpKof0O/566dKNw3f2zzaa3vGkQCxgQGAkKzko7W2MAe2tnerrq8cbD7B24Sftu/axeeX64sMTx+aaXNcgytFIRrIltQKjDlYHax5yHt/WdlZfvFi/5U6d339vcWmuWbTapX53QyRZyrAM/58tOWMQVKEIS0vzzdNnyntuetou99tdJhY/0kihCiKhXq3BUdJxQEWYJsaMkNHEAl90Ojw54ZZdCJgJzGQ1SESREKM4uXrK0ZEFgzgQANaQ9CumJx8Cd/qRoIAQZMaFKK6uEz+hfD8t753QzWWPmUk7LJ9VobT/9CPS+pZezgORxboqAEWlBxXbaHzDMilb7HaB0ZEB2GRhBbXSKcqkQaqn51pIq0fq9iMaXikosq+FpsYE/Rro6XKqwZgnOE3uLKEMnONJz1XNcJUGdQtGWYL8tMG1sw382AhY+Vzg5KLLCfJygFcqv7cjShVY+VNi4uoIKUoDjhH7ZgmLBx1NThh8+V5hs1VjfSvgwKxVPQyevi/Q6hnRuye81ClB0ASi6qqiaPcEf/ZIpkYtXT43julxg0fPO1iYs/BKeatFGazUKb0nK8ZxVJ9NFtjYZXn5sWfGx0ichiTQp7Uazz4wtJpQeiIYDklEk7s7uBipRUzzqdO7PaaVd6X2gj5D6ib1eW/0FbQ71CNRZU7Nov/si2iZUNdvyU9of1HqBlaALsu+YcR5palNlXTSqhxYR0HySNRGMbHiN25ve+/ujGsc9ePzTeYSgxcfjFGegaHJAzLcGTtiQ3tntfjbu5s9o5ffHlk4NH/bOH9SmU9RGudhjiE27zVxFLEdDnG1u7l5f2fl4q9/AAAA///mFdGzAAAABklEQVQDAFQzkIRPtGVxAAAAAElFTkSuQmCC">Duplicati</A>
</DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="1782825264">Rackserver - Mail</H3>
<DL><p>
<DT><A HREF="https://nerdvm.racknerd.com/login.php" ADD_DATE="1760018823" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADEElEQVR4nFSTW2wUVRiAv5k5O9t2d7K4bZe1yNo2JfUG+tCwARsNqZc3idgmNfAESBQSSdQHYzTRGE1rIHIJmJpFkj6YKIRIJaJWqqTGIm0pvEFKoJAuW9gFti3spTsXzk6ThTmTM8n5///7z387Ark+Gr69W2h8oCpKQSiUhAqOA7dyJYLy8FoswLpYNQru0uSuyeVyiUAg8I6y/e/0Lk3lQ8kgYTS5MxK0bYeXnqhhfYtBuErj0TV19Srnzo1TyOcSolAyN5dhn/ylCyZ38xZtS6vZ+GyI1rDfA2YyGf4dPs3lyUmCwSCh0JJOkS+a5YiZnF0gGpR5tIV5pdHwgMVikcE//+DMyH/ouk40+jiappHP5zVRKJa4ll3g9WaDL1+WClXxwKf+GuTYkZ9BUWhpWSGdFUgmp4nURxA+gZhM5+iQN369rsEDXrgwQd/BA8zNzdP99kbWtre7YcviMSSdjo+PUV9fj9Bsi00rwxUwOT3N/r3fMjp6lvVvbmDL1m3Ialf05RQ2dHbhyO//kRHEdCZHLKRXDD795GMss8Shw/00NjVV5PmSzf2iSV1w0TYeX8P46Bji9swsU3cKRKTCtm2+6umltrYOv/9hBy7evE/392PEwlUM7Ii7MsMw8MkaqGTzHBiacoWqqtLQsKwCp+aLtH0xxNNv/Uhttcbe7pUVp6lUym2rUMM6/ScvsVAq0dv5DBHDT2q2wOcnLtJ/8AxEDb7reZV32xs9RT7x63Esy0LRtw/MWaZlWDP30Jb4Uap9mBNJd7J27nyRPV2rPKBpmry/4z2GTg2yOr52Xsir3RGmrgrrclpaWLyx6QX6t6wmVKN74IHjv7Crt0eGf4PlsRjXpq4gcCy7mJyDbI62jhUktsZ5/snHPOD58xPs/qaX4dP/EFkapbX1Kbfgju7YYiE9/1N0WXDbvs866FrT6AFvzsywf98ejh09IqfOx3OrFtNx5FNV5MQqqL+5c3s9c+/Q8trA5nK7y2mWvR/+IUGir4/ZbJam5mZ8+mKbcZ+zU6M4ytGBk793PQAAAP//JzuOuQAAAAZJREFUAwAFWS1HKkMAvwAAAABJRU5ErkJggg==">RackNerd - Control Panel</A>
<DT><A HREF="https://my.racknerd.com/index.php?rp=/login" ADD_DATE="1760018820" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACOElEQVR4nKxTz2tTQRD+Zt8mqbYW2wRti3rVHoInq3gwHgSFRlqooCcvIkL/ABU8ehS8FkFBvBUColioB9Gq11KFXnpQEaQlP16TJrHG5O2Os/vSerFFxH3sm/d2dna++eZbjTvv70EFeZjIAgTAEsjZPwxmeSmGexI6gI2eEm4vsJZvds7tuB0OAP82ksR0Iqv3BWwa1QZBqS0Pdh0ukZI9Ajid6QW9+7Ru51dCFyePYkWCjwk6cJVQN4YRGdtN7tblEMsYP5YBscf+70N/+VrimUdzCGsNCrSW9JYOj6Qxff0i0vv7/KZvayFmHs6hWNkQvgO2UUQjw2mevjYOPXX1Li29/QAkU/DYHRc/G1hdDZE/fwKpVAIPHs+j8OQ5kOpz0OMutX/Q4tIKSA9NuqaAHTFSja9brGm1kRs7iqbYxY+fEeztiXuwRWLb4ECmH5qtj5c18j4SBKaxiezoEbx+eR9htYnsyRsohnUEe5KwJk5imT25KndqFLYUIirXYGR2ZNp6FRP5077+9EAv8hfGYNcr3mcqNUTFKmxYxbkzx0HlsG5nCwsoihaSSc1shcThQVyeOiutVF4w3zdbmC28wVp5A4EW4USWDg0N8JVLuf/QxmfLJX6xXEZH2CVRkeNCqXhuC0mmiQyM5e4fKCFqmsgeFM5uvTK22WFox2JXhrupmWMxwjD39CdJWwooGOxRcQvo73D7Viq02p2OFiXcNJSYBEexSDzAHTBw9zqyXGmlZV9U+AUAAP//jxFoSwAAAAZJREFUAwAdexMq9uHr2QAAAABJRU5ErkJggg==">RackNerd LLC</A>
<DT><A HREF="https://proxy.mmcfetridge.net/" ADD_DATE="1782682344" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC+UlEQVR4nHyT22sTeRTHz+/3m8nMZCYxTW1ju9nuqisuq8sq3YettOzi7v4JKgUFr2++iaAPQt5Eioj6qAi+CFofRX1QvIEXxHqBKhi12qbTpmnSJplLZub3+x1TLwHReuA8nXM+58uXcygsEohAZk/+/uvTratXIwBZrO+bBbywviMSuDmqYu/La6FIcnWkU2UXE8OPS98F4N0+A4z5jXKeDvCCAjzPGmFRLoUqXUvmlAeybN5yp9fd+LFwzP8CgJijtXK+15zJ78BqtV54jKlEWevTK2pRlglrAlbJIrsSuMvnHLIi6Xf/dGbNX/YjkstJugB4Pfnwb86dYRnXUZTUtVqg7AGHZps+vOEh5kul0JxylN1jrljTUC2oNsTw8PXOgYVZ5YOC0MmGQk5QL6LAlX/TGrkUhmTISiXv3XzSrNuFcz5fsl8Q8l/oh2cqJhRcAj+0AF1+VehR9ATHlf/BI880U93hT4WJ2oQztE4ygGXZ41fGu7YDN6/6uvtPrCd53ZJCtgB6mxagzVysyy4IM1NAlrkUnuXQJXtlIw6Bs5xO20sOtHcHbmC2/TJZKLmVwGsszH7wAJxm1jAm5wnjsx/dlT4l6KhNm7PNNRmAbAF4Mg3cSIAXSfRDAS0Ftbt+TKekH0t0VJZnSP1dxSRz9ChGpgAtKw2j87ip/mzKmGCcwZ14uo3FoU2HR58A+XwI7Ux93lVndayS9d5scLY45h+prIzvA9CgPZ7YkMboQDkQyr2p0dcZ2WMttTp4S4EV0GJCMBMa5JVfl+O2HQwqSveGFZO958tWingablE7jWTl7cyozpJp6sbUgEWlFuA36/lNv/qnIzy5jXpkwnfIqXa9p5+DOdi8BaxxtLmlXfBjQA3FULBBT8inMyNfn/KmPqM2LTYiruwP1V6zVGPBmOBgx2JakIq7AcPbzgv7Ru5trvHNX/gc9YGDHbMiMzjpyV333WmM9PjpTKrn/M47O7//TF+oASSX/zi8aqQ+h4feDOUX63sPAAD//+0eCf8AAAAGSURBVAMAWf5+VGKHtAkAAAAASUVORK5CYII=">Nginx Proxy Manager</A>
<DT><A HREF="https://mail.mmcfetridge.net/admin/" ADD_DATE="1782682492" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACJ0lEQVR4nJRTS24TQRB91Z/MTJwEgWODEOYXbpATcIDAAbhMFhyDNVsUQZAiFog9LFgjkOLExMEBIRnbY3u6i9eTIFlApKSl0oxaVfXqvXrtVCEiCh7B5Y6qCpwI9P2m+OEH6OoFmwxZvLqZgDGXycfWU3tj6zH8zYhqLDAWiPr/RoajxgC4QhGObezt7jlbbDzxmN7F2gZgW8wqU+Y52JGRE/87MNjHvLjXdirZL51rLD89j7bzSEy2LhomEOMSzbNC8iSy2Axx9k3DwQ7y5Wuikg+NIBiYzCwVvPj6WuL0RIxfYYWSo60j/Ru3LHH2U7S3K35pjdc5aytjRDiuRqh4sf6KhMNXlKIvsIXEUNUBm0tVnkg8fAmbmptMVAOMIXaMCUnqJmlsl69L6O4gjA4gvlFHmBwhdF/ALV0lskcq5g4QgopbWOsp1zCF6BTxaA9oP4QSRftvIbFEjDNYU9S5f9bkSIKGoLrsFatJQlPbuCOG1KrBO+YKfN4kahPVaF9RXOemi+QiWCtKCpEycPeh1FD21TVuw4ohhKov2uqKVoKrB/ErHWh5TAYTqmqVtXAwLiBMQzXqRdfoCHdFt3BlyUtaLRDU2h+ucUtnwy718Exx0XHmFcgPmzfvW7iMSRRIfS3SX84/s4SgyGm6akBdxqsO4y/PquzBloYZYUNdpv9UL3RJgwXLwadGJ5/f1InbnG379HuhwzxlCCPKwnO+9EnP+TcAAAD//6lKpfUAAAAGSURBVAMALp4Gavo/CVkAAAAASUVORK5CYII=">Mailcow - Admin</A>
<DT><A HREF="https://www.mail-tester.com/" ADD_DATE="1782685180" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACw0lEQVR4nHRTW0tUURT+9j7nzMVRG0ctLa3soqamPyCiHuqxJ1MLaQgSgl4qyHzQUBBBSQqCHuahMEOwGxr1GEFF4YMQhV3GSxZYKuYlvM65rdbWRqawDYu9ztlrrf19315LIr6IBLEpt2mAPGrvGKCwssR/8Zj4+usjcV17Q/5QGq7ABZJS0VyZK5Y3ihPqZghBPRN0Xmp4/bYPH/eVotE0ke/aCAl1qmHa68HQ7BSa0nOwnwgHK7JFu8rV45VcDa+sGFoLSkCWjR6vD20rCzjguNACAbx0LJRvysBj14LrDaA2nifV7cqZi2LINuGwTSzO4iFDnmF8Pg3wKX9mCU/MGMb53J6fxtc1/IJkpJ8MJUzyNtRzpR5rEZd8AbR3DdIuC/jpEqZuvaOCZB1XycVFptSrG2hQOSp3XcTOT/Toi4OTTSXCjEQpIwDUOIR0CRis0qRpI1JTLGZUkj8F3eECUb4K4k6Uqljp3ewfEQ7aWCCDhV/w+HCYFVoCqZdDEov6QtpIdgQsTcNlLvqcbUSXEiEWKsQFPK5EGu8Gm86HW8hGlCG7TCOPCwVZ6BSGbLE2HlYuJAXm1incHaQHI3uZghB2ZIC2+w1Uc1AaF9IZwaR00XmqSIxX3CftWCnuhQvF8VUK/UTGU8DJH0Wr42DQXsAz6UezDdQxpUK+TXoMfOaeaImZqE9JxVEuWBTNQ102oK0juDlAyaEk9NoWvtMKzoXLxGLHB6pkmDJcJLpv9FFqMITrhoHcpRjKzxSK+bU++NPbWZko0ww4/ETpviCqu95TGkksOzZWekYpmLkZVR4PsnQdMhhEcXx+9Pg4uA5KdD8ujH7D2I4cNLp+3GbVQ0rSeROnvV4ML4zhRPoe7LQJhzilT+X+d5giPyjJ+wsNyp8y0VLLlDaKk3GH/hnns1vFEnfeMFMYUcmJ45w40r8BAAD//1Yyf+AAAAAGSURBVAMABhZDB86SYhUAAAAASUVORK5CYII=">mail-tester.com</A>
<DT><A HREF="https://docs.mailcow.email/client/client-manual/" ADD_DATE="1782751028" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADhklEQVR4nGxTa2gcVRQ+986dnX3MZmd3dreZbJrtbjaPH5JqG1BLoa2xDxHBVPLXtmAIKCKCv1qQUKEoYoUqPpEq/qgUixpEaTEGa9omaizJJlmJcfOQZNNu184ms7szc2fmOhsiFvHCgct5cb7zfYfAvw+75mz+gk2dSlzeRw2asajOIY7LM0H+UV34afK/ueheh6SkkrIkn7YZ6y2p5aBP8EAgHIXINgXiMbmqVY0rHts5NfzV+dl/avBWEweirbvLOroqyeGnz791KhiLhGxqUot4vNZLA09ZvT3dvqJGn7R8/qutPcePbE2ANycYOfd88/zynbH5lWJidNkwvxy6SGzTQovLBQiFJOjsaENn3/2ILV7/lnZtD3oo513/evjnvd/cmMiSegMuGD3zzMn+xFJ22hyQUnx+9DLQYh4qNR3lKQ+mepg9138Cbu9S+FDES4tLiw0FGnrj+Iu/PMYJ0XT77/k/39z74E4S6diDs0MfIjV/E/RKBamlEsvlpuG38WHkLhLuO9iHTMvGf5XKrPfEs6n2NvN7rjHR0pfN3zranGxzpDuTuDA/C8wvgcATIDxBmukgwDxbyv0K25LtIDW2gu0LO5FwmNT06irWNrRMc1MjS7emncLSPCCPl92cXUCmzVC9SSwUgJKqId2w0cz1K0wIiAhjDIZuMJ542nC1quPGeBTWdRuKag3CDSLcn46BXdOgqmkgeTloiQddqmym3l5DZq0ChPBgOZZLAcKEUmsBAQMDOFQ1GCRMHcVbUizakgbBLyKq10C5tcomblxDPE+cejFjDnCYq/OYd2n2/7CyuqaLfp+w5njYju6HUXP3AfCLoksxc1WCwDRMJG9Pso0aQrarH9MwsOM4jHg8w9h44dj06krhcm5qCh89NmAZgTh8cOYVsEyDmRvrrtQwXHj7LFtRdeg62Acc2JYcjWIO4/FpQkY2hSQEmzoaItL40Oefhh7alYLi4hwLyzLUJ3Bhwt27ZSABBRpkxbpw8RK3+4GdTmd7Zj9C6BrakjIDIXI4lcl89t6516VDj+xxXTqAbbsRDoCIsFGpOi+ffhW/8/7HdEcy0T83NfYJbALcOiYXLUMQ6BJj8deeePzI/kOPHhASigK6YUB2ZgYufTFEJ7O5Mdd3cnluYnRwcBC75qD/PWeAfQBijy8S7qC2ha2y+gcQ3wijpe9QfY/35P4NAAD//8ksQj8AAAAGSURBVAMACAKKegHufwwAAAAASUVORK5CYII=">Mailcow documentation</A>
</DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="0">Github</H3>
<DL><p>
<DT><A HREF="https://github.com/mmcfetridge1969" ADD_DATE="1756910430" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABtklEQVR4nIyTwStEURSH73szZCiFopTFlM00CzYayp9gpxTFQtkQZcfeghQLC81kFvakLEjZDCuJsLCYwoxig5JixpiZ5zszZ+r2snDq6517z/ndd96557kG8zzPMWr4A5CEe/iCnPpbEDM+s4V1PJZhGhpq2768HGzAouM45UoAoctTxDswZP5nuzAKJVdPWlHxMYxBCj4hCxn1TzV2CMOwJFqpoF8FAYizOcNeEL8D3vSNrfBKrEBsHX8WvmFQEqegXhOLJMhBJZKfrJKfpdEaK+rLGmFSNtM43ZCHXoRp7YuH72mDK02UNRbGvYEmuJbETu3yCzxoYrkmrgmt9aNUpH7YVbGnJ4bsmfCbxuSKm1UXcLXTYm0Q0zKDvuGSzaBWIU1v15dmXb0eo1cl0xYhsfjHJ0iDo6Y6SEYrOJED4rpIwgXckrgHPVYFUdjGPYMIyOwUICFlXRLcZDEHfXAntwEf1ufLDU2oL+McgjW0V/YoH0EXLECG4LlVgTQuY6rDJbYPI/Dj+JISMK5bLRzyrjHpuvglzZmXqZRYsNZlrFKm/Lam+l/krU+QsV2FA/JSlsb7BQAA//8fGtSHAAAABklEQVQDAIsg4TDVy+61AAAAAElFTkSuQmCC">My GitHub</A>
<DT><A HREF="https://github.com/ChristianLempa" ADD_DATE="1717983245" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABtklEQVR4nIyTwStEURSH73szZCiFopTFlM00CzYayp9gpxTFQtkQZcfeghQLC81kFvakLEjZDCuJsLCYwoxig5JixpiZ5zszZ+r2snDq6517z/ndd96557kG8zzPMWr4A5CEe/iCnPpbEDM+s4V1PJZhGhpq2768HGzAouM45UoAoctTxDswZP5nuzAKJVdPWlHxMYxBCj4hCxn1TzV2CMOwJFqpoF8FAYizOcNeEL8D3vSNrfBKrEBsHX8WvmFQEqegXhOLJMhBJZKfrJKfpdEaK+rLGmFSNtM43ZCHXoRp7YuH72mDK02UNRbGvYEmuJbETu3yCzxoYrkmrgmt9aNUpH7YVbGnJ4bsmfCbxuSKm1UXcLXTYm0Q0zKDvuGSzaBWIU1v15dmXb0eo1cl0xYhsfjHJ0iDo6Y6SEYrOJED4rpIwgXckrgHPVYFUdjGPYMIyOwUICFlXRLcZDEHfXAntwEf1ufLDU2oL+McgjW0V/YoH0EXLECG4LlVgTQuY6rDJbYPI/Dj+JISMK5bLRzyrjHpuvglzZmXqZRYsNZlrFKm/Lam+l/krU+QsV2FA/JSlsb7BQAA//8fGtSHAAAABklEQVQDAIsg4TDVy+61AAAAAElFTkSuQmCC">ChristianLempa</A>
<DT><A HREF="https://github.com/timothystewart6" ADD_DATE="1717983269" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABtklEQVR4nIyTwStEURSH73szZCiFopTFlM00CzYayp9gpxTFQtkQZcfeghQLC81kFvakLEjZDCuJsLCYwoxig5JixpiZ5zszZ+r2snDq6517z/ndd96557kG8zzPMWr4A5CEe/iCnPpbEDM+s4V1PJZhGhpq2768HGzAouM45UoAoctTxDswZP5nuzAKJVdPWlHxMYxBCj4hCxn1TzV2CMOwJFqpoF8FAYizOcNeEL8D3vSNrfBKrEBsHX8WvmFQEqegXhOLJMhBJZKfrJKfpdEaK+rLGmFSNtM43ZCHXoRp7YuH72mDK02UNRbGvYEmuJbETu3yCzxoYrkmrgmt9aNUpH7YVbGnJ4bsmfCbxuSKm1UXcLXTYm0Q0zKDvuGSzaBWIU1v15dmXb0eo1cl0xYhsfjHJ0iDo6Y6SEYrOJED4rpIwgXckrgHPVYFUdjGPYMIyOwUICFlXRLcZDEHfXAntwEf1ufLDU2oL+McgjW0V/YoH0EXLECG4LlVgTQuY6rDJbYPI/Dj+JISMK5bLRzyrjHpuvglzZmXqZRYsNZlrFKm/Lam+l/krU+QsV2FA/JSlsb7BQAA//8fGtSHAAAABklEQVQDAIsg4TDVy+61AAAAAElFTkSuQmCC">Techno Tim</A>
<DT><A HREF="https://github.com/walkxcode/dashboard-icons" ADD_DATE="1717983293" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABtklEQVR4nIyTwStEURSH73szZCiFopTFlM00CzYayp9gpxTFQtkQZcfeghQLC81kFvakLEjZDCuJsLCYwoxig5JixpiZ5zszZ+r2snDq6517z/ndd96557kG8zzPMWr4A5CEe/iCnPpbEDM+s4V1PJZhGhpq2768HGzAouM45UoAoctTxDswZP5nuzAKJVdPWlHxMYxBCj4hCxn1TzV2CMOwJFqpoF8FAYizOcNeEL8D3vSNrfBKrEBsHX8WvmFQEqegXhOLJMhBJZKfrJKfpdEaK+rLGmFSNtM43ZCHXoRp7YuH72mDK02UNRbGvYEmuJbETu3yCzxoYrkmrgmt9aNUpH7YVbGnJ4bsmfCbxuSKm1UXcLXTYm0Q0zKDvuGSzaBWIU1v15dmXb0eo1cl0xYhsfjHJ0iDo6Y6SEYrOJED4rpIwgXckrgHPVYFUdjGPYMIyOwUICFlXRLcZDEHfXAntwEf1ufLDU2oL+McgjW0V/YoH0EXLECG4LlVgTQuY6rDJbYPI/Dj+JISMK5bLRzyrjHpuvglzZmXqZRYsNZlrFKm/Lam+l/krU+QsV2FA/JSlsb7BQAA//8fGtSHAAAABklEQVQDAIsg4TDVy+61AAAAAElFTkSuQmCC">dashboard-icons</A>
<DT><A HREF="https://github.com/bmcgonag" ADD_DATE="1717983322" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABtklEQVR4nIyTwStEURSH73szZCiFopTFlM00CzYayp9gpxTFQtkQZcfeghQLC81kFvakLEjZDCuJsLCYwoxig5JixpiZ5zszZ+r2snDq6517z/ndd96557kG8zzPMWr4A5CEe/iCnPpbEDM+s4V1PJZhGhpq2768HGzAouM45UoAoctTxDswZP5nuzAKJVdPWlHxMYxBCj4hCxn1TzV2CMOwJFqpoF8FAYizOcNeEL8D3vSNrfBKrEBsHX8WvmFQEqegXhOLJMhBJZKfrJKfpdEaK+rLGmFSNtM43ZCHXoRp7YuH72mDK02UNRbGvYEmuJbETu3yCzxoYrkmrgmt9aNUpH7YVbGnJ4bsmfCbxuSKm1UXcLXTYm0Q0zKDvuGSzaBWIU1v15dmXb0eo1cl0xYhsfjHJ0iDo6Y6SEYrOJED4rpIwgXckrgHPVYFUdjGPYMIyOwUICFlXRLcZDEHfXAntwEf1ufLDU2oL+McgjW0V/YoH0EXLECG4LlVgTQuY6rDJbYPI/Dj+JISMK5bLRzyrjHpuvglzZmXqZRYsNZlrFKm/Lam+l/krU+QsV2FA/JSlsb7BQAA//8fGtSHAAAABklEQVQDAIsg4TDVy+61AAAAAElFTkSuQmCC">Open Source is Awesome</A>
<DT><A HREF="https://github.com/awesome-selfhosted/awesome-selfhosted" ADD_DATE="1718989827" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABtklEQVR4nIyTwStEURSH73szZCiFopTFlM00CzYayp9gpxTFQtkQZcfeghQLC81kFvakLEjZDCuJsLCYwoxig5JixpiZ5zszZ+r2snDq6517z/ndd96557kG8zzPMWr4A5CEe/iCnPpbEDM+s4V1PJZhGhpq2768HGzAouM45UoAoctTxDswZP5nuzAKJVdPWlHxMYxBCj4hCxn1TzV2CMOwJFqpoF8FAYizOcNeEL8D3vSNrfBKrEBsHX8WvmFQEqegXhOLJMhBJZKfrJKfpdEaK+rLGmFSNtM43ZCHXoRp7YuH72mDK02UNRbGvYEmuJbETu3yCzxoYrkmrgmt9aNUpH7YVbGnJ4bsmfCbxuSKm1UXcLXTYm0Q0zKDvuGSzaBWIU1v15dmXb0eo1cl0xYhsfjHJ0iDo6Y6SEYrOJED4rpIwgXckrgHPVYFUdjGPYMIyOwUICFlXRLcZDEHfXAntwEf1ufLDU2oL+McgjW0V/YoH0EXLECG4LlVgTQuY6rDJbYPI/Dj+JISMK5bLRzyrjHpuvglzZmXqZRYsNZlrFKm/Lam+l/krU+QsV2FA/JSlsb7BQAA//8fGtSHAAAABklEQVQDAIsg4TDVy+61AAAAAElFTkSuQmCC">GitHub - awesome-selfhosted</A>
<DT><A HREF="https://github.com/qbittorrent/search-plugins/wiki/Unofficial-search-plugins" ADD_DATE="1719001564" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABtklEQVR4nIyTwStEURSH73szZCiFopTFlM00CzYayp9gpxTFQtkQZcfeghQLC81kFvakLEjZDCuJsLCYwoxig5JixpiZ5zszZ+r2snDq6517z/ndd96557kG8zzPMWr4A5CEe/iCnPpbEDM+s4V1PJZhGhpq2768HGzAouM45UoAoctTxDswZP5nuzAKJVdPWlHxMYxBCj4hCxn1TzV2CMOwJFqpoF8FAYizOcNeEL8D3vSNrfBKrEBsHX8WvmFQEqegXhOLJMhBJZKfrJKfpdEaK+rLGmFSNtM43ZCHXoRp7YuH72mDK02UNRbGvYEmuJbETu3yCzxoYrkmrgmt9aNUpH7YVbGnJ4bsmfCbxuSKm1UXcLXTYm0Q0zKDvuGSzaBWIU1v15dmXb0eo1cl0xYhsfjHJ0iDo6Y6SEYrOJED4rpIwgXckrgHPVYFUdjGPYMIyOwUICFlXRLcZDEHfXAntwEf1ufLDU2oL+McgjW0V/YoH0EXLECG4LlVgTQuY6rDJbYPI/Dj+JISMK5bLRzyrjHpuvglzZmXqZRYsNZlrFKm/Lam+l/krU+QsV2FA/JSlsb7BQAA//8fGtSHAAAABklEQVQDAIsg4TDVy+61AAAAAElFTkSuQmCC">qbittorrent/search-plugins</A>
<DT><A HREF="https://wiki.opensourceisawesome.com/books" ADD_DATE="1719599671" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADb0lEQVR4nGxTbUxTZxR+3nv7gfS2lBaKZULRueHYh7Iwk21RQJbIXGDzxz6yubhkyT5g07ksWYwh4YfZH5OZmRES0zFYjFnQGcjcBCdp+DV0xBEl2hZoMIhYWNvQ3rbc3o+ztywYMj2/Tt5zzvOc5815BDwiOomEtZxG+zeHFrNHiVKlD97W1YX1g2uFTsYMCpysCkdTHR/FXhj74W/5m6kobgZjSgf9+EEB43XexvL97P/sVAMLxjOv9YQU//lg1rWlQIXDCu2XkGw6trcazT667EH2e7Q7/mC9WMmjmDiiRp188PM7rUNxz4fd16LN1xdk9O3zqglFF7+79g9780k7gnFFu3SfzI2VNrz/TPFQQ4XRtboBTfz62GTJ7m7/rVzL2ckElpJJKrOZwMBY245i2sjz7okEJpYURpqhc61CR2MV+7hO4jpW5BP+66mDx/5Mli4mUmS3iYbAQzMIqk4oEPl6PM/kDIgmgfZy9refkHBhKmnUbLQJbDCi09jteeiGrvcFk0I0o8NuFSEQcWWAwkGyfLjWY8WBmiIksjoGZ9L0tNvM2nd6yGRXE+rlSFKsclmE4y+XYHRuBedCyyyXl8aHy2wivqx1w8NB+4NJOMwC2rYXseE7GYzMphjzjy3QvbiCWI7w+6yMV302VLut+Dm0jErJjPrKQvw2ncKCrOKNagfSOaKBaZltL7NSe12pJlQ4LfpgRKY5WaUjdS6aS6nw34ijiWst4qwn/4rhcacFb9UU08XpNE1EFRyudeppxWBXExYzO3MjScH5uKZoJF6MyKivkLDNaUZ/OMm8kog9PomGZ2QspjW2f5udEmmdLi0KwnOSqn6203OC/TQeHekJsz0ufRmv+Ar1wN20MBVX0bLVjmhaw+jdDPZvkchlY/pgOGt2SlYc2VU+3GSOnGblT11gdOY9R/T13kPHR+a/uHJPc+8qBT1bYjXOT6eFcruI3d5Cg3+YGDc24JNaKfauL9uGl7wD7BZygQA/wgcnPNS1daz6wLddN7Mtt6NZNG8SjLmUxsZjxJorLPGj9WWnSiZ7+tiLn86u+SbviVWAPFJjIz/nU7DinanWc0veg11X7+/b7C5kh5+XBnaEe79iTYdm1pza+Z+ZVuMhM62iN6AAV5RWpJY24OtNZ9lpqAHumQZA56y0vvdfAAAA//8NbvBeAAAABklEQVQDAJtTqthuOZOnAAAAAElFTkSuQmCC">Show notes - open source is awesome</A>
<DT><A HREF="https://www.techtutorials.tv/sections/linux/" ADD_DATE="1722980623">Linux Tutorials | Tech Tutorials</A>
<DT><A HREF="https://asus-linux.org/guides/arch-guide/" ADD_DATE="1750469013">Linux for ROG Notebooks</A>
<DT><A HREF="https://www.learnlinux.tv/" ADD_DATE="1719698331" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACcElEQVR4nIyTO2gVQRSG/5nde5Pcm+sjQhLwgQSMgqJgtAkpRFNbCGpjHSsbiRK7VGkkBBsrEUFsJE3EMgEbI+lsEgRJ8P2IJhj1Pnd3xm93JZDCx1zmnp3z+M9/zpyxypfJ/kdU0NZl/rK3OHhNnh5UEN6Sd2uc7urq7EP9xzI6r0DHh7ap0H5d5cKY6lGENpTTtIIfV1QvtBSWCorqPovo7JRafI8++ZoDTJ65TMZhGb8Igxtybl7eb0j2pKyDkbkoY3bL+Rh3RwTwNlQrfqDRuWsW5SEcepCJQmMIruASUdVLeRy99hHQowCQjnCvrPbw3Strz+nm0ZIl83P2z4xeYGmi7SNrEVCCnQegxXb8ampEt5XoY3YWZ1exVol5jaIGgwCaCL+GEQfv8i6ZtFALsyXUE+hrnAF2hv74NMtbsq5iKCpxCab3RERImznKlxTFE7D6hL4f3S61BYGaMcirOLVXvwDyhpxtGU0pzhplYOBSEsaieYYGvTkB5D3V40fIRB07Ma4vpJSWaYxRpVghoh+6KZM0IJ2RRNYfQfblZSWP1YpWMsaUYDWu9HrqGGa00bwP2DecB5DbAYgBs/DsVpBMw3CZci/RrsGsyeV1epAtuPpgDDnPYYHs3YBeoIwOHBuywRANLsuaLjL3500kcbXL5DPtUU0NnyVDH0HpTJQA+0y2F1juqL2wAxbZ3ClKpGIgVVsr+v7hWPh7oOn27MzmgE+d2q8kOCDXeqWgWFUjTm+DUtPrTNtH/V5z0lJt81XRC6tFoA5jGlc+AyMDBR0s98qH3EQzfwthm8m+G0/fpX7mj49sPNtO/1i/AAAA//8TJ+EHAAAABklEQVQDACRK/2+qFtqqAAAAAElFTkSuQmCC">Learn Linux TV</A>
<DT><A HREF="https://docs.digpangolin.com/self-host/manual/unraid#unraid-deployment" ADD_DATE="1758048908" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC6ElEQVR4nFxSS2gTURS99743maSZxPpJBfGLFfy7UPfizqWIf2sr/nGhG6EbUVH8gEtREYW0C/EHgqAgLiyICIqCteBKpNBF26AmnSRNZua9650hKcUHwzDz7jn3nHuPhtbh3aDwGZj2d/VIoZeZzrsKRoIIX5dGx5+uGIIGAyBKebsOYdZ5tw301sVd6xhhJRAgIezvSNGuwHAM+VaP+PLcwckXs0lmCKp9C89qglMWYKVCdJTcNAwEFpiQgdIaSQtsKoiuzhkoXWiTYGV3fh5m0/czmnY1I24IZVoubUugiODYFjNLMQJmHdKVwJzuLE7ei0nIUTprGe+a0HaL9I+OIJJyOVpaCEDFIJHkWPlvLYMCvF3a17EoUdC2MNXXNZhzqKcashE4afERWS7J1Sd5Qinc7GVoyVTdvhKeivgayQ+UrlMC7l1wIpdWPdXIRmIBZRYQWTsuhc8J7HuyfHG0NtFdm+Z+8ZTx0jRXJrAmxhLvABdBnTOReI1dMqBNhoudoui0IrphFb5c3lE46BXHb7Ll28qlHVIbJAT+gsJWga0OLShOLAkHg+nQmK5F/AEazeW5INwYWPosWcnkZY1+JXyAyGPlnjkrtFK4XlqXpf8bV+Me2XmsA4yN9fCVzKPyaGtMI0ngAJQPjX4Ad4NW7k4KRTKzOSeYlylN4p7j2KDsDjkyIV8Sm2shlbzlGdoGmB/0fwvPAamr49Th3Pz4R7m3sCej1ZOmYSudxQLp6ZCfesWJffDf8Q93nQSia16tvmpmjdMHOpcZx/2BBGmbpIAjV5HTZH4G1tzxgujX35Sz1GHc62X1Gb8Wnc8PTN7Clq8kln7fwsdeivb6gW3kUpSuyWSzstNaZOPBTkucMzoj3374MFssHU+iOltaBM3+WshjEpILftM+FNZqNTQ27iI82lj+XvfNUa9YOtZKoZ2x0FZR7pm/XStWXvHP28qhQjcp3ISMbkrBz+Hhia9bvkA4u+k/AAAA//9fJDG2AAAABklEQVQDAIVcY8o8Iul5AAAAAElFTkSuQmCC">Unraid Deployment - Pangolin Docs</A>
<DT><A HREF="https://awesome-docker-compose.com/" ADD_DATE="1758205357" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACU0lEQVR4nKRTPWgUURCe97O3l58zkSiJYkwMCCEYsLQQOyGNVUxh5y/aWBhOsHMVrIQUBsHSRpBoqxYiUUQDphAhSRXlckkRLpcz5/3kbve9GWd3zzR3Z5OBt7tv3nwf33xvVkKbGJ7Njw4//X0a/hMP5+rjsinrUZQTZG8oQffiJIlWBLiSWNbNBA+il0WTowAaQEGtCIoHNtwWCu7HEOkooR1n2KNkf/pHFzze7IrUed4exoweQw1tQnJwGwfFQOFFCgfK3dLp/3lXTMQdcUus7eTqKuiIcXlMwKspjA7HwiMSQhUq3MeOAMozVdWy4pEnW5eM9bNZIb6EpYUU17VTcOLZdpoJRkECabBVq7SWKA75BhfQ0htpE3ZtujcjRmY2x8GBayDVEIQaiB9My9QCMWwX+VsRKGWxXv5GRFp393lkat+Pl3YndcqlzyWZ7AFruJDNVg1b0LIPkZvcMgEDQKcOT2J1Z8lUShOgpVsRgdGBxY9g6xfQ360LpRxG1Cg0CTApGRd7hoYVuFj7Uw58urqePrIY5p/Pz2udN2a629FnhOP2s1Qfg+C8EdpNuM57rBZJSOmIzp5QVs5Wq5fX04OLfJ3hHj9lMlrmpod+GWsvMkFWdvYkpFI3HUXXZaLTkV29CdBunYz/mkrFc2vpwXfxLAjDC7dLhqXGCRyc3ToqMbgitXuWr06iX8uwj0u2I/khe6tvJR6yuPbfTd1+S258jeEseB5C26CWI31n5muHbBBgVDRHKpqycE3Nqb19BGz+HzYWNnwB+4hHL0un/gIAAP//KUx6GwAAAAZJREFUAwDWHBMXQl0TagAAAABJRU5ErkJggg==">Awesome Docker Compose</A>
<DT><A HREF="https://netgoat.xyz/" ADD_DATE="1759936875" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABpUlEQVR4nJRSO48BURTeGZdVeATxikg0alFoFFRUIhGdQiJRqPwAfoTo/IctKCU0IlGgkqg0EqIQFZHYmJ3Zb++ZnJl2v+LmPL7zvEfE4/GP/0AYhsEKyXgVRbEL9JoBdrZDAoKqqrDoug7qjwTHCDt7NBql0+lvCRg/JQ6HQ6fT4RglFotRDPIlEglQQUomk3CfTqfX6wX1crlwBdVqToj9fg/qYDD4khgOh6lUCka4mGZWQD/3+71YLI7HY7jn8zkKlstlvPV6Harf70dXVgU4ENPr9fA2m81KpVKtVhuNBmbr9/tOpxMEs0I0GsVO0DqE3W63Xq9LpVIwGITvdrtNp9NCoZDJZM7ns9vtRpigNQO6BJJB1jRNlYDKa6W5VaLSKpbLZS6Xa7fbz+fz8Xi0Wq18Pr9arTj9XxANjWQgofRkMgkEAugN3UPFJmq12na79Xg8NIbD6/XSxyHH8XhcLBbhcDibzYZCodls1u12N5uNz+ezhuaP4zrwRSIRqNfrFS1wbnNaulY+Qbqi9/sNi8vloo0zG0Zhv0qOxHJYtrsg/wIAAP//eL2EQgAAAAZJREFUAwBnOvvv/pIDDQAAAABJRU5ErkJggg==">Netgoat</A>
<DT><A HREF="https://github.com/netgoat-xyz/netgoat" ADD_DATE="1759936347" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABtklEQVR4nIyTwStEURSH73szZCiFopTFlM00CzYayp9gpxTFQtkQZcfeghQLC81kFvakLEjZDCuJsLCYwoxig5JixpiZ5zszZ+r2snDq6517z/ndd96557kG8zzPMWr4A5CEe/iCnPpbEDM+s4V1PJZhGhpq2768HGzAouM45UoAoctTxDswZP5nuzAKJVdPWlHxMYxBCj4hCxn1TzV2CMOwJFqpoF8FAYizOcNeEL8D3vSNrfBKrEBsHX8WvmFQEqegXhOLJMhBJZKfrJKfpdEaK+rLGmFSNtM43ZCHXoRp7YuH72mDK02UNRbGvYEmuJbETu3yCzxoYrkmrgmt9aNUpH7YVbGnJ4bsmfCbxuSKm1UXcLXTYm0Q0zKDvuGSzaBWIU1v15dmXb0eo1cl0xYhsfjHJ0iDo6Y6SEYrOJED4rpIwgXckrgHPVYFUdjGPYMIyOwUICFlXRLcZDEHfXAntwEf1ufLDU2oL+McgjW0V/YoH0EXLECG4LlVgTQuY6rDJbYPI/Dj+JISMK5bLRzyrjHpuvglzZmXqZRYsNZlrFKm/Lam+l/krU+QsV2FA/JSlsb7BQAA//8fGtSHAAAABklEQVQDAIsg4TDVy+61AAAAAElFTkSuQmCC">Netgoat</A>
<DT><A HREF="https://github.com/lissy93?tab=repositories" ADD_DATE="1779738878" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABtklEQVR4nIyTwStEURSH73szZCiFopTFlM00CzYayp9gpxTFQtkQZcfeghQLC81kFvakLEjZDCuJsLCYwoxig5JixpiZ5zszZ+r2snDq6517z/ndd96557kG8zzPMWr4A5CEe/iCnPpbEDM+s4V1PJZhGhpq2768HGzAouM45UoAoctTxDswZP5nuzAKJVdPWlHxMYxBCj4hCxn1TzV2CMOwJFqpoF8FAYizOcNeEL8D3vSNrfBKrEBsHX8WvmFQEqegXhOLJMhBJZKfrJKfpdEaK+rLGmFSNtM43ZCHXoRp7YuH72mDK02UNRbGvYEmuJbETu3yCzxoYrkmrgmt9aNUpH7YVbGnJ4bsmfCbxuSKm1UXcLXTYm0Q0zKDvuGSzaBWIU1v15dmXb0eo1cl0xYhsfjHJ0iDo6Y6SEYrOJED4rpIwgXckrgHPVYFUdjGPYMIyOwUICFlXRLcZDEHfXAntwEf1ufLDU2oL+McgjW0V/YoH0EXLECG4LlVgTQuY6rDJbYPI/Dj+JISMK5bLRzyrjHpuvglzZmXqZRYsNZlrFKm/Lam+l/krU+QsV2FA/JSlsb7BQAA//8fGtSHAAAABklEQVQDAIsg4TDVy+61AAAAAElFTkSuQmCC">lissy93 (Alicia Sykes) / Repositories</A>
</DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="0">Other Bookmarks</H3>
<DL><p>
<DT><A HREF="https://www.whatsmydns.net/#A/pangolin.mmcfetridge.xyz" ADD_DATE="1758114316" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAB4ElEQVR4nJSSS0gbQRzGZ3ZnzbZKFS21pWnrobS0trZqDMYHiKjkoBgU8aAXvXnxAYIHD+rBHHIQDyoKgqCeRHwdNPGBGEFx8WBAjRE1GGMgEU3iYx9udtcVg+8H/pjDzPD9YL4/g6LzasFrQC8m8hO9unjbx/BTH002jqruCJAgMBwXWPb6Rl+4Vq42ASAyPKqe1tpcJLqOFpfpcjX/PKxYP7RMm6chR1dmbpfHG8G5dMKFlPYVLO0q5SR2JbzXaRMyVFlRCgQB+vIVxqZGhgbq0sblNEOjkt5g+qYD+St25oiP5rH+fUYSRDKMJEMkvx+LIGHFcC7lUN4vzXgZSwBuSVJRFFGV/MHKtoxs+KGA62fTjZvfb/e8fNIbAqgXDd2HhRpnn9Pp+4O7NXCcQOSC/VMbpb43NOzzO36+dHDXwa9afQ2KetemxWjqrJ7MqvhvqZnSPpwyLsak2w7e9uRMmJyqZirTs+fgaZ8+xWxY/L1zHPlQuOwwtx/TY3E1xQ00/SUAREBgOtaTKLcSPEZwrO2ravdxKOB4wDJ2b4RhJRU8QVBgBdRlVYFzIK86Kls+viDI9NvjzlhizPHD7PkGngYP+5lyteNEFI5xrVuak4DiGQHe/t4YlEQJgme5AAAA///v68DpAAAABklEQVQDAGgIumeLH1fzAAAAAElFTkSuQmCC">Global DNS Testing Tool</A>
<DT><A HREF="https://gethomepage.dev/" ADD_DATE="1756910508" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABCklEQVR4nMSTu2pCQRCGR0nShKTOM6RMky7pQt4gNkleRFLlDYT0aX0AwU7s7AURxAvi5VzweN+d3TlHR1HwsqvFKfxhi9md75+ZXTYJMZWEmIptcLUblBrjf0HwNdYhjFQEAYbr5fPyZAi1llPoVutON5NKGQ0YfrLBviTw3MEdpz1YO3A5CcOFEXYEH5wbYSUbHAidoAg6fGnCatCcaB4jMsIKCUbX93+Yec+f7MAGa9Rg0t4ztmd6BTd8QeUNXNnCcq7OGzB860nKdRDfhqhfkRbPDGdt8NEIXHnGlany/djjsLfZ/rhJF6tKqjQEfTrZgSujvDPlxAOp35cfmAafYFACYuryn2kJAAD//0xs+74AAAAGSURBVAMAv0PsBQMOTlQAAAAASUVORK5CYII=">Homepage Config</A>
<DT><A HREF="https://airvpn.org/" ADD_DATE="1718195772">AirVPN</A>
<DT><A HREF="https://clubwyndham.wyndhamdestinations.com/us/en/login?resource=%2Fus%2Fen%2Fowner%2Faccount%2Fownership&$$login$$=%24%24login%24%24" ADD_DATE="1717983469" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADFElEQVR4nFxTTWhcVRg959773ryZxk46GaJp0LZpNTGtrbqxErFYqDYaXYm4sLgRF6LiH6JiiiaUirgQ7MKFIAgW3SqiCwvqolXrohv/0m4sNE0NhE4m076Z++79/F5iMfge73Lfvd/vOedz+N9TwewoYZ8AMQnIRoBCoCWCLwTh8y6mz6635/qfqnnrWRE3DSSDYFT//8zKbaRcgs2OeP/iB+sDcC3zzDHnqs8U0aslehYGshqkLAASdRVjLNhnpah/6HHjc8D30a45Tz8vqB2OAm9pooF6a2Dd04BkuTeORhLNFnt0ca+185dDfO0UMxzdqj3/JDDNHjoxIpgUVUnhmCOHg0WCTHrIWcYtFJOga2KzCz4tJmyKgy8A6UM5luOmOwbsLfeOstPrsLO0bIZ3bmG0hp0Vz/6RfhYBTBoOA2ON0FnsNhJv2tqUe7CLtmx9fBvvemef1B+oy+SxKdZ3bpCRR26S8advE27u8cDHk5KNgUMHmhh/ajdDzMUwvc9FpcpkxOiTu/nrJ6fl/KdneP2eXeLnBX/+8AfGX74T2x7dLm4oY//9TWmM3sALX81pL9pMKsMKVlGCDPpCNKz26Ri8Z+JqXPxlkb61wl2PjfH0+yexY2KEzWYdf333NxNuKqlVYmDbIRec/ew3ufXQ7Zj4aErumdmPDcM1FN0crR+X4a4k+P34GSaXEmn9fJn5wlVJ05pyK/Psw7uzysCbOVdCbXyjGdqyGRfnFnDl3ApL/JPBDEmjgtZcW/q316XXLdi9WASH1EH8YVZwdIdyfdLYajMij3loG6WNjlWlK9IjaqIAW8kQtCKbuOj0nlEW8uD22oATSxZTCsR1BwEfHRNl3up9pL6iWqIqSuHRIIbRmUKc8RaheKOQl74tlciAb05ZPDwQxNwN6SqwqicVTKnHtYlgNDoOhLFO+owVvtcJrx5ZVeu1oQj48muLfUuqyj2asr4qO5WxlBXAmVLMenReQvH21fjKzL8zJOunMdWvh8rszVk3PaSa3x8MBkM5C4bzMfJEjOE48Pq5a86l0z8AAAD//5MLiDMAAAAGSURBVAMAJqtNVbjAvT4AAAAASUVORK5CYII=">Club Wyndham</A>
<DT><A HREF="https://football.fantasysports.yahoo.com/f1/736840?guce_referrer=aHR0cHM6Ly9sb2dpbi55YWhvby5jb20v&guce_referrer_sig=AQAAADevRWhTWDqr_wtksRKeQzesHJMEWtrwqYLSHOKq3B8sK-oe74qqUp5RQKwa225oo9s0DnxVXzGPcacaJQr6Um_8eNBftGRT0_vmZxNbTH0yCgWydmPj0joESgZbx1DnZXj2tXbxvQFVamIp-6gVi33dVzeHkH8_vV9VY_vUIP0Y&guccounter=1" ADD_DATE="1721925409" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAB9ElEQVR4nIRSv2sUQRR+b2aS25zhNIegGIUUEbUy4iEIptBWUEhjEfFX4Z+hNoIoiJJKizQ2WlhoeZpAUDF6NppIguwFBBGD8cx5u7e7tzvzfHOT0xhMMgvLezPvfe/H96kL+AHWP0SEiH9s/qtNo8kFAnAifxsl2GjgHMjlBRlII84k0UECoUDINjDfSuuigJTo/L3+m/6+M7d2tkBzmOIsRkqMiY2RgFtQct0g05qxAQ4M9Q5fKkqJc5NhBpSTqBgs0Wbv4fyhU4Ufn9Op8Rp3fOJscdd+78XD2tHRbQJh4V2z8qTugTQZKTdREprTV3aw8XEiSEJ9+cEerrPwpjl8sQ8FTt2vRVr3SmU02GlyQvjzzWdj38lQaaRQGtnK7Ty9vhg3dRwYfzp8+2jZA2GMHRUtD0g8w+DB/NXKYH0x0ykVd3ffOF4dONIjBZbvLukMhN2v3axdqy2Cwn8fzZSDoZMFvqk8Xt4+0D16u5/t6nQ0+6rhcWdgGRRu3+waoPIdBrMzvRz/+el1+GUmmptsfKvGXRxKK+SsJU4q/Dofz04EcWKulfysRZqDULh+Vio47piEY+f6ol/6+dhSI9Fel0hbbfG01dERlBu6I5uegkXizVi3/bpGf39bciIL6toVxc5O3NPqntVqYcp/dQr/O78BAAD//5iPSZ4AAAAGSURBVAMAZo36Gcv66pUAAAAASUVORK5CYII=">Won&#39;t Support Group</A>
<DT><A HREF="https://www.nerdfonts.com/cheat-sheet" ADD_DATE="1727797647" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACwklEQVR4nGxTXUjaURRXZ+YsymRhRbkSGrqauJaVBXP5MirsxWALidgq2B6GMCII9iFEYEEPIYs2idZLQUhgJPNpZZBJyppfOHVTN4NEUfzApo7pzg0NdR74c//3nnN+93d+51wcpoSFQqHqmZkZKYVCCVZVVYXpdPr3iYkJuVar7c1kMtj8WGwpALvdzpiamnqP/pPJZJnf76fCSiCRSL83NzdFXV1d+lwsrjg5HA7XqFSqhxaLpf3w8PA+AmtpafHMzc29rqiouCASiYn8eHz+xuPx1E9OTi7v7u4Op1KpshxgbW1twOfz1TMYjG8sFsucn3PFANW2urr6YmdnRwjJ5TkfuhEo6zQazQOhUKgoZnzFwGw2t+/t7QnS6XRBWXg8/g9iAQJyI5EI2eVy6UHUnwUMTCbTHYlE8qa7u1tHIBCScJTO+tNNTU1n6+vrTxOJBDEYDFIApKbgAqBeNjo6OgvfFo/H03q9XtrBwQEvWwYGhIvF43ESjUb7tbKy8ozNZhsLNFCr1XwymRweGRlRLiwsTCP1FQrFo8HBQRXMQKy/v/8zaPOcy+Ue43C4NBaLzRQwsFqttzs7Ow3g+Guz2T709PRoBQLBJw6Ho5XJZGIqlXo+MDCgdjqddGgpE3L2CwCAXmVjY+MZ2jCZTAcsjqwvAOW9jUaj1ejWtbW1GEzoDUyR4erq6s7dbnczBF/X6/V3852IlcPhuAm+ctCmGdgE/gPg8/n7Op2u12g00mHaJPPz87Owv3dycsJBnZFKpa+gxbcMBgOnr69PUwxw+RaWlpZeIhZisXhZqVQOQwILnXd0dHwdGhpSLS4uTre1tVnBLysJAI+lUi6Xi09PT9ljY2MfW1tbL3UA+oyNjY0nMInH4+Pj7xoaGi5KAiCDOq8dHR1xtre3H8O00aFlGXhEP0Qi0RZ05AvSA1PC/gEAAP//p+gAvQAAAAZJREFUAwDqBUa78/uKXgAAAABJRU5ErkJggg==">Icon Database</A>
<DT><A HREF="https://www.pling.com/s/Wallpapers/browse/" ADD_DATE="1727907447" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABVklEQVR4nJSSzS4DURTHz//oNK2KsLGQRmxREnbseAA73kOCxMdiIt7AzhNgY2Vh3SDCqguWGk18LnTRFu3MPW5HzEzH3Gl6ksnc8/W7/3vvYepilbV8NimPsFPby0+DeZ6Z5pRLM8Q0BcIgQd6I+KgJZQ9tPX4YAY39sRMCVky7Ccl9s8ULw3a5+hfjSEWREuViIm2pzXCsA6BcjgDUqYgs668cQGTRCMhRuaRl+vKU8Jc4fKOXNT+m0DICYJPSMi98H7TKljwDKPgNTGdGwK9JMZBLfR0ZoVK15RwkAwRxF+kqkWOXnaVR+6kRTqSilVknd/tp1dtF/V4nuYcDcHax8/IeA/6vAPZdU2u99guE09iOb44FeKcgDt2DzFKCxQNEFQMYJh/s8UxPgFzm+0oPj/fe+gmtkZRb6AmAjde6CC71UJ1rd12QqpgAMCXEm6P2L9l+AAAA//+LzG4nAAAABklEQVQDAGEAfxZpiytgAAAAAElFTkSuQmCC">Wallpapers</A>
<DT><A HREF="https://medium.com/@dev0611ganindu/mastering-docker-commands-a-comprehensive-guide-6474637d65c5" ADD_DATE="1720549868" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABlklEQVR4nKRSPYvCQBB9G+MHVjZiZ2thfWBtI5aKIOIPECwsbPwDYnlylX9AtFawsBULwcZW8AeYIlVSBJKYy8xtlkQ4lLuBSTZv3ns7uxkNwGeYbph+mI8wgxf5kFyPtEKCkG+B90JxtZizSKVSkRnCdUJB3xKLxKwTsiWBv3UQaDGRGAwG2Gw22O12mEwmyOfzStHtdjEajXidyWSErAmKIASwWq3QbrcT25xOJ9TrdVSrVZzPZ8Z6vR50XUe5XMZsNoMeBAE6nQ6LXdclSyZ6nodarYbhcIhisQji+b6Pfr+P+/2OQqHAPJ0ezWaTi9FlkQklYa1WC7Ztq1qlUlFrZZBOp9XO8SCMiJqmJTDqJgqu7Pd7JkVtUtJxCNtut7hcLqp2u91gmiYcx/kxIMflcslEuky6INo1l8vher1isVhwjcyotl6vcTgc2JQ7kv8U2WwW4/EYjUaDicfjEfP5HIZhMJEus1QqYTqdshltZlkWXg7S85llJAZJAc+jHBf/Msr47yiDLGkiPuJdvyGmpMH5+gYAAP//YXX2dgAAAAZJREFUAwA3Zq8OWeORxQAAAABJRU5ErkJggg==">Mastering Docker Commands: A Comprehensive Guide | by Ganindu Prabasha Pushpakumara | Medium</A>
<DT><A HREF="https://backiee.com/ai-generated-wallpapers" ADD_DATE="1721776073" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADdElEQVR4nAxTS2tcZRh+3u/c5szJmcnknsw0aTKJRStTAlq8pCQW1HaTFHThQgQRha66lq79DS78Cy7ERYugJBVciBFsbjaXJs1k7jPJXM/9fOfrebcvz4WH55ERX3d9bZFdb/0o9M5a/VeV8ZBoYoqDWISzBsd22cHm+CSefPFAQNYiOTX0jMnKw+ajR8fSzuxKxhiTfxnOWXeCKsfgdJIoychJWaQvSXRtWaP8QoKytTbVWAonuTwlzFReSurvS/c+/ZlZyvi6FGrv9j2HK5RB4toMRYOEMLks2v2BqHFbyIVIrHyri++wS+Mhh9dxuaSb7xim+YD1g+RcaOsR8wBuJGh0ZVzwhXlqlZIk9XVyI0GnLzw66RIt326L9+Q6+ZIGcsOIqYlZ1vV14fQNYp4iKIhicINyG9NAYQVnZ2M4/z+BaDKJypWMhgO6mbkSyuy0gOOTiElkH0kM+rGyrRMLHKKgAWXewrx/C4ZxH0/+2YKjWlj8WMWgC8QoSuRzRO0uiVoLzGNpsrwhhFcZMAqAIxtKpgwytpGdsvDJGx9h72gEf5QncDE2g1qkgw0NgSIOXrkk1lLTGEgG7MYoIMmIXnnxw4WarcNXdrBoWLiv38DWQRJ7PIuyOg2yPUSNJuT/jsEOR5MoGRk4wQzcxjCY6qP/VwihxE7MJlx2gLskYe7SxEnPRFW9Dqk9gPaqjunDBlgxl8Th3AhqqTz6UR6ho4J3AvSOApDZRyDVoIoSPnADNMQwrrw05LMKcjtl5GwZ8tFSWrCWjRlNR1K7BWb4kMXfsA56iKYEIrLAnXN0JxbQdMegVXtIVVqYe1nF0kRbyN3Ps3h+2BTN307FbhiK1UyWbs4WYPZeoF7qI4rJ9wh4OjsJcW6DRwOR+H1b3CuUxWdfypASo8tr+DC/6i4Ece/32X7nJWp+nYQWgvkczx0FP2ULuPBHgEZHZHf36eHIAb76Rod3Y+5PmT/99xwsYtLGFJ/cSAtz/4hVil2xeeIiDIZwqGVxYekIWnUUqjV6bBaj1TsCoTTM/K5clHx3pqh6vbvC5TkvHQuP9aCZDtmKShVHp8tG3NqaTW8Xm/Q974rbcS6qmZYsSm4PR+pjCd6xqxn5LXS6b6HXvx4EHEHPRlh1wUse9JKLN88crNsCC5os4j0LKMozOYi+TvywWX4NAAD//3TcIyUAAAAGSURBVAMAd0u8iJdWe8wAAAAASUVORK5CYII=">AI generated wallpapers - backiee</A>
<DT><A HREF="https://docs.gitea.com/usage/packages/overview/" ADD_DATE="1755122246" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACm0lEQVR4nKRTzUtUURQ/5977nDeOY6NBlGO1iIw0UGhjtigXRbUoN1pgCCGYbVwELcKFtugf6DuMIheBCQW6CMQgw2VJC+2DHCqG/MpmnGbGcd57957OGzOEsEXdx33343ze3/kdAf851K8Vmx+DWLuseQvkr73+rwfIP6C/v7K6+PdTU4CDNUDIqgi4avAvo+Cx+XZlNGIXn3JdMiDMEl9nBVIGlczmMlnnUFWLnpx7IdLeYpHUdlCDKZYgI5rcr6rtzs4DRUH7Cbv6IQi2S6WCxiMwRISe0NKyDErpEFjKuJYSClGQkLKIY7tWTKhA0Q2j9Uhf24c9QGaYjY3rGP6IeC+S6UXL0x6ikRaxK+2wX5e0kzNsBloIxKgmM+RjoT2KCwuQBwALNHlwuv4SbQ5vk8nlOcg7GSpIWY7Kx471jTYLaMRxH0iUZsx4gAKEXM6nqG5HI56o7UB+TqDr6C1RHW1A4ysAW3AA0ua14HSuWrZsP3d/d3cubaa1Y+IguaRcoKb9XRD//h4Uh4uEtsDlk48gZEfA8xxJnD6D/Vz0d8YGvLzXaVnYFY7Y48qytmZzS9RQ1QRhuxw+fZuEY7XtmMjMwcTnUUikZ0wgaCMZ+piYnR6XfinfDCVf2fV4t7w08BI0zvATDwtQ2g6EcG9FPU58GaWKsl04NHET5lNxryQcVFrr6wMXE6OrzOoFwdOskaP9XtWIVvkjTgbcfZUHZWP1GVjKLcKDsW4TLtmkyJjZpJuqe3phfgHXs4rpLAdbwLT2RaNBVTLMaNall1NgWyEoIM9TSJFw8t7Z/o7YMz973IiirdfKS+1wWYMQxVzePBNLE1pCmZWVdw/Px2NrLYB/ofjG/bGufzbMwJcxLn/Ie3sK5r+d/wQAAP//G1c9ZQAAAAZJREFUAwDIzjUIMkBcSQAAAABJRU5ErkJggg==">Gitea Documentation</A>
<DT><A HREF="https://ap.www.namecheap.com/" ADD_DATE="1756321545" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACW0lEQVR4nIxTz2sTURD+5u1L2m5riGml2qIFrRJQT8WCFRS1Z4X6q3hRUTx4EzwoeFHqH+FFRFAsWMSTpx4sIiJ6EbFKPZQisbEaQzS/dve9cV7SpBEhOsvu2/dm5pv5ZubpzMUBX4ed1zXMCcNeyjLaiiLAI5OzRI+isDylnfMG37tWDAiRFQtqDwAJoJVOdcfV1RWB08Q8WQwsStE/QrdI4ALBgiKe1JLK+j98WbRhVfSy6ri8sRadGEaBcNCSrYZVlJSvPN6aMwsHtW0PqMsHZxbA+WwdqAHetxko5QWo6gpiVSs5CivIjUygcOoWOi/fQ+zSbaAnJcYhUP4J2n0Q+sZTqKNXACNnxmINIKjC9A/DO3QWgaQYFvJQ6RF4Y8dqzuhKAOPnYRNJKTTVKcqqmtxMBOw7CX8oDf/LB5jZOzWV3n8alOgF7zwAHh4FL2dgn91Ho6e69uOKNrQL3t4JQTTg10/A83OwY7Lfsh1q/ALKA2mx96BfPoZaegf4PbWWqtpXOKrRI6BNg6BPr0Dv58CFnER6UA90+BxKG9MoLX0EPZ+WA685MHUKtLopFYHZu6uc18G8mIGdfwOd7EXMGljRqeUFIN7ZLB1lz2z93uFxKoh3A4k+ILtYn1cXQXpOyX7Q4A5wpQS7+FZOJWNSiItNlfmHlhzkUfWov3JStY5meq7/nP8K/vYZzoZiHTXnpkgXtSDmNVEycLyUh7/ETWLrNDaOBScMOa+khQ/lYsAXKJfW/7zO1vnItZzW1pSnVsqKZCqPM6uURXtxBCJrc+UKz5ioePM3AAAA///9eb0zAAAABklEQVQDANTy7BxP3gKxAAAAAElFTkSuQmCC">My Account Panel - Namecheap.com</A>
<DT><A HREF="https://selfh.st/" ADD_DATE="1757193757" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACI0lEQVR4nGxT3U5TQRD+ZnelLb1Ag4H4U9Bo/cFEfAbv8NYHkMgD+DBemuATeEniY5gYvdBelCaoaBMiBuyh3R1mZvc0UNjm9OyZnW9+vm823Hv49Ln37h0z32EGA0yyIMv+zixxYTWLA9Snf5KwRd3H6wP56KTEUQ/EqQ5w6cpRiJ0jnxi7Qb47YlKws7Q5/IUKSnqU6KQJxboaZB9LSUgpwfkch1MG1MtlIEf1cerDUi3FoJmnwR2lOBrbqWsEDaJWeDH8j9EIaDonodkwAuCA3LS+kKpI7ZVrLKno3+AAfs5b9qMY0W01xQn8fVRJEFIfgSQKXLpS8N2Xz3hlY816H3z8iv6HT6iCw5sbS9hcWlSJaHt/yG9//aG29yaZk7IRqwnat6+i8+IJeCKVyLO6sQZ/cwFdH/B6+TomyrQE3lpexP1mAyPlQr6FRC4sI2+p0M+18ZwWs+IIgUKUnws42jvA7s5nWFh5+jtfEH8copcmeL8/xBXpMwh4+/cQvVEFIRNJw3UfrUdkRiidRMzfWjBFjvf+Gok6dlVMeNBqWM/fFKy6l/o0KGVJiHwzpOOfhyaj7KluoyWzIexb/fMqI1DLmIKqR1SUSEyhEfjMINmBZm55b4MkZnuL3YZTSfQ6UVPnZMTNXghKfJ7RcvGkNnIDvRhaCWZmXzHlyWDKnauvYvRGOpH8lZz2SIeL7VekpOnFqieVFGyOshXMeJw2TwEAAP//Ph0+IwAAAAZJREFUAwAkWjgCAYgltgAAAABJRU5ErkJggg==">selfh.st - Self-hosted content and software</A>
<DT><A HREF="https://netgoat.xyz/" ADD_DATE="1757199083" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABpUlEQVR4nJRSO48BURTeGZdVeATxikg0alFoFFRUIhGdQiJRqPwAfoTo/IctKCU0IlGgkqg0EqIQFZHYmJ3Zb++ZnJl2v+LmPL7zvEfE4/GP/0AYhsEKyXgVRbEL9JoBdrZDAoKqqrDoug7qjwTHCDt7NBql0+lvCRg/JQ6HQ6fT4RglFotRDPIlEglQQUomk3CfTqfX6wX1crlwBdVqToj9fg/qYDD4khgOh6lUCka4mGZWQD/3+71YLI7HY7jn8zkKlstlvPV6Harf70dXVgU4ENPr9fA2m81KpVKtVhuNBmbr9/tOpxMEs0I0GsVO0DqE3W63Xq9LpVIwGITvdrtNp9NCoZDJZM7ns9vtRpigNQO6BJJB1jRNlYDKa6W5VaLSKpbLZS6Xa7fbz+fz8Xi0Wq18Pr9arTj9XxANjWQgofRkMgkEAugN3UPFJmq12na79Xg8NIbD6/XSxyHH8XhcLBbhcDibzYZCodls1u12N5uNz+ezhuaP4zrwRSIRqNfrFS1wbnNaulY+Qbqi9/sNi8vloo0zG0Zhv0qOxHJYtrsg/wIAAP//eL2EQgAAAAZJREFUAwBnOvvv/pIDDQAAAABJRU5ErkJggg==">Netgoat</A>
<DT><A HREF="https://noted.lol/" ADD_DATE="1759494848" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACfklEQVR4nHxTS2gTYRCe2d2UNNW0Ug1ixVrw0HoRtYI0xUcPrYjowQrixQcWKdgeBC+iBz2oNzHgpQqCoCcfqNBKDyJVe7IqFXIQIxRNQ4qiNBCT7GP85ndTApH+7Lfz/7PzzfzzWIuwRIQpXNgngTvAV6AMlIAMcNt13Z4aO8OpJTZCXAOGgQajwxMaVO0qwC3gAjOXzAcQLcgo8BgYwDmADMCAntm4Uf/QQVogqv04cFgdqiIIIw8QuGoAY1tUMgJAIaHuH9k43A9cVS5XKpWdjuNM4WB/TGfo/KUUB2Juby3lhyO4QeC6fP3yiOzY2kWBiIfovU4kEjkDi4j6ffBoUtoTcRk+Pcg/FksIbGseuLtQLNrAT6fe0edsntUByFqnIQevPRoCxeBDx/bRe7eVm9fFeXuc6tZMyxYqmJ261AypTx20+T4SRJZupoPHPxA92eBLIie8O0GU7CLa1EkUa2KStPYOtE4kHyiH2pwl99DnvoicbBQ6cETozWxAszNIa4yoOU/UvZklkbapo09Lg2KbnhCpg6xlU7uWrSlZpoZolGOORf3byICGiApzRPOTxLE5kfbugloyOLqy6uAVXJ4gdGrh0wTde/gimN7Vw8U/JRjZgmuS5fi8clVUngVv6Wimn0Z7BtEWM1wvq218rT3OLfyisfvPuVAsklvxyPd91u7YbEvEcaR5RcwaPn4wWLO6RaN7QC+HY3wTYjRUmrqcvZiSb/N5MzYb16+l1JWR6lhUbW4g6Lm6UfZ8X3vk//y9aHueZ0i4obS2xH1c2nZs9EtkAmQd5fKyP9N/Vv3PFJJZRz7cJyFOQe7VGTFGzN+1YMBd7KdrOX8BAAD//9Ze2GMAAAAGSURBVAMAtIoeeTVI2rIAAAAASUVORK5CYII=">HomeHub</A>
<DT><A HREF="https://dashboardicons.com/icons/nginx-proxy-manager" ADD_DATE="1775572393" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADh0lEQVR4nExTa2ibVRh+z3dOrl+aJk1SuthuvTBjS20VumEnbLIKG7NSSmvdRIaIv8ThDxmoiIsIBdsfCsIUFf9uLlvnDdcpUhW3xpXO9odrql2b9JI0lzZfrl++yznHb5dsfeHlvHDe5+G9PK8A941zEKrxBQCsn3/ypHKue2KmP3Bx+tnASBAe/nMIPojRfSBHyOCYAgJ17cOwaT/KNM7ZLb6aWWYIpdFhr8u6XozA5aVKeKJnFrQqEaoy6be7hjDXB9SCfptGrFlhDXOeRDUEI8rjQh8q45nShla00Ec6FKnzB9fS6IW7FeSSLx2xO9FpkrxFqJT9bPM38yDV+XO7K25HJaPFaBqpomDaq6yggpmbJ/PxrhC3eN4oNbfRkkkbR+l8P69FdNFEc6/DTeUryNMW6S9KHTK5rGP9U8gQWI2ob5a22ICIW3FKro05HY+/il3es2sEBwgvZCnXiu+CKr4PMrRAGc65mPks+mT2T3hof1ytf+xAFGmn7EQ4jjR6pizo70gWEiJ1ue0bIDMbJIVDLEcXk4XMa/6P4mXl5P5Bo/vTsGZCOtXG7ddmJoJwcC7gIU9oOH+QNfm/rPd4wgJ+1PsPXyatgAmlWhuYyMs4day5QWP0vJ6CXrWiPZXfDnyz2hT0FyFqbE3limc3K26ilqvX5hYElkMMFKxDTsCQQhwgc2/XecFw48V7AOFWbhNUXgYVaU4XgLNOUDUmVFTGBPg1/zyyoKf1OX2RJ1Zs4W+/pvU/RTchgU8QLIaJZf+03ec97ouNJv4GH2X+gF0DfQ121Vxv7wjsQwtjHTeame17kBCBDDpkZTi7cT0z3hhZmt4xRFjo+7x3Xra8xbHgnUrMTuZYKd/beXiICFvIbLTlpDZ2k8ikHVQ+kpJZf2xP33dmvG8sLu5iosf+ds5lGnQ7XDiyHpuXmMIdULu3sl1xkjZKPjB0fMIcx03G4CZ/D6cNPVuPdYu9w0VGhkViBqtih3W3VcZ2fum/f1NKo6XxlA25f5HS0lhVykh5pedF2CBHK1lYUUxdGUT9vnzJ6tWtXrSMtbTkFdMZK/bJRbkhEdu48vHimR8NHEU8CAIKArvDMgVAeg48M2wXB44UtRrPapHm5ksJSJnFWrdYt1Vw4Z8bxJ5LI6FO9U5+cOcx7SR6wTjn0e4vhiRQP7xSWBYKjL4XjcYvhiBEq0DD7+b+DwAA///6M6YzAAAABklEQVQDABjcvhm5cfO8AAAAAElFTkSuQmCC">Dashboard Icons</A>
<DT><A HREF="https://materialdesignicons.com/cdn/1.6.50-dev/" ADD_DATE="1778262440">Material Design Icons</A>
</DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="0">Good Sites</H3>
<DL><p>
<DT><A HREF="https://www.carcarekiosk.com/" ADD_DATE="1774969081" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABoElEQVR4nIxSu4rCUBA1N1dFUARRYqNWNmohFoKFnSAIPgpBEL/ASvAbLATxCywsbQTBQrDRDxBBCyvBRhG085kEstnjZr1csruwp8lkZs7MuTNDLW8IghAOh0ulUjqdjsViVqv1fr+vVqvZbDYej/f7/Xea8fF6ve12u1qt2u12yw9cLpdWq9XtdjVNE/Hv8Xgmk0kul6OUWn4DqmQyGZfLNZ1OIUTo9/u1Wg0Gy9B1nelkTlVVE4kEiUQiUMIH0LdSqaBevV5nTMBms5XLZVIsFkVR5AUsFovhcPh4PAaDgaIoHxxCoRCNx+Mmxdvt1iiMtyKD1ynLMnW73SbC9XplGefz2RSlvMr/gJ5OJ5PL4XAwmxDCbOELdLPZmAjBYBABdJYkablcMg6M0WhEsHY8nyekUqloNAojn8/7/X7pDZ/PhwN5dQEPMZ5zu92OxyNGhNkz5/P5xEgJWjcajcPhwBOcTicOkc9GWq/Xw8Rf+na7XTabXa/Xf00M6+t0Os1mU+AvAhdWKBRw3slkMhAIYP1YCEYyn89xbKhtTOkTAAD//9CUo+EAAAAGSURBVAMAqwO8gmWISIsAAAAASUVORK5CYII=">CarCareKiosk Free How-to Videos to Fix Your Car</A>
<DT><A HREF="https://coddy.tech/" ADD_DATE="1774969865" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABiElEQVR4nLRSTUsCURSdNzPMNDP4kSk6UiFSYhRpBEGrrFYS0cIWLfsF1aq96xYtWrdqFeii2kYFQUJSGRiUHySGhRiDZDPj6Hx0w4ioXLjw8HjvvnPOu+/CveTIfhHrBDjWIbr/gGwdjbeaIgg4QTJOB05R37LeaMjliq6ptM1GmU3AEPbIevnsfAZ7WRmmg7SUvbiuEgxlsYD2Xnyy3iZW/XTIoRuPuVS6yA0OID56vOnTNiKBVkpZUcfWDpShUYjp3F16Z4mhvqrYjqe2MiSuiuK4t88wjFjsMB4/Ymgy6GZVSVJlGQJwAwkSGAJeO5hJxuU8SZXmJvrD4XmO4yBT/rVum/38IX9agD0SWRRFESEENtblxDk3v5t4Tj6UwS0panQvWTLzGEKwSiYerkCCBAawsW4eQaehgMrlVY9cq2ME4/FY/T5wG7oOWav3GblQ6MG0OmNyTE2SLIv+joZWE5pCWc7emKcXCM7yfx9+gjDZDLVpDS0jkmrbuN9srxNrg+7P0gcAAAD//+FKvFUAAAAGSURBVAMAG5KdAuUMQhUAAAAASUVORK5CYII=">Learn to Code for Free with Coddy.Tech - Code Makes Perfect</A>
<DT><A HREF="https://3dlogolab.io/" ADD_DATE="1774969959" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABxUlEQVR4nJxSu0oDURCd+1hjkYCGYGUTUFA/IGCnIChBgkKwNOq3BG20EUv9BS3sg5WyCEqMgsFYaCwCQmIhpsjmjjOb3GTzUMSBs+zOzpw5c+5V8P8Q/NCBhCSsEiYIni0YEoZwQXjhHt0uHCWcEZbhb/FOWCNc2inrhFOeHIlEQGs9OB2RRgmo1WqswCG8EZbsClGWFg6H4f7uTirHEabZ7NnBGAN6ZASuXVemNzaaFJOUPrcETV6FCEQ+n4fM9rbfK6WkoV0apRQ+FApwcnysMltbhv5PWwKuElxcr9cFyYQfQry8vuJmJgPFYlHu7u0Z3bsmdqby+9zsLMTjcWg0Gv5/x3EgFov562WzWfZD6sEZrWaOg/19WEkmAdkPpawZvh8cR4eHnXuAQbO6XC0yz/NAIQ7kBakNKkCSj6FQyFYKDDT1r2pJLAHr882jeyByuZz4+vyERCLhn3//aQSV2OwMfdwSY2h6asq4rqvGo1FAz+vxZRgJ33/OPlLBDp/jU6kEC4uLplqtsnFoPRnWbKVbogLhgy5LslKp4O3NDaTTaaHp6PAXEkuA7fcrUjKmpJwvPT+bcrksUqmUEHbfIQTfAAAA//8bFK7DAAAABklEQVQDAKYJunsITvi+AAAAAElFTkSuQmCC">3DLogoLab: 2D Logo to 3D Rotating Animation in Seconds</A>
<DT><A HREF="https://musclewiki.com/" ADD_DATE="1774970500" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACeUlEQVR4nFRTS2hTQRQ9M++lTfNpdeEnRXAhVVQ0C8W4b6DYmlYX1g8UUfxrQAR174ekXQluRFy7cKPdqCgILrSJaBZiBRdqqJgoJi/SiqQ2eeO9M5M2HfKZe+becz9zRiqlDipffa/X6z4tZZZvv0tWa8c+9fo8YyUCRgX9lADEHj2cxNrYGiQSCUAICAUoQVs6hIJeisB8Lofyj1/Yvy/FQElyMHt4tQoymXFyyJOplkcKs8tP5clnAp5XIRfNHpMtDwYq1Sqy2Qnk8zkKUAaH4WMskx1HtVLVbEJofiG1pVrZFKo1T2fhSoQyZxycJazmebot25COkAq2UaIMuAGMpPai2WjodqaoX+6Z9wvNBQwPp8jHRatqrsJtI4Skgnbu2o0Nm7fj3p3buH7tJniajJ88nUY02oXHT54C7TF2TIhEuiEdidrsPJ6/BY4eO69tKR2MHT+HZwWB2bl/ZEvyjZqOidxtUQ0ODaBY/EzZHLwqzKB31SZcvnJVX+fLDxKv333CwI716E8mMTS4x0YJbsEMKkqsF9JpFL/RoPyvmPvbwOp1W+GQ45830/DJp29jH5L9CYS7QmZuhLnMIux9h0MhrOxpagV9mfmNizdeaHxFd9D+92ifdn2YFoQw2mHBUDBfVeHjT+rXkDcJCAedJXFZiXJ7rq3ECMNqgQ8CAZr8gbjmv/vgvQnSIjAJjNRpiPxEhLAlWKJgp4MTqW04cySuB+XQbdyfnNYBiyoURqkuWWXSVK+pn0rqkDh1KI6xkS3o6DQdnj0cRyTkwqWqTHbzVuhT5tc4SvYtKiHGJPRM6RaUzorFF0F40yfVSJ3HpFJl2l36DwAA///J+vj9AAAABklEQVQDAIKMNu1OuviKAAAAAElFTkSuQmCC">MuscleWiki - Free Exercise Library | Interactive Muscle Map</A>
<DT><A HREF="https://www.ifixit.com/" ADD_DATE="1774970688" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACSElEQVR4nKxTS2tTQRT+5nHvTWgacVf9CYJLKa6qkrYiuBCMG3cFqSKFYMAushFEpIIaKIK6KO4rbhSlTZF04et/iHZjkZikvY+54zdzU4zrdi7DPXPO+c5rvtEoluC2XmpsXICUCxBiBrk94XVS/IS128jzNbTnP45jBA7W0vsqgvAR9QtQOkCegYDCJiW3BkyWErOGNLmL1Uu9gygCy50qErxGqVJD3M+ZzXqTENIHsC6SO/OLJiX2/2whxFWszPakLz22KyhNEjxIIVw6SOhA0WQ8WEeqKJq2uJ8WvsT4FpY2ZxDKLWYVUIFAGj9k5g6NqwgnTvsa48E3pmlSmofWLbZmqbdI8ppEIG5ABhqu6tywcfsGT+e2eTiHdO8VEm47uIj23CdY+ZZ+GauCxxArcKfzHVAngcxARRpZ8gWD/RpeXh5ifN16dxyl8AN0OA2TMJFmW+aHZCFTsBkLEsobwvJZVIL7frj1Op3uSS+XwyeIJqaRpZn39RhMyf+y+OFTZXWpUNSJLyywECMfMQ7RVO/w96+FZPCVAVoetH7NYH3kmfSb9D1Drpwaa2GH7EAXSl1HxpLyLOEgb6M9+5vcOIZUtGnfxa5q4dn5X2h2FnkDXc8JpQSM6Y5dI7VSCgZ6QNAGT499z66tZPiZdF6mfIVVNjgHC1lcY9FPY/M5ytVFTxIhSOPccNrFUF3PjkgmMZCK/zxFuRJg2HvBq71ZTDhidEfPiAY7egBZbGhSnn1Odk/NGEO6B9hzvsQ4sh/FYzrUc/4LAAD//8zAh18AAAAGSURBVAMA26Agv1AVgikAAAAASUVORK5CYII=">iFixit: The Free Repair Manual</A>
<DT><A HREF="https://makemydrivefun.com/" ADD_DATE="1774970773" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAACKElEQVR4nFRSz2sTURCeN+/tbjZN6cEiaY2xh4IoEX+1DcbQ5CJCi55qESoKCh4F/wgRjwq9ehU8GT0I7c2bJz1IpaSHliY1NXqqu9n0/Vjn7aYlHQb2Le+b7/tm5gljDGMspjAGOQ87v/fXvvzbaEIMIxen87dr2fxpozVDTGEJNAlE/PPtx87rt/FeV3AEAKUNTI5PPXsyfq2U8lJgiqbTwW576+Uq3/nlMqZ6fUo60O/Wq9WD1t7ABfESE6NkbLexhu19xllPMG9hPrNQ63HgHLHVaTXWLXlMWBCWHlFpHfxsCqP7YZBdXCw9f0p3G74XvGuIGILNpqYOkewYYUsBbM9Kca1MHPPRHLNcwMdGtVICQEuV8Fo3VoHgQginkJdfv7uu8/fD582xHEPWff9pBEAeSrrinNMYyZRVsAMFODV/Y/vjuitltt3pvnhDZD4DBBZ5YqJeIU2TmMd0WKSTL19lF6ZVv2eU9I32jQKlDqMQS+fzM5etkeOxQiLiZTIT9+4EiFxrLSUlahU6zuTyXdfz4Gi/A4W05tytGl6/JKOIdsaUlr2Iz14p1m9a92wQtvN0cfRxM96ZlaXQdZlSlIHvFR4sOZ4LCcB6AUhGlbaRiBTrFV6ZoXXIfuhUy2erc8P0g4JhEcd1i4/uR1m/nxspPlwWjhMP0dtNp5+0mvqi5grVue1KmXFeqMwSPRxxnyg4FiGE4Hzq8Qotjt5R+rAH+kn8BwAA///9cQkWAAAABklEQVQDAPrPORdIHUStAAAAAElFTkSuQmCC">MAKE MY DRIVE FUN</A>
<DT><A HREF="https://exercism.org/" ADD_DATE="1774970881" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACTElEQVR4nHyTTWxMURTHf/fNm2k7k/rqdIFaNGlDKqRY+AgrEbrAAhEhaS1ILCx8LASL2dixqoXakAiLacKCRFiwkKoEK9IETSzQRGRUI9SYmXf9z5sZLTJe3n3v3vvO/+Occ1/A78snFuGzegc0vLzrwC+YHRNPuvA7lsJoCxzUMmxMQJiEI8tgRJjttuHEllwJkxHcfonbZyra9o0c2HMF3NRr8wtoC3r0kHImDY9rUYn/OEgYeQYeKr7VsEGbdkTgm6Gpmo4F+bCuNqPsw55ayindhtFwYbpK66M4HRjHFf8VjlMqj9VWwjgx+bSxCpySpaAMX0xpIxwSWbsQV0dxHwywFt+tuP1SeDOCuy6r3+QiECBwB/DXFLO+AKuXw4AQmUl4260iDcLhkxKchqFXKtwS2Ko+P3gK9zR/JpEnoZgisQeLoWUh3DqPe2eqF/D3B2VdZyM6ptY53FePv3MRslOKFdhX4Ecg+2c0OmVr9wmB16itdlB2go6GbzqOm9ak1/aUQvkobkIV3iVMlwp/NhRLWYsoFdfGuw1y8xxXWoXv3Qbrkvjie6m+xj3qE+FdKCq+WUWMvlsx51Xb6OTAW7U3idBSyOMudcDHdgHyDJ+rFpOKvaWMYQxrNYj7WVKgfRyrtdNVCW/Y/PRfTVX8T6Vh/S4FE1AQ45TYtuT1Q+VqKnbt0dpGfZ3Dxe7mQJ8cfxqHz8Fliatqe8WaVftO5WYd5WFcxcYMgU8N4a3orcL027c/jusVmDsgN67BzySCoBPm9+MK9b1fAAAA//8rggg3AAAABklEQVQDAAK2rWcVxxcYAAAAAElFTkSuQmCC">Exercism - Learn Programming</A>
<DT><A HREF="https://www.startmycar.com/" ADD_DATE="1774971035" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVR4nGxTS08TURg9M3emLe20DBAGsKUFrCU8A4SQFN0Ro/j4AS5cuTEx/BZdsDFuwRhwZeIKYiLGjUIEE9FFEzeFESRtaefVMg+/aVJTWm4yyTdz7zn3nO98w3D1Yslk8mYgEMjKsjy1sJBNr6w8i9H6c3h46DUf5FqR6XR63HWcNzzPTzHGcCMzCkVR4LoeBFH4ZZnGw7W1tdyVBGNjYynP8754rqu4rouh4RGIogie41CplBGJSPA4fJcikbnNzU3Hx/DNBJIUeyUwQWGCQLf2wTRNaAT0PBfRaAxlqkuF4vTJ2dn9BuY/wdLS3awgsNsC3djZ2YXaxQVseuKJhDmayeBUVTE3M4twuANGRV9u4IRGYVmVR47jgCff1DzouoZUKon5+fnH/UrfS0mK9qSGUrCqFr7u7mbaFOiafkvXtHpTyuVz+GSzMzPHOzs7PznGunywVtHQ3d0DxvNSmwLbtlPVahUC+TctC+GOEMbHJxSlt+8jEfOaVgFFStZqpM4otymISpLgODZMwyA7FhxKgWLb2ni7sbq//40aLGFictIHo1qr5toUkGeVvMcsw/SjqlsYHBxUl+8sW8PXh/H39BTX4nHs7e36e5/aCAzN+MwxbtS34MCjPpShquoDUhGJUSoH+wfY3tpGPp/Xae99A8cahcj4E5rRJ67ncsFgsE5AExnJLi4GRDEAuUvG6/V15I/yq0T8Dq2TSCMcpCRe0NQ9JYTf1Hqc/QMDNERRnJdKKJaKJ+eFwr2ILP/I5XLVSwrC4XBnB8RjjkGn116e52T6HzjTNGiMK9AMvWBp2vNgKKRatVqZvpmXFPiJJBIJWQQSLlicZxhxbGeaetJrX9TyHtgHgXN/10Aujo6KdN5tJWhejCwJFGc95lAo5JJkm0qn9eA/AAAA///ZrHRxAAAABklEQVQDAOZIMGJHBZ91AAAAAElFTkSuQmCC">StartMyCar</A>
<DT><A HREF="https://www.lingohut.com/en" ADD_DATE="1774971147" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAATUlEQVR4nOySuw0AIAhEH8ZdXMchHMshXMdptFNDZ/wUxlcCuRwHFih0BEV0qfVD9qJrhkW+ANiZ4TH9bQ7urvDoI+kM9JmE0w6WBSoAAAD//+slW+8AAAAGSURBVAMAOnIPDYeor+cAAAAASUVORK5CYII=">Learn a New Language. Free. Simple. No Sign-Up</A>
<DT><A HREF="https://www.rockauto.com/" ADD_DATE="1774972865" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABkklEQVR4nMRTT0sCQRx9u6677mqioQWGgX9OddNQIw+C1F38CvWhOvRRFKFAJEEUPAiVmsqaIBqui6jsNjMGmYWHOviDZWfezHvzfm8YIRq9NQBw+FuZPP5ZuxcQti0ahgnTpCPyX8NpYBzHse9XAUoSRR5er4KDQzv23TIUuxWChWei2nSOVnMMVdV+CpiELUkWxOI+hMNuyDYrfL49JM6P4XbJmBKyqk5QqajI51tfAvRUqu5wWBFPHCGdDmDwpmGqzwkm4bU9Rvmxh5fmCM9PIzSJg15vshKgRJssIHnhRzZ7glDIjXp9AJfLhkzmFHZiv1rtQ9cXaDSGeLjvYLk0wPMkA2o5GHLh5jqCVCoAC+mzVuujXFYJYY5YzA9FsSIS8cHptCGXa7E2KZndgsej4OoySEISUSp1MZstmaNisYtO550FFT0j5D0RhUKb7Ol9y4xLJu8Mh0PkDOMTIMJUfTjUiU2TzSVJgExa1LQ5s76euaDrS9bbZq3ueTWmrmazBcM2S1hh29/Stj27fwsfAAAA//+N06ZaAAAABklEQVQDAMwYoKGXGuePAAAAAElFTkSuQmCC">RockAuto | All The Parts Your Car Will Ever Need</A>
<DT><A HREF="https://www.retrogames.onl/" ADD_DATE="1774973841" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABvElEQVR4nKRTS0gCURQ9GhMMghFRLgZqFShYfgL7LAqSomVQCO1a1KIW7SIXbVq1qijoQxDUslW79hUYGpnpQiEILIawtMCySfLTfYMT4zADQQcOPM7cc+bed3lmGGON+FnjmlFRg4G+vWhqXDjhBW6Ra+JMZak/hHIb6afaQpNBQDXDt9cJNulBt96Mf8JohBK1Pez7fkel9IH1cgE0wjLpF38JmCauJB2dfOfuNu4DE1hNxPCVzXpIzxBj6mKTxrjT4/PxA729sFqt8Hq98odoNIp8Po9QOIzrSEQiaZ54qHQQIF7NCu2TG04X1zHQh8diEVubm/D7/ZAkCcFgEC6PBy6nE263mysD40+iuES+OzPhODA1xfePjaL58hwc/Wl/bw+VSgXpdFomOzONgXU2NjIC5mFdsBFe7XZ7c5vNBrvDgdaWFrnd23gc52dnsmlwaAiu7m7Z/JLLIZVM4jmTQSqVevsNUC5CHaSG2qhADqARqoIgwGKx1BmUILlQY2QoFAoQRVHeQhfxiII8ekFaKEa6lyjbnHqNbM8HRkEa4wzxhul6b6EuiEHPqMDoMaE22m7tPEdM6BX9AAAA//95oiPVAAAABklEQVQDAEi3txiQO1MAAAAAAElFTkSuQmCC">Play Online 🕹️</A>
</DL><p>
<DT><H3 ADD_DATE="1782519542" LAST_MODIFIED="0">Media Server</H3>
<DL><p>
<DT><A HREF="http://192.168.2.10:8080/" ADD_DATE="1781281553" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADdElEQVR4nERTTUxcVRQ+5747b/5nCANjQSDQMtofqEJpSpuQpk0aibuS2m5cmJgY27j0Zzs7o9GVidqlLumqSTca05ImqNVBWqASytASwJmKDLw3b2bem3n33uN9JLR3cXNzz/nOz3fOx+HgECEgEtF2olDqfE+iOrJVEeNAAN3t/PcQsuJY6PEPmB2qHfgGMAyuPBHLI6q5kj+5ZhlfPK3AyXqLoOo0QCmCaNiEGFdwuIM/Ot6lPh3rjvz8zvS0cevqVYl5ymtwXt0reh8t75rfLJc9aNQbQmcBjWakFPhCqZYvwYyE+YlXI3Cqn9+4lIt/p8vF/QqW9+j83RV5r/DMUWEUGkMGkQJbx7mYi0EkBHD7L1tXQdJ2FZ49lsHLp9ouHM/ifU70X/LHOff7xyWd0W9Ck4gLKUFJItf1MW5GgSOQVfOQRQ1OQsjCE4uluH+TKqtnjMvXv3z3zw35/mbZUj2ZEBs7ksB0nFNHkmOrJaEtjHA4G8aedpMmh1NouwKfbOypkBnOdvT1rrJaUwxbLlDYAHU6l6SFdYcW12x8cyABmSQHX/fe1x6CmcVdvF3YoWvjnZSOGWrHEdRoiCFWsvyRyp4D2bTB9myPPS05+HynASubNd2GAs4IHhQdKJbrMF+0cdvy8LVDEVb+twrrz6sjPJiT0FmkCIaK1PQENps+KE1iEMDX/yEG4Ok/MgBMTYjXFCA1T3oKxA61mfOpWJjWy46KRziN5tI00BWD1/uS+46aM5g4lobR/jhcOfsKJSIGzRctlUlFqbcz/pAnTLYUMQRz6h7dmd3C0VwbchalZ//UMMj2cM0Gp96C0YEEpaIcP59eBdtx2WCPYqmkuYh6FKlvH6Vnf5q3h5puTfqCmGV7OHWxn1yvhXfubwA3GAkpUPhEeiekwcP8yvmuhU8mxATDTK761ljnh2/0J2W1rtBkJKP6qjVaYNdaxBlQLIQQDzFdAUrHFezcyaycmui/HmB5Pp9ngymc/WW5ekP42Zu//V1hrVZDzvyxRZolhppMpyGU8AVGYgn+9rlumBzv+GAwg78G2P1VPhDGUtm9cHfB+WpuZXd0t+aDZdcClUIqGYd03ICxo5m5S6fbPh7ujM68EBO81LN+azlvTycK/tQ1qypOrG5WzgSWXG/mQSbFl0acr2/h0c+cA9/A9j8AAAD//wsDcg0AAAAGSURBVAMARyTiypgcXxYAAAAASUVORK5CYII=">qBittorrent</A>
<DT><A HREF="http://192.168.2.10:5055/" ADD_DATE="1781281569" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADWUlEQVR4nExTW2hcVRRd+5x7Z3LTSYaIbUyJiVLtFELSKr5qE1EK/fDDVoMWfwRRLBQKfqil30V8fPghVTB+BPwQqaj9ChhSbU1FrbQYaRMnoXlNYklmJjOTuY+597w8mdbSAxsOh73XOnvttR3cOmTDNG/Og0M8nXrdMDOkperZemKcL5OhSRUno5ALk3fXEO6cbg9ey8fE+DGTBC6kBtIZELdZsX8rP50R0GoEUfge8G/4P4qNnR5at/0AYocQ1fVA7oB+4blhvqc3h6gKzK3OYfzqOfVX/iJDKsNg9DjC4EULEvEmubfjE+L8VSSN5PjLp9gHb3/IH8/1U4d3XzP29PTR4N5hxlMZM5W/IMDd3XB4FrIyxuH07oeb+swym7deOsXffe04qxSVWS8I8gOFWihRDQQEjOnf9QQLFVE+/5OG6z0Gk5ngzOs8bZLw0b6H9+vTb3zEahW1hUXZXiA3yPFAv4vyhkG5rCnWxvR0PUJ/zv6sA3/NscScWRmHbE/m8NNHmWsYRYEitx3o3MVweekmzs//g6FhhtZ7GGqBIDft0UDuEIOIjBV8kBkpe7iXpb6efdRo2H8SQacV4tDB6kqEV978AmfP/46BJ134DY1Yw2Tb7idwhyxxr1XUwHVctLd2IJKAtABVX+LYl9/h0+/HgGoBExen4LURJDNoCEDBak/NUjAwtpTEoVksLhs7eao3JJj0kKUUpq9fxfbudhx+5gBmZqw2tjgxoDD2DZSwLbAlhzF+Scf+Q99OfqXe6eojZZ1TCwwd3fc8ns3tRXZ7K+B34PJ0Aua6puJHmJm3U2COY4y+xHSsR+C0yD/yF+hmbdMIwai8UTPrGwIyvBfL14C/pwQamozNo7nFX01hfoKsoSTieIRDb6zAbNvR0dH91KZfEnIxRav564zXW8zZX95HXKigxZp2s7RCSamkrxTGZKmy4EKLz5EsjLCmlVXnyVJxdvzH375JmRiI07GMN+tYK89ZrQh+eR1ReUWacB3T175OGchxRNFJNKVsbuGVEMnKke7s7jOCS1VtrTsJYmqY0OrEKFYRyYx2+E5PgaXOIJg7cnuZDLtrNaPC2rkTNSoerIjiaCBqN4SKhVJC+HLjRjFYGm3r7TqIcPbEVu7tGvwHAAD///nEBvsAAAAGSURBVAMAUmO1N7z4JswAAAAASUVORK5CYII=">Seerr</A>
<DT><A HREF="http://192.168.2.10:8096/web/#/home" ADD_DATE="1781281580" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC20lEQVR4nHySTWhUVxTHz9edyajpdEhiXSQRk0ilGmgLkkUXXXSwoZQGW1yEbhRcWQwK3di6GCmFUnChq25suyhduCnZpOKmodBUCe4UhBm/kAElmZiZJO+9+/Hu9Y5gEI0+eLwL9/x/5//O+Qu85qnVAg0/uL7PxPOj3RO3azX0W9Xx1uIajd0tfubA/p6pMI1J8+5Hnw815ufnw8u1tBXg3Tsff+jRn3ciY455LJNwPl+Z/GCr2lcAf07/0++QzxnCUUtwI35vWJbRlPncN2eu970RcPnIZUZWRz3QJ4bg/5xoel1gWjMupAqqGtXRI7HmtQAq7dqfUzihCVvx4vuZXyYaP1yYaGiEs9FNK0M8AeP73ntRg88Pcyfniu3V7Rc14jEr6sd0e/9PS7J6uLuFxL39V7vcOZMIfWeELtm3tp36e2av7urkOWB9tfegAzxsGW95635bouX3tcefU8Wge9r3UoZfDeNUQvBVnuk/ouS/zV+YO1kvOsTjRkLZUbhUfydpBeAZLzjoGAYzpJkKwrLudmcoJwzHxy7Wi5uA9urjcYNh0gLVvS/MFnV53GI4ZIjRMGGcyaEWqfG0gLPRRT1jnBRxB54BuomzGG0hDuRMV5Z2H2yC0IBl6mQILRsH6gQ6mmDnv2sHmpnwFc2wUyN9CVFLI3cW+qPNTzOCPGd/rRvZjlu+arBQDcJVJ1glpmr+uHkV4l1C4VoGmG9AmNw13OiTnHnEUr4nroljWKbOnlpcbit8mKl0vV3obXeiTUdepUNDg/sv3BxOmaZiQ47viEMYFUOuFMVkREhz+DpFmPLgn9ggawBak4oAkWIcXi8gVjyEHYYFMwrkKS+J67GLzvd8azh8EYez10moGOGKVTRgMIJjVCyij8l0Jpq05JuxYQOEZ7OSXtwM0unTCyWleioJ+r5EoLyhZFtcV2FdcUgKYLXCjTWhtnG0wjuKK/eP7cm6uqcAAAD//4WnqBEAAAAGSURBVAMAgPZIUle3J+IAAAAASUVORK5CYII=">JellyFin</A>
<DT><A HREF="http://192.168.2.10:8989/settings/downloadclients" ADD_DATE="1781281593" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACu0lEQVR4nIxTX0hTURj/3e3Ordhs4tp0siEYYgmxTPTBkjCRjDAq6B9YsIhE0JdtydLMIJByUg81KvIlrYS9pA8VRWoQEolKRBhZbLrt6jZzrmnG3L3rnJvKWj70we9wzo/vd893ft93WaREKBTKl0gktQzDFJFj0So9TiEIQo9Go5lIzpesbWrMZpXbPWWXSqUfiLiFUAcJslZRTXCJfHic4zi72XxRtaZj6FJf36b0g+dyWEHV2tyINJkMGwXPC2jvcOLbUjyaFpzTu1zORbGCurrjl2XRiGo4uITmVgfcHu8/Yp9/Bi1tDrz2LSARCqgsFrNNrCAcDpsSicRIeCHCWpo7MLajDDlv+lGYZ0RWthYShsFsYA6f3D5Ml9fANPoKN67ZoNNqlnmeN7HEmGPkzWyGegsazp+C7fZjcGXVYIb68NHDibdLf/0EV34IWcMv0NB4hoopvYmazRLx3rUyd5kKUaBk4SFibt9heKtOiLzhZS/0Q/0wGvQo3r1z/Vm0U9SD0uS36nQarCjTMV19GrxcIcJbdRK8YjO0WzNTrSliyfKX5axUCkGWhoREgv8JmjWZTARD85CH55Az+BSMIIjQE1OpD7OBUKp+jFbQR1BAT54pHyb9AQRL9sP47JEoFKtaisJfcQSJt88x8fkrthdsE3nSvTHSJeYJ3cfjcTjvdoMrqUTGxCgUCjly1UrkZaZDpVJCOzKIQHE5nPd6EIvFqH6ZZdmH4iT6/TMdjlv3rQP+CHSL8zhXexSVFWXU5fVa370fx50HvfDJ07EnU4Em6wWb0Wh0iBl0theUSm8iyG1pv2rZyG0xIj+iaLrSiViGNiLzf892uW4ur19xvatLdaC4tNNg0J8lxzRsHCszs8Hu/r4Bq91eH6YEk5pBRjuXmGPFn185f5X+Qh0nk9epVqvdyfm/AQAA//8wt6VvAAAABklEQVQDAA02/ztGwT7HAAAAAElFTkSuQmCC">Sonarr</A>
<DT><A HREF="http://192.168.2.10:7878/" ADD_DATE="1781281605" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyklEQVR4nIRTW0gUYRQ+55+ZvbnlmnhBjWBX2211XcOgkKj1oYQCpYcMogiJKAiDIqnXIOhJKoJ6KZYIi5CgK1Iv2Q2hEG+gqbu+WIooupnurjM7czozWkgXO/DNP3PO/3/nnO8/IwNbUXW1y5XUjgFBPQBOEuGd+HBvF4cM+I9J5qMwJ/84L5cBQTB2I1J9Tl5hdk5+bnxuevrbmgTBYNCtk7hCADM2UBp0oB4ECDIOMV/dhrwC1bO+JD43N7n0NwKhqnYnr7mIkHS5YCY+1PcwqSv7Aeg8+x2MW8KeaS8NhPdyMtsfBGxk9UooulMppNcRx9eoJmJDA1dBM+q4petMthWQHqkk3/QGQiHej6sIFokPGwgkYNBJYJ8vAV200Zuq06NRnI0N9rcYutjHWZ7x/sMCsaM0UHnR663OtgiSimIwu8EslqBgZCTmD1mZSXpMb6sa4i89A6glm5Cwkf0jjEvCoZ1drkCSllsAFAApBEOS+DrFyg3tYtyH8cS90WjWptHPfc+NtHKA629h/45AIJArywt2A5SUzk5hVSBzBRlJrNJpgTEOGUqaH6pqUx127R0RTKUdDl2WpATpYOcWzApUlsJtZjYJUlzVUxB4DSZ8n7Cxnbz+im1CLHB2DMoG1Md7exNMIJHOIoIpImR+qvsBiKKgODuwpivlq1A3lm2pPMlZT3DMw7j93a1MWQWz0ZJGZgtyQcF6FtA5DHrqKNb2Jfx+/7qyYKiJo+dYqCCL95HRmp7PejEx1JWyCGZnswyHe1HjgNPjWRJY078YiUQ0nz9cqwtqYUH38OEvHL+AqnQ3FuuZXj1IVsm+YLiZm9huE9qptKEUCYQz3NKRlT1tQqcbIyMDw/xOv0+iRWCOqGrIdYS4k1U8yK5ixiuWpbWk0PO+s7MzA/+wXyO5ubw8bBhSM+coRoFP9LT8YGyse80/0bQfAAAA//+vcjHdAAAABklEQVQDAIdzFIfNKfIzAAAAAElFTkSuQmCC">Radarr</A>
<DT><A HREF="http://192.168.2.10:4545/audiobooks?group=books" ADD_DATE="1781728011" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACmElEQVR4nHxTXUgUURQ+584dZ/9TkzZBIjVdrSDyIaJC6i2K6OehB6HoJVECIRAT8cEoNUQlypc0KKKHaCkIopcMAx+st8h+/GWVoqg01t3N3Zmduac7s65paYc7l5lzzvd99373Dof1ovaWui23PKhDTHyK3P8G4bC1Vhv+nSjten+Yc38DKKwamOomIEDLSoAwn1upxZ6plsqRNQm2tg25tEDxAHGtBoT4jlb6KSF9kCUNGasiVI/IdheaizfHXzU3ZlfEM/A2pm0oeUCKdhSMeFdiYuzKl/5jiyuVilsGg7ygpA9Vb0Nob6dvPBw+v7yCUO90HXBvHxkLlyYaQz2wfmBZ9+RtpvnPYXLu9FjTzkcMDrZx4K4WsIwRCe6F/welE58vyO3NEve3OowV10b3kadgGPXomdSv1DPu951iujH5Mzr1Zq7reNxuKrr4MF/bvH0XKlppKvHjsS9QWAuq+6o1P1nOKcdVCYhgLkReq4HyE6j6BkAFyPfkGXnd0zfQgo2kuc9KIxWyHXWbaUzHXpLqRsVbsIODaZAwY0PpVEJoAXJMtRsRWQ4prnpShCLfHTAQyoGKNf81Ceh5wUhXmQDOmct/QCvc0y7Yis3aJEQKSOmM1+gMJq8FBCs70OWrJvQGOaiedplTHZQUoizaEURcplvK2YfPkJGNQVW7zIAoL1twJoI/14sEZpWXTjEzO3lZJsplUiRpgxSynKSjSdl+RqsOEQmUVd+oM7CSd+yCJLU4mVFJKK2yH8oyyRud7UfbgRigyKgJ/S7a9YqO0WpdxGcirftnS+vubaKi3VtUj/eQALVeoqTT6T7TiA8qkXezE/01c2Wdb0s4mkUfm6uG//kbV0ao6YlfN4Qyc/1kdL2e3wAAAP//QBWn5wAAAAZJREFUAwCC+wsMouEcDwAAAABJRU5ErkJggg==">Listenarr - Audiobook Management</A>
<DT><A HREF="http://192.168.2.10:9696/settings/applications" ADD_DATE="1781281613" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADAklEQVR4nGyTS2wTVxSGv3tnxnYYJ2BjbEdxWNSQPqKKSiz6EOmLDVQVC6RKfaC0rNpNpa7ZVuq+6oodRbDrikVXhQoVKYgoQmlKqiaBNgkQO4k9dpqM5317x4QCElcazcy99//POf9/jslTa/Frsva/vCcUnyvFhH4qQvSPmvr9mxL8uDPIr4d/wH+MEY8/1r+gGiec05fOSLtQMKtjmIURjJFxopXbBEtTxNttRyTqkiH5rnyBxv8EfbDiPGb2VO7ISew3PsGsHEJk9tDdidma+YWM+4Bk5SZidRpC74oh+DIlMf74iEzO5Fus7GT+/a8YPPENRrGGkAZIQdjZoPfXDKt/rxH7BsX6y0Ttey+qKMqeHeOq3D/AcZ32Z/3Ib59FWAOgi0cTBF2H1vwskR8yWhpic72NU3mLPa99SIpJsaYuYlLXXLTf/JQ4EazNzVHcO4B01rh/7Wd6S3N4no87OIwddlELt8m+e5Le/LWi2m5PmirhmKUFs6qH6W628Nub4MY0/5yltXCHTHmUl06cJsiX+f3C91gz1ykMV0kx/uLNY6bWsJqqjZkjb+dIbIv46Ds4qkPtQYWtep1G/SB7lx4yGjbwtOzO9HXyB+LUgqp8ZKYgCgOas7dYWbyHHxoMjx+nUXsda2yCYnkMzy5hvfAq+3SATOSSOH0XSTNoxJ2HtaCxjN9qUioXkfNT2PUjHPrgNLn9Vd0HC6iww9bBV8CyKEiXYKNJpLGmkNwI1xY+tjeXGBnKQOygtNpJe5mcilFmBivwyOr2XG+sYpi25nDped008RsSxcVkp9V2p39CRYH+1VVpVhkHiCRGBq5OUpFoZ8uVEqViHq99FxUHOgoXZavHVa3LZe+fW/SWpyCJ+gRP1m63672hwRxWZ147dTeNfnkXu9vKgvNKmKeylXGytaMY+QMaY/axSpPG2xv492fwm3cQKrpiqEet/OwwIc8plZzRM1Awte9yYF//LOl1iLbXUYHrCCEvGSTPDtNzxxkm9FZl96ipLz53nP8DAAD//zW2ehkAAAAGSURBVAMAw6tVhsSgFwMAAAAASUVORK5CYII=">Prowlarr</A>
<DT><A HREF="http://192.168.2.10:13378/audiobookshelf/library/df1e2fd3-129d-4f1c-8549-5a0603f7356d" ADD_DATE="1781446613" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADcUlEQVR4nExTW2hcVRQ9+9wzdx73ZtKkzcwkqRrT+KgxJcFa2hSpgUBRkVAk0fphlHy0IlL8EFGojuBHQUQF+yXRYsCU5kOKT7RgrGZa6UeaoLRJm6ZpZzJ5z0xm5s59nbN77k1aemDD5uy9134uRjYeSEFPsY3CnsXJ4YHy8tTz3Dbj3reihhf1+BO/xNr7v1FV9V/PD5EAAEHYBCDJM6gf2fHtR2szf73NiBFUqh8lAT3h25ziPOH5acJZtbWl6ZmTQ5nXk+/1QNHPnEwS2tGNWjt8Nezc/v2FCqnGht0D3FqfV4yVazK/IHqijYSijfz22OeKxixQH3ru16vs6OGxn6AoK0BIXxr6zJk7+06uaNlNB95l8+Pf01J2HBUW8vsSrk22PLgPYq094safJ9xttVE10PzSycb2vmPUWLm5p5ROvbW0cIvHnjzEitlJWpq/jAEtDjSggyIloNVBfu4fNFav01jri2whc4MX5/4+YhTWnmaLV88eFUZWJSzqBqu20/SlQWzu/hBUbZvMbMlhCTlEnZiFNCz99wMmdvUCKJoQpTRb/n/kTWbkl58t5PIoUKGEhSHR8RoJaPVEjcYJd0zZoQQI6kQIQmJtLwMEdOJwheZya0hqMl3MMs3txZIJWk0jida3orcecz3rbxaA+jPwVkVZkNQ0dUpAF1GNQjmXBc2yG6jLCZqmRYSiETVSC65Vlt6qHwCKuikh/8+1SkTVtgInEajIGBmrUC5oBoHhamYaL//8KRFcIsp6xX2CyDd1TsZ/PEFy2Rkhz0s2p2aoqsVHGdPAsoSYGjuNF0aOI+euX7jXj/TydcEdkjr9AU6nRtC2hWABjQT1xHn68O5Dgxiu47ZlEUcoODt5HgSXCdCbnwfAfQDuct/mIsNKpUIU/QHYsfeVU7T21eaL9Y93fR0KyxtzhPvI3j5hlguQX5rFUi6LpfwC5hdn0TTWoWVfn7Ac7ka0KhZr2T/4xhe1o5CU4+mZxWgh9fHIyszF7pbOw4IyVcjMik+XDeYgUIVzx6LXLwzTupb953Dn8d6uDli/R6ZzV3CrNvXlJxOjZwbs0krAKJc9xvkMlTAQ0TQSqqpz2g70nio/duz97p2wumG6j5pSo3NTE50Tf3zXb1vlgy53Gj0HhamZYDjy21MH+4camnelZBy/G3MHAAD//zNj6ioAAAAGSURBVAMAyxjHejFwKQoAAAAASUVORK5CYII=">Audiobookshelf</A>
<DT><A HREF="http://192.168.2.10:4533/app/#/login" ADD_DATE="1781446622" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADKUlEQVR4nGSTf2hVZRjHP8855+7HdbetrpnM7VYONylRV+rWnEyKZjgTFRITtEbcYFL/SP1R//RPUeRfkSZFzg36hVIbMWwEaXOxGhTIMEnZZXfDlV2t7ty97HrvOeftOXcXQXzhOe/hfZ/v877v9/l+HRaHgAmm4LOZ8kg3DU9tJbqqjtxNSP1xlavjP+LlenV/THOlCFn8uT0qNd6j480eHukKMZ+CBQWv2gZLauD6ZRj/JM/4seOa94bGQgCyNSyNJVTVDnBgaD/hey0uD7u4t4R8FpauhqqoEHkA1m63Wb6hlcTZjbo3qDhXwcYQqjjC86c7Sf2eJ/mzob7dYSFt2W4GOxTSFB/yriHr+azbAXv6OrEr3g+wWkCeoO1wnFza47+kQ22zMPWDsH6f8R7aKV76phQvGXKCWci4WuQZeLw7rthWi7JInKYdNleG9eSNMDMmdB4x4YmTclB6OVD4gMqhHpj72+CUOHPx2NTjYJfFhdU7E2w+/DCpS4b0lPBYnMiFj+XM6xto79pXzB89c4rt75wj8+xHRnlfLOJr2050JBzuWVFPWEla9ijW3LT42Ry7GnNF8MEXXkQ0v7/vJLu+GeGz6YRYNRX4BeXDKReiTTEL4wnh+6A6Bm2vgFNR5LUkDo1Sp4ODXe3c2FFIz0D2H12zxeH6lWkitSu1oeIHuGpjBr/15KfvTtPf37f4hKEvGZxUmawrN37QkdRFw7I1MD+bFCWil0O/dVO3xiPnCiHbYi5lKkffkt2NflEmA8kwC1veNnz/mrDySZ+pEZ+1+x36nz4R3K+VlkOj7D3mFFuk18IpETWj6itkVGYhwy/HhdgWw7ULRosYkucN599tVyWaWVLPRVna3EKsSSjoQ1QvwZNscY116XPMnxNCfZth9ldDtMGlanmIoVc/VDZ7pSTlcl0cYPen21jfpaoruePGjOHiqaBnhvm/PBq2OpTVCF/tHSab2qMbtwIvmKI08pmvmfgiwtyNZqrrbCrVQJ4HmWtK7AqL2CabyXMFBl46SiH7cslMt914p53tCiW1pYP7Gx9Ua8O/iWkmz45QmL/Lzv8DAAD//0wk+o0AAAAGSURBVAMAoWY4S/l+hn8AAAAASUVORK5CYII=">Navidrome</A>
<DT><A HREF="https://streamex.sh/" ADD_DATE="1774971868" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVR4nKRTPUvEQBDN7sYuNiaWipwKgjb6NyzVIoKl/flLYmGjYCv+GeEK8aMQRLCK5lCSxnWTewNzx9xeuOIy8Nh98/Umk0QHHU0HHa1zg1AS51ymtd5tmkYBX8aYlP13SqlVXBucT0C/tQGKBjj6SAgI4Jm11qFpKkTuZY3yGiwBbyheI17X9RVgwzC84PgnYj3gL2jbAQIWyAQ/wmOcCIFLWTwzAVme58tJkrzjuuKFhkVRbMRx/Du3AVRoL69Az/N/QH2LppT+mdeIJZ2K4iHww4+zjuPMz/eXaIBnJG8TxwKvSQR2znFa8A7w3zoB1NNxMfNb4GaiptQm5bROwOqPpMB8AOV9nuQB/gNOfQH2wB0R+SGZqqqOx01R/C2UD8uyTOgeRREVGhpwaoJFrfPPNAIAAP//PTjE9gAAAAZJREFUAwBemYwXe5fCAAAAAABJRU5ErkJggg==">StreameX - Discover and Watch Movies &amp; TV Shows</A>
<DT><A HREF="https://www.cineby.sc/browse/movie" ADD_DATE="1775047829" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABGElEQVR4nNyTP0sDQRDF3+ypRIvYmEYQtBDR1g8i+AfEzgOx1E8h2MRoKxIFaysFQVII19hJGmsDYnOR8xKPHLt34ya5BLIJSXFFIA+WhZ3Hb/YNjEBKCaTU+AFT5gMD9LO7fRL81e2qU86u1SULkM+EYiZ2L9uWIQB3Z+vU4igvv6vYqElQB8u4CMQC5mK3gGERdDe7eef29wD7AEzUrVmMw36/Ie3Ptgory5i+uYJwnqDWV5N8PD8SwJz8Oon6RTGurQZehcQg9c+gEXq5zMxS7bOC56NjvN/dt6gvogkkH/EIwEP5ozirVN57LCGKoh6jI9StCbBMQMn33jZD6emmi0QU6qH86lMJCednKiiYfkJKTcAu/AMAAP//9eDVHAAAAAZJREFUAwC/l2LMzjYcaQAAAABJRU5ErkJggg==">Search Movie - Cineby</A>
<DT><A HREF="https://github.com/loponai/arrstack" ADD_DATE="1781281627" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABtklEQVR4nIyTwStEURSH73szZCiFopTFlM00CzYayp9gpxTFQtkQZcfeghQLC81kFvakLEjZDCuJsLCYwoxig5JixpiZ5zszZ+r2snDq6517z/ndd96557kG8zzPMWr4A5CEe/iCnPpbEDM+s4V1PJZhGhpq2768HGzAouM45UoAoctTxDswZP5nuzAKJVdPWlHxMYxBCj4hCxn1TzV2CMOwJFqpoF8FAYizOcNeEL8D3vSNrfBKrEBsHX8WvmFQEqegXhOLJMhBJZKfrJKfpdEaK+rLGmFSNtM43ZCHXoRp7YuH72mDK02UNRbGvYEmuJbETu3yCzxoYrkmrgmt9aNUpH7YVbGnJ4bsmfCbxuSKm1UXcLXTYm0Q0zKDvuGSzaBWIU1v15dmXb0eo1cl0xYhsfjHJ0iDo6Y6SEYrOJED4rpIwgXckrgHPVYFUdjGPYMIyOwUICFlXRLcZDEHfXAntwEf1ufLDU2oL+McgjW0V/YoH0EXLECG4LlVgTQuY6rDJbYPI/Dj+JISMK5bLRzyrjHpuvglzZmXqZRYsNZlrFKm/Lam+l/krU+QsV2FA/JSlsb7BQAA//8fGtSHAAAABklEQVQDAIsg4TDVy+61AAAAAElFTkSuQmCC">loponai/arrstack: One-command media server (Sonarr/Radarr/Prowlarr/qBittorrent behind a VPN). Now maintained as SparkBox → tomsparkbox.com</A>
<DT><A HREF="https://audiobookbay.lu/member/users/" ADD_DATE="1722973471" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADDUlEQVR4nGxSTWgdVRQ+59w7b2by0+bpQi2mKTSi/YkG2oULBbtQyUaQUrDLuBBXdica08ekr1CEqlBcdCF1oW5SBBdCcGVRFLqoQdRqbFLavjb9SQltMi/vzcy95/TMlJS0dIaZe+455577fd85Fh55diTJ7sLw+yz8FtnaIBICd7NFIPOjWifnG83Zjfm4biRJQt8aaOjBj4Ul1chvVmCOEUVAhgHkFUGqW8DPRxkPn06SfL0AHpiepj/m/v5GEw6iYGOTCU7OTkwsbbxp5Nixesaddx3TpyDy09bBbfvPjI9nFYLtU5NHhOxHNe/e+C85eqZCBGAX9+yp4lvOnRPdu9J+/ugne53Yn8HzqYWkeQh3JBO7u2DO1gDG55Lm9NjYWDgzM5PBY54DO3fWTp8/n78wNfFmJvhDZIN9ODzV+IpRhi42mq8rNATl/G9//5Nqv+YRbxgI2LjOFjTml+fSdGk9Z3ty+HsghamF91nBpNRitl7/IIzjIYyiy6bd/hCC4CySFJbp1byn54u5ong6Hxi4MQJwXIz5moRPaZPgCRT6UwtIaMxeCoK3EXGzStxioiXx/lbX8xUh6oMo2m8RXi5zA3D/IKhyCifv6WbXS47i8jXI3B1tXRh0u7uEYQWEc8qzXT6LfuW8WPbiVsvcVT94sxevrSoLaWW94cFnf5+Oa+3OUJBnI1gUdWLuQ3b9eku/FelT7k9p0RdtN982fOJEOBDcfEdZrxGD/NV1xXF3J+0z3uvMiAEirAaIyAui94ACXKqkUt5vSJgVxWdeeIFEZJQF2m0f6RyRlAqXbPSthgzhwXrfX33LWk9S9b1EZOyoOvOewhE8PORVsv6kOrwhujl8powW2qWtJJ4vKdh4bZMofjZU9plV/3IFKBEbqmpA5dOCJrWWhaAGrrhLaGCSiDrRMgfAtOoIU03t6BC1lV5bMbQdYLl2nPoUSJqtrKgWKAb17Pzkke9CG7xnUkXQG7eKOL5Ace9tDsOLEoZXOYpaLo4WdL/oo3CejWmVNOKgduj/RvPLewAAAP//Op0LaQAAAAZJREFUAwAF64BrxeiEhgAAAABJRU5ErkJggg==">Free Audiobook</A>
<DT><A HREF="https://www2.yts-official.to/" ADD_DATE="1761144422" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACp0lEQVR4nJRTTUgUURx/8+btzu7MzuYq6q6tH0FSbGDJ9ol48JYHiYo9dOjLpA6Kp8iiDnOoDh0KrExRoiCI3EIxSBIKPGr0ZbWhKVKW+dG6ubquM/M+mpl2ZcUO+YOZ93vze//3/xwerAUH1gE+c1N5pdjn2mpns6+WNPCfgGlSc3vbLlmSiiItswmwDlgXHGrf7BcQrJp2Rt4AxUqBszTFeEJGlIp1DqbWVSki8yUg1xGOkeHXtUDP0Jhh8Bfh1KqsjQAF24DNhrjdGwR0r+yarxLHuArI4zDkbQ2AMELsdsJh7KTxRC/0uCuAjkuTwwsXx8LxUTMauMVVXoAgzGmOvI1SwnhGYQPT0K2lKezDOpvkKDinzmiIF6UmHMcH1Dm1Ozavq+koocNGHAhB1xlfUP54fqpf9th/QsKVjrZNHy8Mij02zGJfWmcuiPnohpwleHK8IpnrS06sFNEB8DwELHtZZsVGeViubNckDO4amupYtNdki2jBHQB8dSN47vWjq26n8ChnO9iYsudgSygyDXkuLvGo2vzic9ugk4EBk2/KdfjzJDS496QLxZ5m9ZTIYp2EaWv0PfiVTgGZXsFj9gTysOlUR6A9MRatGR+aXDRVBxe9nIzFWZ+y+LvkfrwuNo5dXcq3SNq72XKrpye6dmTJQPhk0A83Dw7st2Sz/2FAUg3lLEcplJ3NlzzuDYH+7yPv0kPD6jvL99mcwgussoHlJVbbcWxwHPwD1c2BANVZlZ4k3S8vjfzgMj3UPwzugSJ6wAjzYp12Yh30qpo2QagxZoAWEwJ26jplOqB3njV8/gpA5limLgld9zvzirxHKQOHic4KMGEUU5rUMYsYvDt8eqhnpQaG1epfV7Hmnaa3ISVgVwuJoCeI1ts4qmactIxN8gcAAP//8vzvDgAAAAZJREFUAwC0NBvlfkYiggAAAABJRU5ErkJggg==">YTS Movies</A>
<DT><A HREF="https://trash-guides.info/" ADD_DATE="1781119805" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC90lEQVR4nHxSS08TURide+/0wdh2ShUIhRYbBAWtVRYkiBsTTDSi0GAXEGOiG+LKrRr9BSZuEBYmEhJNJCmauHBlcMOiyMMIpkTTYoCmY1/2OZ1Ob+fhnUCxaMKX3Mkk99zznfOdD1KHlKqqQFUpcBgG1IAbFhYC/TMzr7p9Pl9Tb6/HFNqMQAnLZYQQdjqbxHK5nFxf34iTWhofv/NDewYIGPn9fnly8sVTRaHurXxZXoIQZKQKLmYyGUkTYTDq6ZZmO2M2W1ieL7Z7POeou95bPcAGcpoCSI5itVpvDFy+en9sdAxZLGYzx6UMpCBN08DhaACRaFxYXV4pLS4GxPp6dnVubvYBAEABezZUt9t9KpvL3i6J5YrVatMbSVeEdJCUCiGl5nK5iigKFb3OYCwUiyvJWMyvWUc1M6CPNjT0MwwD4vEYRgjIEACqXBZljLFKlECGOQJpnc5kYpj1RCKxqamHVQKWZTP5fD7Vand0Tj2fGu7qOtvJFwuY2CAzREAhGEmSKEWWZVEUU9W++wShUAgLpVLGYmEb29s7Tly8cMnrdLa3EHCFNAIakHgmZigsKMp/BOQOqDaWxUQa+/jJw9fBjW+fTYwJSRgruw5JZIRABZTA/dxXQMHafShhHCN/bfFkkp//9CFwbdB7c2RktCebTVdoiNAevkBRXKlKQFelaJ/I1ta2+7QnMjQ01BeJxGgycVBvO9YiCPxXi5kFsiLVAQgLVfyBFLSy2+2MiMXmQj7XiGj9eaOhjoly25KqqE7iwKoNM51ObxZ5Prz3RD5A4HK5JFqnfxQMBvsqFYx0Oj2Jz2Dleb6J46IuCFErjUCAkEQJvKwdupZgbW1NGPb6lK6uMxBjSSyJJboo8JKxjpE7O08ih8PBppKJaDgcFrRUa2ewn0RHR/eb6emXvWRhjLOz76jjbQ5q8PoVes7/nkomE/O/uJ2PBKsR4H8J1N192JiIRMLfFUo/8DuVcB21WXT5TCbOcTuLExPP3u6m8Lf+AAAA//+uSb1hAAAABklEQVQDAJJbZJ7X5JPwAAAAAElFTkSuQmCC">TRaSH Guides</A>
<DT><A HREF="https://mafyuh.com/posts/arr-stack-config-guide/" ADD_DATE="1781119574" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAACJklEQVR4nGRSu27UQBQ9d162d9fe9TraECCRkKAhDTQoBRI0pKagoeMv+C9qPoAKUVMGEAGyZJ/etWc8lxkT0WBZVzNzn+eeo6ALxI9ufuqtSeJt3wAM+GiC7aMkRHITJzTMMPryMY5PMM3BHXXQyDjm/E3jPoEEpNHP3+Sv37plzVlwWGQkhKz45Dh5TKS39ip2YxaxdkhIi+zsZfXimXp4DqGQG5DXMhtxlZvZ0MyonECqECkhM4wKVLft9x+bi9Z+fAe7isMQu0W7M83OLq6nG5t6rDZhsIBvinKG0QSkwiARq0kjwl2N/R53cxiNbY3FDvsN1nMVQzyL8oDn8zA1SHJjpUk5YNMCi4DHofYsjY9oQ9WAwWN4eqpvHfv1SqQjN1/oaeXmvygdustvshirZOC+XCw/vA/ZKm5XiebrtXcjbqVMSDTl9vMn3iz15DCRk8QVjFpeeeo89xxNMT3AwQxNQ/vQnwnau4Z6nqQwwmuyFl3TdWtnf4v4vlrgfo6jIUvHynu3RllxohmNkztHWwoQWMG7wHckjqqhKA0Vii836JgenYunr6g4iuzWP1MUlbsrWLTdvPO1iCu6M5CHUuSeUok8o3tP1NGZLB9wfSmlNrsoBM9tv/I48Bha0cBwkMnkEANJekyy5MUFa5bXllZL7TNm23Rz5pagihuFxkIy8p8aTAewgVqLZo+2CcQHFfWijh3+lzcg+mV4/y8uHqKH/wAAAP//lF1GugAAAAZJREFUAwDIqfepJ8WnXgAAAABJRU5ErkJggg==">Configuring Arr Stack | Mafyuh&#39;s Blog</A>
<DT><A HREF="https://corelab.tech/arr-stack-docker-compose-guide/" ADD_DATE="1781119579">The Definitive Arr Docker Compose Guide (2026) + Generator</A>
<DT><A HREF="https://mail.google.com/mail/u/0/#settings/general" ADD_DATE="1775571425" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACGUlEQVR4nKRTTWhTQRD+Zvdtkv5ZbQkEDIKYgw0aqtK0oNiDP7Q3b0Xx4kGhBDz05i0XPQiiWChYBW8eBD0ZD9VDK6XUVG8FEVMo2IPwmlpNQvOatzu+TTFEJV4yMLsfO983O7s7K9CmCbRpjh2W4vE+FZIjO0KtnC0U3P8J+DWiep8cqpT1cu8YtkQ2qIJDclYJkVOmNv/pxNHRVuLSndioH3bmpaRcp+PMchZCpBMJJbR3vMoMSZTsioRzxQvpKRts7Bpg98zIFK/35hyFJKpB6axTSEM5d69+ocvvruvB9Tn4bIJ6qEsR3dtcHEp/u6hu2gSbi7WHKoQJYwSMbwIKYW437r9au7R3B8/OTWOt8BJjS7chjQ/PhBAmMVH1d1M2HpZyoGoMOmFQYoXpSgovSodQThQgOvrAkjWWk1fwZPwpu90H3UhAtAJHiAHrFkcE4StH3Mz2aX6+cySIofkZGcr3sBE7ifvpB5OoVWeCYwSrqLvFpP2ZW4OHJ1f9fkRINy72jz5Q7NPn7kSxZ2E144NvEPDDusU9Cx8zhZhTDBFTs+afRuownrRz9O3KY004b93iesyH/Jvv/J6JRL1gNrqxQ/RN/kMzmY0hUkEOezy9pxXDW6gxKG9gXMPGlVJ6aGFCCA/auEEmF4bzhfHhmpPNkjn1iK/1/8QBS9qoYLtVgrKk9/sdfcxirxT9DsoaQpvW9m/8BQAA//8M0icpAAAABklEQVQDAN7z2Rpq8+9hAAAAAElFTkSuQmCC">Settings - mcfetridgemike7 - Gmail</A>
<DT><A HREF="https://vidbox.cc/home" ADD_DATE="1775565330" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADiklEQVR4nFRTS0ycVRT+zv3v/5o3UKZTClgBQ0KbaEEJtpK2aUKDtTFgE1y4sAtIamrSsDCN1sS4qKFiuvGRYExXGjetC6q1XVg6SmJrsIAFA9ICg0B5dKYwwwzzP+71Z6pGb3Ju7k3O952T852P4/EhL+TW4/zY/uaA4Z4IGmj2aaLS5IDBRcLQENc0++KzNPJTASE9DEHS3wTo6i/zRSuqzkdM2RUJKSpsASlsmCpQ5GcoCQOKsG0O+anKht7aQ7AeV/aYjg01mE84gW9iUaXFyTgilc0LR1qs1Bcgk3uNKWuy2MdFRURnlUHJLNf+NqUkjx/ETJ5vUfiv+3vUMrVlcdG15tfzfHdJNX/pyWMyrG4H8xJsWqHhR5f5H6vjwnF9VnVEPRpytp0jdaabDl8+8HxJQPnR1Aj3HuboxV372KtPdcivRwfo1oM7MLmGxlgDOvYckaOZL2hq46qojfplRLddDnc/d6TaKVWmTKzknOpwDWuvapOd/R/SQn4O28NBTK4vYuTRL7i9dJt6D78rH1qzNJuaEKGdhpZzxEllx/HqXiIqml616Y2nX2bXJkboy8nv8c4LJ/B+09uwhMByfgm/J8cQpFJqKq+n0eRNhHQdTMggs2yqTKUFqSxIxXpQ/nB/FCEzgg1nBaWmD2efO42+Q5+gsawRA38OQkdMQoYpmXYp51Al8y7kbELWCyFdwAFchyPrLnsi/ex9Fz1FLTguwRUSrhSF3M0CDmAZCwnGFbmczsm5zBod3FWLdDLnTV9gOjeCM4O9eO1aNwZmh7xh1iNlLdBqNiOJc5m1WIKn8yweCLAaU2Xu58O3qK+lHdcnx6gvfheX7s7gwUbGq2yjLrIb7XX75FfTn0ElTUBhfCNHcWXzUM0KA14vDXD6bT6FlLPJeo60SeRVmlvNYJsWQVttM84e6JBXEv306/IdWVViwHGEsKQ4VVhl/aPWC9GYeppv2tb0ksX3VpSzk/VNsjwQASOGVD6NK/dv0mx6SjxTZjqxGLTsWv7Cub2D3VRY5zdbNaOKXYpGlaOGbcv5NcvNWoLtCBm05QVbrMudYSZqSzVWVAJmr9vf3YsutF+tmbL+NRO6GlS9LvZBkSFOFYWZrnmKCNf1zCRRHGAI+r1Krmcmho+H40tnxt8bt/6x8f/sjJ7WpogfnUFNNAd0VBoegc5lwlBE3BP64o1Xbgz+F/MXAAAA///H7NiiAAAABklEQVQDAGbnli7/TyXHAAAAAElFTkSuQmCC">Vidbox - Your Ultimate Streaming Guide</A>
<DT><A HREF="https://github.com/awesome-jellyfin/awesome-jellyfin" ADD_DATE="1781452722" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABtklEQVR4nIyTwStEURSH73szZCiFopTFlM00CzYayp9gpxTFQtkQZcfeghQLC81kFvakLEjZDCuJsLCYwoxig5JixpiZ5zszZ+r2snDq6517z/ndd96557kG8zzPMWr4A5CEe/iCnPpbEDM+s4V1PJZhGhpq2768HGzAouM45UoAoctTxDswZP5nuzAKJVdPWlHxMYxBCj4hCxn1TzV2CMOwJFqpoF8FAYizOcNeEL8D3vSNrfBKrEBsHX8WvmFQEqegXhOLJMhBJZKfrJKfpdEaK+rLGmFSNtM43ZCHXoRp7YuH72mDK02UNRbGvYEmuJbETu3yCzxoYrkmrgmt9aNUpH7YVbGnJ4bsmfCbxuSKm1UXcLXTYm0Q0zKDvuGSzaBWIU1v15dmXb0eo1cl0xYhsfjHJ0iDo6Y6SEYrOJED4rpIwgXckrgHPVYFUdjGPYMIyOwUICFlXRLcZDEHfXAntwEf1ufLDU2oL+McgjW0V/YoH0EXLECG4LlVgTQuY6rDJbYPI/Dj+JISMK5bLRzyrjHpuvglzZmXqZRYsNZlrFKm/Lam+l/krU+QsV2FA/JSlsb7BQAA//8fGtSHAAAABklEQVQDAIsg4TDVy+61AAAAAElFTkSuQmCC">awesome-jellyfin/awesome-jellyfin: A Collection of Awesome Jellyfin Plugins, Themes, Guides and More!</A>
<DT><A HREF="https://dash.cloudflare.com/6116fb596da5d78d170f330fe4a34d27/api-tokens" ADD_DATE="1781733797" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABSElEQVR4nNyTP0vDUBTF703SoKXaxupQq9VmM66igw7iIgiFbkIRQXCQLv0C4u6miB9AChZddBEhKm7i0tKCCiGT1D9oC6lRIalJnjFih9aSIYPgDy487nvnvPMuPAo8QoFH/t6AabdBCOkwr4+SZlUWsCty5+Nn95Hjas3n8Ffxe6Vfyy6I1rM02mgG+p788ztzGBUKbQ3q5eI46q89Zj6bNiUx0XJbmJc702cCIhotBoZ0mtT3lg/ABTa1tYls4JIenD60jTRnBkRVe/WT1ZSbmIpPApSPM0S5yRjybomQlxn8iv2RWxRBU4NOJG4IMDQAQLOAdgHjc9ZUKAbMxBKQah7I/TmQShEgnlhnrIvttR+xk0a5daoZK8wDPTIFVmnDHpb6/X5FGsN6IbdCag8xt/jgDwITiYL19thoYffwFYJH/sFf+AQAAP//NSy7bAAAAAZJREFUAwDo8m/0S1zkagAAAABJRU5ErkJggg==">Account API tokens | Mmcfetridg@aol.com&#39;s Account | Cloudflare</A>
</DL><p>
<DT><A HREF="https://mail.google.com/mail/u/0/#inbox" ADD_DATE="1775571833" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACj0lEQVR4nIRTTUhUURQ+95zLc3iMo1kj/dDPQCVkRobiwsgikdaBUOQmKGnTpoKEapGbaJmucyPUwpYhQdomSHARlSSCtkiJkH78mxln3n33nO59aM2i8sCDc8/Pd+/5zvdQQBQ4EwDlP9jCKutEQKFyZ7k0kHERjyT/A/G533WjkHEHQel98gBS1XP2Yv+wdPbWbIDQX5opyd3eViPPMsOwk2btfNiPDrQPrMkiYg+EdkxOdeVcoa0Eke6k2cqVhhyEtWPu4T0cQT1avoeyMhsDBhai9bJ7fAukcFxOt7dsgiTNI2Cjc62tYMJxN0SLLUkZjYU3xQMx8tcXyMsflFAqYMtlYJsDpDHpONntQXyz97WkXkIsOWtsmTiqGlGNfHP1jFKmo51BDFD1QaN0GHD+sxVbBEJNzPF1PwKiHozRMNQXRR/+SQ9P7I0G6o7ptI0E3R5EUxXI2qdFMIWriihPoMhaGyHSoONm0PukFGqU9XlKX+urPboYxevqe2wAhcVfooCC8P7o06E4LnQJ4TyRCqzlkmUuEVHgmFiAZe7af/fjUDpfGxZKu1Qh2i3uAvQIfrd8q60tG7x6PRkVzVkXe0uaUkQ6JcDvfUw9n5rIPbpTVyg1cDlqELN+SGlHgHLS8gIBu7ZmHBqqiYm55aamzprstscurPP5b5czkzM/klz6uKFyPUCUaEq08lr2kvIqS6d9lJPCqakl13y+Qkjoc7DaCFmlHSMIwgw6yYlbA4CRfH6DkAQkuaJCwuz9fakjsr1UNA7BiGW3ALcjICc6Y3ZkKqS72fzH9zQpCRec7OrCbFANOi67+ZxwLgBzsxL+AtPTq/BPUwngTBWsNFu4ES3BHqvsuy1/363sFwAAAP//45ykNQAAAAZJREFUAwCjlkLJMNVOVAAAAABJRU5ErkJggg==">mcfetridgemike - Gmail</A>
<DT><A HREF="https://app.crowdsec.net/security-engines/setup?distribution=linux" ADD_DATE="1779028528" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADTUlEQVR4nFxTTWhcVRT+7n135r03P5kZJzOZNCY1rcQ2k4ompFZoRNCWSlxkUStYXHUh6MKdIrh16UaRbgSXhSgWUrBQEVQEqVZr2meaajumtXYmzmQ6mcmb+/7uvb0zTSH0wF28c773nY9zvsMAEP0UtmP+6Okpyoz3CDPeWVo61enlFha+yIog+BQRPjp34a3V7X/6wfBIEEYPabZnRMSH54+dnqfUkKIbXAEj08qQBzVkdSee7ezeJ1DKBiF7DRL/GgZ295MxckujnlAK1qMNGV8cGieU7LeO177pJSSoqyQ1tcbyDuayfhEB6W5/K2+xNO9BrTBC8KqCOhR8Nfj/1btPPvXx9+7J53evGBl7C7VOHlISDA804AY2++X2vjcvfzaryqXKX0Kqk1rOzwxKxSjwiiZ6OWXyqmlEhaP7LmKicBvRyBu6LMDunsedVglXqnsn03H+PlFkiBIVUyC/Ml+ao22eyGhVNME4DwWtLjmHdz235yYeKy5oBRKttX+w/O8Y/DCmG3il9U6uKPVEk1Z3jFQ+n6x+8sPxUsQKmNqfjs7/GFwKIlUcHRnY89rr01qBwuKZ3/Bf1b1pxtA4NhefWbneZpG3ibfnztZYPtVenh1bKUW5F3B4bpTx+neTv99ILyeSxfFyuURkb/QJU+Wtv2szE/7TR148wpLsKoL1axhKN/8wPjxhOlOltYMHnp0YzhbGMJM/1720mu7eamSG2+0u/nRqcJwa2WU79z44UcnkRmetyaKDA/aXlxnCd1myUHe8xuANg4hpatvwBeVNnrE4D/Dthet90wnpox7F45EgPGbbGUUEhKcq135qOKy1lk0lUvRxsXYG8s5ZuG3Ft4KXbEIUqEH7Sw8Cjk1pmd26w2MXT0GFniYwRgrjmRS1LCur11GA8DWyhY5ren4Ytx6aXcoIUeiCB8za4sxD2IIKNDYk+QHLzlAJMqhxWW3fng3RbKb1Eti2ZRV8f1OTBAhFzNr0LF+7EZJrbIQBGCKnb0ENaVxC9XzrQtXvWZEfcJNRgiDcQuC3HyhRiG90kpHKKcgu6Y0mockKTDRRUDGEmmSdhug0XFLhbg2U6ruSQjy4MGroutzYsCoii5xWmtLVuHbk4H0AAAD//37n55UAAAAGSURBVAMAavSEh3wH7MkAAAAASUVORK5CYII=">crowdsec</A>
<DT><A HREF="https://onedrive.live.com/?view=1" ADD_DATE="1782658911" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACCElEQVR4nKRTwWoUQRB91dOz2U10sxsJQTQ4uShEMDGoSE5B8L7ePPoDsuMX6B/oJ+QPcvDowehZXDzpLeYiMYLr7MzO9Mx0d1m7imiCh7AFDd1V9V69KqoVZjSFGU3/L3D3Zb1jWq5nF6itm/aQ5tTuYL11eDKPTjoe7nGUON77HvJG1nCEeY+gxdwI5O7di3e3F5+cUhDFg446Un2TpXE5KjpVowVTA2VN0IJTNagmRqg43nr1De/vL/8hoc34oFMXbjA6HkbRjRV0rq3iSwn+ISBBQ4WetbYIlCXV9vDiswtq59N2982EQJms6udJGnm2aAv4OAfSnMnnDm7oUB/V8EORcaWJ8lIT5nILfkXvXz9In09byIfpozzJcLV3B1/HwMgwqkoqFdJDUQHSe7DVRiGCTAlYB4RytPZx9DFNdF6UUXN1GWPdQj4FM1MuHaclbFLg3PZ5lHMBEgPkE8khIdSEIAhAxH29dO/WZwZFaWbhnNwqB5+W7EaGnBf5awtIRYyEUXol01SsFCMgLyy0qM3Y7nrGU6GDcp7YWHLjil1uoG92kSaYEpTu19S9DJ6ltOVg8vxAUTzsVCG/ZsYmOWaWTF+UhIvzcOtLyH6D+e/lIUjidIceTBepIySNysRsXc9b3kBXJr12AWORbaWk/wcNFtBbDvEMj2n/1Cae1Wb+TDMT/AQAAP//jwuVcgAAAAZJREFUAwCO3BAlPrGgJAAAAABJRU5ErkJggg==">OneDrive</A>
<DT><A HREF="https://app.pangolin.net/org_lsxd0ocafwikxgs/settings/sites" ADD_DATE="1782741601" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACM0lEQVR4nIxTTWgTURCemd21JFljYzEkaWxBxYLgIYoiiB4V0YOI3tQaI0FFrODBkyJe9KBQ8CD404UeavHgQQQvghcPVlCk4M+hoDVJW5paa9PAJtt946y2Jd1uSwd2eTPzzTez35vVIcAKJ9KhWNS9DgpOAvIgA7xSqD9d96Q46cdiozN+cYMZquk7kGGjUqoJEPcLoHMOOSPve2bEvI33h2qLCP7k0ls0dm8xwzEAboIVDBHeC+7IWmus/M+v5hKHFUM/MJiwSvNIIm3r9+HNL3Vi1AsERgcD7ZVMcTUEMsHu6vDkFe9M5uPioHKdmIj1UjJpH9ZFxI9C/Fr6FuZiFSA8rwDyIi4S53caoEE/MscWdUH4jkjdcuojhmumNdqOTAdEtWEReZeIt6l6Lh7HmVzyFCvuXWFiV8BlmaLP7Bm9OnWhLUZ2/a3EthEarfRf+eXUgjcwyynTGksy852RfCrc/ODnb6k5IxN+VeRsxUo28VmgZfnWqIAyjfUa6HvCVnEgiNs+m+pwQF0mGeUHG3RcATt+UI25ttxwDivN04KUQZ3RhyMTolrJD9LI7Qoqrubbkwz4XJ4XC6ssYnaJmN2wVIdnpOBumGa/TSm9ZQ3CIbnCG5JwHCO0fYFg+nRrC2pqSK6tWVwG33/is3HUtYPmo9Inmo9Ee0u/ZEUvecWEfFQY3gUU2sJq2WhkvGII6jKdTWRJ0z94G2rn45sdhzICisjOlSJQH8CeiUoj/i8AAAD//6STGMEAAAAGSURBVAMApk7VDSaYwJoAAAAASUVORK5CYII=">Pangolin</A>
<DT><A HREF="https://discord.com/channels/1350110102337749062/@home" ADD_DATE="1782836777" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACvElEQVR4nIRTzUtVURCfmXPuve9pvT7pyyKiwiAISgpbGEnpqqCQSFqWlYtq7Z/gMrJFH7ZqYy1qUSsNDN1UoEFSmAQllaWkxPPpu+/ed840c7VoE53Lhbkz8zsz85vftZAdRgBktdo7yk1IdEF8Rz0ndeojDL9K/Dl7f6+vNz/8NwZh+TScnKrZs3VDN3vXiWgC52Jg9tmliITG5OTbpUjm1viXma6RJ1sWs5jcRK2t0/l1O1Y/DoKopRIXPRF4uZt8FtcOBAtS3wNFuQKlaWVg9uPP0/39G8skOX7t9kL3MrjCgiktgCmWGGP50rc4z1gqgdFYLDlBGLUoRrF4tiNpJOOGva8CeCYd69CBANavRXg9Vs062L/P8o9ZhlejqbSivZGXUcClfMQiuU7CwDIm1YUY8NqlHBw/EuhocK4t0qJgTUYYPBsyfONOjLW1MgvmLFB6WUaAZu8rHMdA9bsJjjUFynBGj7WAv8Hq01j9TpIxmFgwQNBM3qdbAKqQVAAbGwJhHHDys+f7D2MolbzyAWqrT2ONBwPJ1UuroFjKNioFAylct1k/kd+9d3D9dhm+zXj4Pr1kvxWfxuo2keTqWpYUYImCKWFvm7GOhTidHQ81WHjQW+BdO0yWpfaaVVkM1q9DNlYMFPoQp7TkoDURypL9y5HqEstSSVrG0TeO9f0kNhGyxl6MaOvsrQn18kE8c7542AbBkK6xXGYhEnFvvYVHT5NluWZ647YTIYyNV2HiA3M+TyI2A96Zpiyh/eJiT5jLX0lEJJUKBknKuHLFH5VnZ36eIQyRw4hTUWOUxOWbfXdrrpJKeW6y2JUmlYEwKkSRrH5lAd2Sdlm0pQZwYRW4nMQiydFcxSg2k3J//6aFiam5U865HqKcM1hjUafWvelDcrBWWMs5zdFcxWRS/u/vLF6if//OvwAAAP//+ne95AAAAAZJREFUAwC0LH9s+YZFbQAAAABJRU5ErkJggg==">Discord</A>
<DT><A HREF="http://127.0.0.1:18789/chat?session=main" ADD_DATE="1783194015" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACnElEQVR4nHRTS2sUQRDuntfOzgZ1VxSDhgSCiBsRWURPgSRzMRcPBgXxpiDowUNAEQUJuUnES0CIFy9eFH+Bh5hjghgMxByETcTgIc+Jm92Z6emXXyca1o0W1FR3dX1fVU11W6RJdFeXrwcHy+Q/wsKwvISYZh/9i6Cv7xAJgrOZ1h11zo9yITqFUgT6vT0IVjzP+0Hq9c90amrrnwRGNsLwtm/bz3OUFmIhCAeBpTWpCdFYiePhC7OzL5vjLfN5S4htbBSGz0q53MQaY8FiHPPNLBNGl7Behe8YzqYrlbFmDB0BCVSthWF/4DiTPEnEpY0ti5YOWm9YpjlqvF6rU1k6qF5tNxR3HafGWH///PyUwdofwHJ3YKCbUvrEJeRUopRqy7hzLuO6w3Mp/gctYH0mTa3jriOpUlQTUhrp7v54eXk5osg8DOfocr3u5x3Hyrsu9dCzkJJEUPMTc8TsFdnknBR9Xx8JArXNWLqeJA8dLDoLWhfW41i1t7URCcCmlBpA8KqdvSFSWmuJahogcZKEUiEKW2l6wlmt1cZiKf3D+fzQAdctJgBDLLU7vh0lcBhCGLWdpgRJo0yId1GSjO+N8Vtv7wuf0jvrjHFQOKYFjoywGqOkqMRYgfG6EWPjQ9XqPYOzzTh6MI2TxeJSZtu3kMVmCBaoQuy2YqqgUKVhUS0jSt08HUVRH3DWNUKkYeqZm/uSCvHYo9RGrCV2SRSqUMiOnbYxeDtT6sGVxcWvBmPGv9cCRkOx0TOVyn30PMqktHDLPNNKQ0rgVJZK+ehqtTr+J3b/W/h9MFkuXyy47vRPzl+jbzuHu7TC+fkb1eqnZrARp+VlaXO7BhYWZt6XyxPI+FQyplPbrhmwOUOMasHsl9YsTbGtPvILAAD//xbFsCsAAAAGSURBVAMAmPW90zMoQIUAAAAASUVORK5CYII=">OpenClaw Control</A>
</DL><p>
<DT><A HREF="https://hermes-agent.nousresearch.com/docs/guides/local-ollama-setup" ADD_DATE="1782960038" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC3ElEQVR4nDxTSUiiYRh+1F/bb+0rQWCMbRBMYdElOnQKsigIgjpE07FLQxDMpZigGBvoEBmdI7pFpy4OVGhJC1nQAi3TponWpC2mzv+8kR98oP/3vt+zvM+nOJ3OSFZWFsLhMJKSkpCSkgK/34+XlxdsbGxge3sbtbW1aGhogMFgQDAYhEajgVarxe3tLZTCwkItL+Bi48TEBOx2OxITE9HS0gK9okd3dzcaGxsxNjaG6upqfC5eqLy+viIWi2F5eVkKA4FAvIDfbTYb/AE/5ufnkZ6ejtlZGxISDMKArBWdTieFhweHaGpqQm5uLkKhEGpqaoTu0NB3TE5OIhKJIDMzE1brLwwPDwsApSipqamYm5vDlmsL19fXOD09lca9vT243W48PT3BZPoi//f39wWgt7cX2dnZAqzx+Xyxjo4OrK6uxqmbysrgVou5SFWv18tOS0vDzc0NlpaW0NraivPzc2h5kJeXJ8X9/f2YmZlBqdGIwcFBTE39lsnwEkqNRqNS53A44mAKxzU6Oiqu09W+vj7VpATZnZ2dGB//iefnZ1Dqw8MDFEXB5uZmnJ3m7OwsVlRUBKfToWo+QE9PT/x2+lFRUSGmcpEtc0I2ap/4o6WTpHZ5eSUIbCLi+/u7/GYzUYnGTWaqb3C5XB/y2MyDq6u/WFxcFJd5wCYWMWTl5eUCwu9Ezc/PlzPWKGtra6Lv+PgY6+vrWFhYkMKqqip4PB4UFBTIpbs7O8KKIzab63BxcSE9yuPjP1gsFtHHpH16wDmbzWZ4vR68vYURVWdOdEoOhYLigd3+B9r6+joxitNQ34VoJLXKykp0dXWpISpTQ7QrU8rIyEBycjLI+u7uTg2SKp8ZsFqtaG5uVotNEhZSDfgDuL/3YeDbAEZGRuRlnpycYHp6Wti1tVnQ3t4OnUr/B02kZq/Hi5WVFWFSUlIiL/Do6Eh9F19hNJYKy5ycHBQXF4PpZSr/AwAA//+OHPKPAAAABklEQVQDAIQ/XAN0aatNAAAAAElFTkSuQmCC">Run Hermes Locally with Ollama — Zero API Cost | Hermes Agent</A>
<DT><A HREF="https://github.com/PatchMon/PatchMon" ADD_DATE="1783093358" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABtklEQVR4nIyTwStEURSH73szZCiFopTFlM00CzYayp9gpxTFQtkQZcfeghQLC81kFvakLEjZDCuJsLCYwoxig5JixpiZ5zszZ+r2snDq6517z/ndd96557kG8zzPMWr4A5CEe/iCnPpbEDM+s4V1PJZhGhpq2768HGzAouM45UoAoctTxDswZP5nuzAKJVdPWlHxMYxBCj4hCxn1TzV2CMOwJFqpoF8FAYizOcNeEL8D3vSNrfBKrEBsHX8WvmFQEqegXhOLJMhBJZKfrJKfpdEaK+rLGmFSNtM43ZCHXoRp7YuH72mDK02UNRbGvYEmuJbETu3yCzxoYrkmrgmt9aNUpH7YVbGnJ4bsmfCbxuSKm1UXcLXTYm0Q0zKDvuGSzaBWIU1v15dmXb0eo1cl0xYhsfjHJ0iDo6Y6SEYrOJED4rpIwgXckrgHPVYFUdjGPYMIyOwUICFlXRLcZDEHfXAntwEf1ufLDU2oL+McgjW0V/YoH0EXLECG4LlVgTQuY6rDJbYPI/Dj+JISMK5bLRzyrjHpuvglzZmXqZRYsNZlrFKm/Lam+l/krU+QsV2FA/JSlsb7BQAA//8fGtSHAAAABklEQVQDAIsg4TDVy+61AAAAAElFTkSuQmCC">PatchMon/PatchMon: Linux Patch Management &amp; Automation Platform</A>
<DT><A HREF="https://tweakcn.com/community?t=monthly" ADD_DATE="1783111778" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABEElEQVR4nKTTvUtCURjH8ZM1NjREUVBtQXNbRVM0tzW3NgVNETQFBY0JDg5uDg76D+gmOigKgjq5OLk4OLj59j34O3K9XvFefODDuZxzn+e83RszW8auiRZH2MfQdcRM+LhCHXFv506E5LwmfEDTDeyFTC5osqXkMAXczIHJ6wpc40PPN75k+/4YU/ey/xYOUMUpznCCRzTM/PDSeFGRijGrh3iLIp40lsMdzpWcwr1WcGlb/xZGahNq+1q6LTLBj5KfzfxGxt4C9sCy6KGkvl8McKGEtrad0DYWWzhGzazesx3/wzuS6KCLjCvgVmCXVcYXWp5VfSr5H2/axlJs+hJfcYjvoOQwBTZGlJ8pMGYAAAD//7DLkpkAAAAGSURBVAMA0vc1dH/tCLoAAAAASUVORK5CYII=">Community Themes - tweakcn</A>
<DT><A HREF="http://patch.mikemcfetridge.com/hosts" ADD_DATE="1783120194" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACmElEQVR4nHRTT0gUURh/37w34+7sjpr5B8kUMYk8FG1dBG8hQqcuSpCXEpSiICKIDpbHIgk6VRQkSKIeolNRCB1CJLQIgy6ZhWvk6mp/3JnZ2Zn3Xt+bdXW1+oY3M2/e9/3e+/2+32ikKKQksG1OCODQir8NDGyfQ1E24CVV0c2RROf3uJEQgajTuDS5DouVHv94/fnbIRgi2X8BqKd8dOdA82y9ddeP6cfcCCWWGxCBC5kII6bAHX7n3jWtuucunpl9U6hhhZfx+y31k9XWC6fMaMw4PGhOO/LyhxXwAeD2wUrxxTL83TXRRNr2L+App5FbSFhTRGd6if66IjaaKTca+bqfw6/UCjizXM4qnICWepwYcWZGkpmXja59FvKE5SaFG8OHupK11hju7GtA1KkIJwBty7ZEUYKZplK9bC070T61cKJjMGUXaxAmf4sbrSiUCLmEqAAU9ZyojYuIxfSqZftV+1SyUFxI2wIwAlnncgkqSNg6qRiKXRrRylL2s/2fv57sGEz/VaxCU21TITe9kDeDVC2lhEQ9Md9zJb3eOU7ozuIQQAniMm2JUZAqIBQHAN1CvawUqRrz/LXRxL3xLuzoDqOFAOpW4XjvWbDlMJk/B4JIzXFFsFJl9vWPHnkg4T8AvUvpx2zNm9OiVMdqDhtcZV5M6rjcX60xe/rHjj7csDYUA8DeS4tuy3q2G/ueISUaw8ocLnAkpY4tqSBg24H9Y0/sdP9IQoFA4Z9QN6kmfWjPhpR9vDzHk2YpMzSTMhKhGinBEaUsZukx46e3xLh8itsLrNkykgoFgkM8udVUPd1Q3p2jtJVy2YxZETTIAmo7eXju1/Cpq5/mizXYJkoBJC8kru0jBmnD5xAJMDHYmaPiDwAAAP//8YKkGAAAAAZJREFUAwCBgC0+4/nm9AAAAABJRU5ErkJggg==">PatchMon - Linux Patch Management Dashboard</A>
<DT><A HREF="https://eastondev.com/blog/en/posts/ai/20260227-openclaw-obsidian-sync/?appearance=dark" ADD_DATE="1783180863" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrklEQVR4nISTXUgUURTHz70zc9fd8iO/BmSjDWcRNlnNNDAo6IsMQpCiCCLqJSiwh4geeoh6KAIJDLIMpN6ilz6Iwh4SAx9SsjT72JQsEkHRzDRdd+beuac7qxurKR24cC5z/uf8zjlzKaxsFCDCIpEIm/dXDFpkmmVZvlAolKN8WVKin0Q0znm+aZqrLLB8/0vgxuM0MyMjp6m8tHw3o+SgRqCuKlpRYxYW3SuMBsJ4EfTuE2AgAPEEZEFIiotLg4xpBzjnLw3D15Lg2PltyO4ApsnsLFYV5+53Pv7uxlKCVALIzbWyTDPrGSW41pXicKwhb1IB7oKphA2C6yAoAVTHlSilzHVd8ZzV93TrntiKlG1gYDApeZcB5NrHz+9fOXM777MAOZSsoXlhCpq7AIwAncF2KuRdr41kAgNJNdWgQX3q6v3Uc3bw6qZsY2KqGsY5yDn3ikTaBkIwIqSuqWTk/IenKXIvAYnFelvC4dKffkPb4t0LILGNxLEIbbcdXL5eR2hELj2IOJ+xT8E8j+oHZJLA27Val4kgvZkgs+e2o42jqmqQasSRHDsUoR+IfMAaR9566J44RaCGknHZ0MgRR2LnXgt8eiKxlRCZD7P4QgzJJiBoSweQaLgGaws2kifjPektqELT1+nE1KXJVcEzR8uC+7X4bCX8oOD+pnv0AN2XHCRDQEd+dbhbu9CCR4FkYZUYjUR3jDnsWO/mgTemgHUwImIQ0H0gJFdHgt9vwETiIXk9O5oS/yXwzJHEyPOJtgut048f5Vc2/wIc4GO+VpWEQcAJwWBna3rlf36klBWXVNSs1qEZUdyWktapUfs1kDeP87479V/ASRcvIki9C+ZgLAGktr+/ry8cjgpKSabyb6mpaaeXiJclSDNNvUpDCEGGh4cddXeXC/oDAAD//9d3D+kAAAAGSURBVAMALEslpvcPz/MAAAAASUVORK5CYII=">Building Your Second Brain: OpenClaw &amp; Obsidian/Notion Deep Memory Sync Guide · Easton Blog</A>
</DL><p>
+18
View File
@@ -0,0 +1,18 @@
MIT License
Copyright (c) 2025 miker
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
+3
View File
@@ -0,0 +1,3 @@
{
"promptDelete": false
}
+3
View File
@@ -0,0 +1,3 @@
{
"cssTheme": "Obsidianite"
}
+22
View File
@@ -0,0 +1,22 @@
[
"editing-toolbar",
"obsidian-livesync",
"copilot",
"obsidian-icon-folder",
"obsidian-importer",
"obsidian-file-color",
"supercharged-links-obsidian",
"settings-search",
"recent-files-obsidian",
"obsidian-paste-image-rename",
"omnisearch",
"mcp-tools-istefox",
"calendar",
"colored-tags",
"file-explorer-note-count",
"code-styler",
"file-explorer-plus",
"cmdr",
"obsidian-tasks-plugin",
"notebook-navigator"
]
+33
View File
@@ -0,0 +1,33 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"properties": false,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"bookmarks": true,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": true,
"webviewer": false,
"footnotes": false,
"bases": true
}
+22
View File
@@ -0,0 +1,22 @@
{
"collapse-filter": true,
"search": "",
"showTags": true,
"showAttachments": true,
"hideUnresolved": true,
"showOrphans": true,
"collapse-color-groups": true,
"colorGroups": [],
"collapse-display": true,
"showArrow": false,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
"lineSizeMultiplier": 1,
"collapse-forces": true,
"centerStrength": 0.518713248970312,
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 0.13168724279835387,
"close": true
}
+11
View File
@@ -0,0 +1,11 @@
{
"omnisearch:show-modal": [
{
"modifiers": [
"Mod"
],
"key": "O"
}
],
"switcher:open": []
}
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" fill="currentColor" width="16px" height="16px"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"></path></svg>

After

Width:  |  Height:  |  Size: 451 B

+10
View File
@@ -0,0 +1,10 @@
{
"shouldConfirmBeforeCreate": true,
"weekStart": "locale",
"wordsPerDot": 250,
"showWeeklyNote": false,
"weeklyNoteFormat": "",
"weeklyNoteTemplate": "",
"weeklyNoteFolder": "",
"localeOverride": "system-default"
}
File diff suppressed because it is too large Load Diff
+10
View File
@@ -0,0 +1,10 @@
{
"id": "calendar",
"name": "Calendar",
"description": "Calendar view of your daily notes",
"version": "1.5.10",
"author": "Liam Cain",
"authorUrl": "https://github.com/liamcain/",
"isDesktopOnly": false,
"minAppVersion": "0.9.11"
}
+36
View File
@@ -0,0 +1,36 @@
{
"confirmDeletion": true,
"showAddCommand": true,
"debug": false,
"editorMenu": [],
"fileMenu": [],
"leftRibbon": [],
"rightRibbon": [],
"titleBar": [],
"statusBar": [],
"pageHeader": [
{
"id": "omnisearch:show-modal",
"icon": "lucide-search",
"name": "Omnisearch: Vault search",
"mode": "any"
}
],
"macros": [],
"explorer": [],
"hide": {
"statusbar": [],
"leftRibbon": []
},
"spacing": 8,
"advancedToolbar": {
"rowHeight": 48,
"rowCount": 1,
"spacing": 0,
"buttonWidth": 48,
"columnLayout": false,
"mappedIcons": [],
"tooltips": false,
"heightOffset": 0
}
}
File diff suppressed because one or more lines are too long
+11
View File
@@ -0,0 +1,11 @@
{
"id": "cmdr",
"name": "Commander",
"version": "0.5.5",
"minAppVersion": "1.4.0",
"description": "Customize your workspace by adding commands everywhere, create Macros and supercharge your mobile toolbar.",
"author": "jsmorabito & phibr0",
"authorUrl": "https://github.com/phibr0",
"fundingUrl": "https://ko-fi.com/phibr0",
"isDesktopOnly": false
}
File diff suppressed because one or more lines are too long
+457
View File
@@ -0,0 +1,457 @@
{
"themes": {
"Default": {
"settings": {
"codeblock": {
"lineNumbers": true,
"unwrapLines": true,
"wrapLinesActive": false,
"curvature": 4
},
"gutter": {
"highlight": true,
"activeLine": false
},
"header": {
"title": {
"textFont": "",
"textBold": false,
"textItalic": true
},
"languageTag": {
"display": "none",
"textFont": "",
"textBold": true,
"textItalic": false
},
"languageIcon": {
"display": "none",
"displayColour": true
},
"externalReference": {
"displayRepository": true,
"displayVersion": true,
"displayTimestamp": true
},
"fontSize": 14,
"foldPlaceholder": ""
},
"highlights": {
"activeCodeblockLine": false,
"activeEditorLine": false
},
"inline": {
"syntaxHighlight": true,
"style": true,
"fontWeight": 4,
"curvature": 6,
"paddingVertical": 5,
"paddingHorizontal": 5,
"marginHorizontal": 0,
"titleFontWeight": 8
},
"advanced": {
"gradientHighlights": false,
"gradientHighlightsColourStop": "70%",
"languageBorderColour": false,
"languageBorderWidth": 5,
"iconSize": 28
}
},
"colours": {
"light": {
"codeblock": {
"backgroundColour": "--code-background",
"textColour": "--code-normal"
},
"gutter": {
"backgroundColour": "--code-background",
"textColour": "--text-faint",
"activeTextColour": "--text-muted"
},
"header": {
"backgroundColour": "--code-background",
"title": {
"textColour": "--code-comment"
},
"languageTag": {
"backgroundColour": "--code-background",
"textColour": "--code-comment"
},
"externalReference": {
"displayRepositoryColour": "#00FFFF",
"displayVersionColour": "#FF00FF",
"displayTimestampColour": "#808080"
},
"lineColour": "--color-base-30"
},
"highlights": {
"activeCodeblockLineColour": "--color-base-30",
"activeEditorLineColour": "--color-base-20",
"defaultColour": "--text-highlight-bg",
"alternativeHighlights": {}
},
"inline": {
"backgroundColour": "--code-background",
"textColour": "--code-normal",
"activeTextColour": "--code-normal",
"titleTextColour": "--code-comment"
},
"advanced": {
"buttonColour": "--text-muted",
"buttonActiveColour": "--text-normal"
}
},
"dark": {
"codeblock": {
"backgroundColour": "--code-background",
"textColour": "--code-normal"
},
"gutter": {
"backgroundColour": "--code-background",
"textColour": "--text-faint",
"activeTextColour": "--text-muted"
},
"header": {
"backgroundColour": "--code-background",
"title": {
"textColour": "--code-comment"
},
"languageTag": {
"backgroundColour": "--code-background",
"textColour": "--code-comment"
},
"externalReference": {
"displayRepositoryColour": "#00FFFF",
"displayVersionColour": "#FF00FF",
"displayTimestampColour": "#808080"
},
"lineColour": "--color-base-30"
},
"highlights": {
"activeCodeblockLineColour": "--color-base-30",
"activeEditorLineColour": "--color-base-20",
"defaultColour": "--text-highlight-bg",
"alternativeHighlights": {}
},
"inline": {
"backgroundColour": "--code-background",
"textColour": "--code-normal",
"activeTextColour": "--code-normal",
"titleTextColour": "--code-comment"
},
"advanced": {
"buttonColour": "--text-muted",
"buttonActiveColour": "--text-normal"
}
}
}
},
"Solarized": {
"settings": {
"codeblock": {
"lineNumbers": true,
"unwrapLines": true,
"wrapLinesActive": false,
"curvature": 4
},
"gutter": {
"highlight": true,
"activeLine": false
},
"header": {
"title": {
"textFont": "",
"textBold": false,
"textItalic": true
},
"languageTag": {
"display": "none",
"textFont": "",
"textBold": true,
"textItalic": false
},
"languageIcon": {
"display": "none",
"displayColour": true
},
"externalReference": {
"displayRepository": true,
"displayVersion": true,
"displayTimestamp": true
},
"fontSize": 14,
"foldPlaceholder": ""
},
"highlights": {
"activeCodeblockLine": false,
"activeEditorLine": false
},
"inline": {
"syntaxHighlight": true,
"style": true,
"fontWeight": 4,
"curvature": 6,
"paddingVertical": 5,
"paddingHorizontal": 5,
"marginHorizontal": 0,
"titleFontWeight": 8
},
"advanced": {
"gradientHighlights": false,
"gradientHighlightsColourStop": "70%",
"languageBorderColour": false,
"languageBorderWidth": 5,
"iconSize": 28
}
},
"colours": {
"light": {
"codeblock": {
"backgroundColour": "#fdf6e3",
"textColour": "#bababa"
},
"gutter": {
"backgroundColour": "#eee8d5",
"textColour": "#6c6c6c",
"activeTextColour": "#8c8c8c"
},
"header": {
"backgroundColour": "#D5CCB4",
"title": {
"textColour": "#866704"
},
"languageTag": {
"backgroundColour": "#B8B5AA",
"textColour": "#C25F30"
},
"externalReference": {
"displayRepositoryColour": "#941100",
"displayVersionColour": "#ff9300",
"displayTimestampColour": "#808080"
},
"lineColour": "#EDD489"
},
"highlights": {
"activeCodeblockLineColour": "#eee8d5",
"activeEditorLineColour": "#60460633",
"defaultColour": "#E9DFBA",
"alternativeHighlights": {}
},
"inline": {
"backgroundColour": "#fdf6e3",
"textColour": "#bababa",
"activeTextColour": "#bababa",
"titleTextColour": "#C25F30"
},
"advanced": {
"buttonColour": "--text-muted",
"buttonActiveColour": "--text-normal"
}
},
"dark": {
"codeblock": {
"backgroundColour": "#002b36",
"textColour": "#bababa"
},
"gutter": {
"backgroundColour": "#073642",
"textColour": "#6c6c6c",
"activeTextColour": "#4c4c4c"
},
"header": {
"backgroundColour": "#0a4554",
"title": {
"textColour": "#dadada"
},
"languageTag": {
"backgroundColour": "#008080",
"textColour": "#000000"
},
"externalReference": {
"displayRepositoryColour": "#00FFFF",
"displayVersionColour": "#9437ff",
"displayTimestampColour": "#808080"
},
"lineColour": "#46cced"
},
"highlights": {
"activeCodeblockLineColour": "#073642",
"activeEditorLineColour": "#468eeb33",
"defaultColour": "#054b5c",
"alternativeHighlights": {}
},
"inline": {
"backgroundColour": "#002b36",
"textColour": "#bababa",
"activeTextColour": "#bababa",
"titleTextColour": "#000000"
},
"advanced": {
"buttonColour": "--text-muted",
"buttonActiveColour": "--text-normal"
}
}
}
}
},
"selectedTheme": "Solarized",
"currentTheme": {
"settings": {
"codeblock": {
"lineNumbers": true,
"unwrapLines": true,
"wrapLinesActive": false,
"curvature": 4
},
"gutter": {
"highlight": true,
"activeLine": false
},
"header": {
"title": {
"textFont": "",
"textBold": false,
"textItalic": true
},
"languageTag": {
"display": "none",
"textFont": "",
"textBold": true,
"textItalic": false
},
"languageIcon": {
"display": "none",
"displayColour": true
},
"externalReference": {
"displayRepository": true,
"displayVersion": true,
"displayTimestamp": true
},
"fontSize": 14,
"foldPlaceholder": ""
},
"highlights": {
"activeCodeblockLine": false,
"activeEditorLine": false
},
"inline": {
"syntaxHighlight": true,
"style": true,
"fontWeight": 4,
"curvature": 6,
"paddingVertical": 5,
"paddingHorizontal": 5,
"marginHorizontal": 0,
"titleFontWeight": 8
},
"advanced": {
"gradientHighlights": false,
"gradientHighlightsColourStop": "70%",
"languageBorderColour": false,
"languageBorderWidth": 5,
"iconSize": 28
}
},
"colours": {
"light": {
"codeblock": {
"backgroundColour": "#fdf6e3",
"textColour": "#bababa"
},
"gutter": {
"backgroundColour": "#eee8d5",
"textColour": "#6c6c6c",
"activeTextColour": "#8c8c8c"
},
"header": {
"backgroundColour": "#D5CCB4",
"title": {
"textColour": "#866704"
},
"languageTag": {
"backgroundColour": "#B8B5AA",
"textColour": "#C25F30"
},
"externalReference": {
"displayRepositoryColour": "#941100",
"displayVersionColour": "#ff9300",
"displayTimestampColour": "#808080"
},
"lineColour": "#EDD489"
},
"highlights": {
"activeCodeblockLineColour": "#eee8d5",
"activeEditorLineColour": "#60460633",
"defaultColour": "#E9DFBA",
"alternativeHighlights": {}
},
"inline": {
"backgroundColour": "#fdf6e3",
"textColour": "#bababa",
"activeTextColour": "#bababa",
"titleTextColour": "#C25F30"
},
"advanced": {
"buttonColour": "--text-muted",
"buttonActiveColour": "--text-normal"
}
},
"dark": {
"codeblock": {
"backgroundColour": "#002b36",
"textColour": "#bababa"
},
"gutter": {
"backgroundColour": "#073642",
"textColour": "#6c6c6c",
"activeTextColour": "#4c4c4c"
},
"header": {
"backgroundColour": "#0a4554",
"title": {
"textColour": "#dadada"
},
"languageTag": {
"backgroundColour": "#008080",
"textColour": "#000000"
},
"externalReference": {
"displayRepositoryColour": "#00FFFF",
"displayVersionColour": "#9437ff",
"displayTimestampColour": "#808080"
},
"lineColour": "#46cced"
},
"highlights": {
"activeCodeblockLineColour": "#073642",
"activeEditorLineColour": "#468eeb33",
"defaultColour": "#054b5c",
"alternativeHighlights": {}
},
"inline": {
"backgroundColour": "#002b36",
"textColour": "#bababa",
"activeTextColour": "#bababa",
"titleTextColour": "#000000"
},
"advanced": {
"buttonColour": "--text-muted",
"buttonActiveColour": "--text-normal"
}
}
}
},
"newTheme": "",
"newHighlight": "",
"exampleCodeblockParameters": "python title:foo",
"exampleCodeblockContent": "print(\"This line is very long and should be used as an example for how the plugin deals with wrapping and unwrapping very long lines given the choice of codeblock parameters and settings.\")\nprint(\"This line is highlighted.\")",
"exampleInlineCode": "{python icon title:foo} print(\"This is inline code\")",
"decoratePrint": true,
"excludedLanguages": "ad-*, reference",
"externalReferenceUpdateOnLoad": false,
"processedCodeblocksWhitelist": "run-*, include",
"redirectLanguages": {},
"version": "1.1.7"
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,11 @@
{
"id": "code-styler",
"name": "Code Styler",
"version": "1.1.7",
"minAppVersion": "0.15.0",
"description": "Style and customize codeblocks and inline code in both editing mode and reading mode.",
"author": "Mayuran Visakan",
"authorUrl": "https://github.com/mayurankv",
"fundingUrl": "https://www.buymeacoffee.com/mayurankv2",
"isDesktopOnly": false
}
@@ -0,0 +1 @@
{}
File diff suppressed because it is too large Load Diff
+59
View File
@@ -0,0 +1,59 @@
{
"palette": {
"seed": 0,
"selected": "adaptive-soft",
"custom": "e12729-f37324-f8cc1b-72b043-007f4e"
},
"mixColors": true,
"transition": true,
"accessibility": {
"highTextContrast": false
},
"knownTags": {
"ai": 20,
"ansible": 10,
"authentik": 3,
"backup": 11,
"bookstack": 33,
"cheetsheet": 17,
"chezmoi": 37,
"ci": 38,
"ci-cd": 39,
"clippings": 43,
"configs": 40,
"containers": 21,
"dashboard": 7,
"desktop": 30,
"docker": 4,
"documentation": 34,
"documents": 5,
"email": 8,
"git": 36,
"hermes": 29,
"ip": 32,
"lxc": 22,
"management": 31,
"manager": 9,
"media": 16,
"monitoring": 12,
"mount": 23,
"networking": 24,
"notes": 35,
"patching": 15,
"persona": 25,
"powershell": 18,
"proxmox": 26,
"proxy": 13,
"resizing": 27,
"scirpts": 42,
"security": 6,
"server": 41,
"storage": 28,
"windows": 19,
"wireguard": 14,
"xrandr": 2,
"ci/cd": 1
},
"tagColors": {},
"_version": 4
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,10 @@
{
"id": "colored-tags",
"name": "Colored Tags",
"version": "6.1.3",
"minAppVersion": "0.15.0",
"description": "Colorizes tags in different colors. Colors of nested tags are mixed with the root tag to improve readability. Text color contrast is automatically matched to comply with AA level of WCAG 2.1.",
"author": "Pavel Frankov",
"authorUrl": "https://github.com/pfrankov",
"isDesktopOnly": false
}
+196
View File
@@ -0,0 +1,196 @@
/* src/styles.css */
.colored-tags-settings .tagsExample {
display: flex;
gap: 0.5em;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
margin: 1em 0 2em;
}
.colored-tags-settings .palette {
display: flex;
align-items: stretch;
border-radius: var(--radius-m);
overflow: hidden;
}
.colored-tags-settings .visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
.colored-tags-settings .community-palettes {
display: block;
}
.colored-tags-settings .community-palettes > *:first-child {
margin-inline-end: 0;
}
.colored-tags-settings .community-palettes__scroll {
margin-top: var(--size-4-3);
max-height: 400px;
overflow-y: auto;
padding: var(--size-4-3);
}
.colored-tags-settings .community-palettes__grid {
display: grid;
gap: var(--size-4-4);
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
}
.colored-tags-settings .community-palettes__status {
color: var(--text-faint);
padding: var(--size-4-3);
border-radius: var(--radius-m);
background-color: var(--background-primary);
border: var(--border-width) solid var(--background-modifier-border);
}
.colored-tags-settings .community-palette-card {
display: flex;
flex-direction: column;
gap: var(--size-4-2);
padding: var(--size-4-3);
border-radius: var(--radius-m);
position: relative;
background-color: var(--dropdown-background);
box-shadow: var(--input-shadow);
cursor: pointer;
transition: all 120ms ease-in-out;
}
.colored-tags-settings .community-palette-card.is-selected {
box-shadow: 0 0 0 2px var(--interactive-accent), var(--input-shadow);
cursor: auto;
}
.colored-tags-settings .community-palette-card.is-selected::after {
content: "\2713";
position: absolute;
top: var(--size-4-2);
right: var(--size-4-2);
width: var(--size-4-4);
height: var(--size-4-4);
border-radius: var(--radius-round, 999px);
background-color: var(--interactive-accent);
color: var(--text-on-accent, var(--background-primary));
display: flex;
align-items: center;
justify-content: center;
font-weight: var(--font-semibold, 600);
}
.colored-tags-settings .community-palette-card:hover {
background-color: var(--dropdown-background-hover);
box-shadow: var(--input-shadow-hover);
}
.colored-tags-settings .community-palette-card.is-selected:hover {
box-shadow: 0 0 0 2px var(--interactive-accent), var(--input-shadow);
}
.colored-tags-settings .community-palette-card:focus-visible {
outline: var(--border-width) solid var(--interactive-accent);
outline-offset: var(--outline-offset);
box-shadow: 0 0 0 3px var(--background-modifier-border-focus);
}
.colored-tags-settings .community-palette-card__preview {
display: flex;
overflow: hidden;
border-radius: var(--radius-m);
height: var(--input-height);
}
.colored-tags-settings .community-palette-card__meta {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--size-4-2);
min-height: var(--line-height-tight);
}
.colored-tags-settings .community-palette-card__author {
font-family: var(--font-monospace);
color: var(--text-muted);
}
.colored-tags-settings .community-palette-card.is-selected .community-palette-card__author {
font-weight: var(--font-semibold, 600);
}
.colored-tags-settings .community-palette-card__upvotes {
color: var(--text-muted);
font-size: var(--font-ui-smaller);
font-weight: var(--font-medium);
}
.colored-tags-settings .tag-color-setting-item {
flex-direction: column;
align-items: stretch;
gap: var(--size-4-2);
}
.colored-tags-settings .tag-color-setting-item .setting-item-control {
width: 100%;
}
.colored-tags-settings .tag-color-setting {
display: flex;
flex-direction: column;
gap: var(--size-4-2);
width: 100%;
}
.colored-tags-settings .tag-color-setting__row {
display: grid;
grid-template-columns: auto 1fr;
gap: var(--size-4-3);
align-items: start;
}
.colored-tags-settings .tag-color-setting__input input[type=text] {
width: 220px;
font-weight: var(--font-normal, 400);
}
.theme-light .colored-tags-settings .tag-color-setting__input input[type=text] {
color-scheme: light;
background-color: var(--background-primary);
color: var(--text-normal);
}
.colored-tags-settings .tag-color-setting__palette {
display: flex;
flex-wrap: wrap;
gap: var(--size-2-2);
}
.colored-tags-settings .tag-color-setting__swatch {
width: 32px;
height: 32px;
border-radius: var(--radius-s);
cursor: pointer;
}
.colored-tags-settings .tag-color-setting__swatch:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.colored-tags-settings .tag-color-setting__swatch.is-selected {
box-shadow: 0 0 0 3px var(--interactive-accent);
}
.colored-tags-settings .tag-color-setting__chips {
display: flex;
flex-wrap: wrap;
gap: var(--size-2-2);
margin-top: var(--size-2-3);
}
.colored-tags-settings .tag-color-setting__chip {
position: relative;
display: inline-flex;
align-items: center;
gap: var(--size-2-1);
text-decoration: none;
}
.colored-tags-settings .tag-color-setting__chip-remove {
background: none;
border: none;
color: var(--text-faint);
width: 18px;
height: 18px;
display: inline-flex;
align-items: center;
justify-content: center;
cursor: pointer;
box-shadow: none;
font-size: var(--font-ui-smaller);
margin-left: -6px;
}
.colored-tags-settings .tag-color-setting__empty {
color: var(--text-faint);
font-style: italic;
}
+338
View File
@@ -0,0 +1,338 @@
{
"userId": "2ded4caa-c74d-4fac-98fa-7d569a80824a",
"isPlusUser": false,
"plusLicenseKey": "",
"openAIApiKey": "",
"openAIOrgId": "",
"huggingfaceApiKey": "",
"cohereApiKey": "",
"anthropicApiKey": "",
"azureOpenAIApiKey": "",
"azureOpenAIApiInstanceName": "",
"azureOpenAIApiDeploymentName": "",
"azureOpenAIApiVersion": "",
"azureOpenAIApiEmbeddingDeploymentName": "",
"googleApiKey": "",
"openRouterAiApiKey": "",
"xaiApiKey": "",
"mistralApiKey": "",
"deepseekApiKey": "",
"defaultChainType": "llm_chain",
"defaultModelKey": "dolphin3.0-llama3.2-3b|lm-studio",
"embeddingModelKey": "text-embedding-3-small|openai",
"temperature": 0.1,
"maxTokens": 6000,
"contextTurns": 15,
"userSystemPrompt": "",
"openAIProxyBaseUrl": "",
"openAIEmbeddingProxyBaseUrl": "",
"stream": true,
"defaultSaveFolder": "copilot-conversations",
"defaultConversationTag": "copilot-conversation",
"autosaveChat": false,
"includeActiveNoteAsContext": true,
"defaultOpenArea": "view",
"customPromptsFolder": "copilot-custom-prompts",
"indexVaultToVectorStore": "ON MODE SWITCH",
"qaExclusions": "copilot-conversations,copilot-custom-prompts",
"qaInclusions": "",
"chatNoteContextPath": "",
"chatNoteContextTags": [],
"enableIndexSync": true,
"debug": false,
"enableEncryption": false,
"maxSourceChunks": 3,
"groqApiKey": "",
"activeModels": [
{
"name": "copilot-plus-flash",
"provider": "copilot-plus",
"enabled": false,
"isBuiltIn": true,
"core": true,
"plusExclusive": true,
"projectEnabled": false,
"capabilities": [
"vision"
]
},
{
"name": "google/gemini-2.5-flash-lite-preview-06-17",
"provider": "openrouterai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "google/gemini-2.5-flash",
"provider": "openrouterai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "google/gemini-2.5-pro",
"provider": "openrouterai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-5",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-5-mini",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-5-nano",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-4.1",
"provider": "openai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-4.1-mini",
"provider": "openai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-4.1-nano",
"provider": "openai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "o4-mini",
"provider": "openai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"capabilities": [
"reasoning"
]
},
{
"name": "claude-3-5-sonnet-latest",
"provider": "anthropic",
"enabled": false,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "claude-sonnet-4-20250514",
"provider": "anthropic",
"enabled": false,
"isBuiltIn": true,
"capabilities": [
"reasoning",
"vision"
]
},
{
"name": "claude-3-7-sonnet-latest",
"provider": "anthropic",
"enabled": false,
"isBuiltIn": true,
"capabilities": [
"reasoning",
"vision"
]
},
{
"name": "claude-3-5-haiku-latest",
"provider": "anthropic",
"enabled": false,
"isBuiltIn": true
},
{
"name": "grok-3-beta",
"provider": "xai",
"enabled": false,
"isBuiltIn": true
},
{
"name": "grok-3-mini-beta",
"provider": "xai",
"enabled": false,
"isBuiltIn": true
},
{
"name": "gemini-2.5-flash",
"provider": "google",
"enabled": false,
"isBuiltIn": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gemini-2.5-pro",
"provider": "google",
"enabled": false,
"isBuiltIn": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "command-r",
"provider": "cohereai",
"enabled": false,
"isBuiltIn": true
},
{
"name": "command-r-plus",
"provider": "cohereai",
"enabled": false,
"isBuiltIn": true
},
{
"name": "azure-openai",
"provider": "azure openai",
"enabled": false,
"isBuiltIn": true
}
],
"activeEmbeddingModels": [
{
"name": "copilot-plus-small",
"provider": "copilot-plus",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true,
"plusExclusive": true
},
{
"name": "copilot-plus-large",
"provider": "copilot-plus-jina",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true,
"plusExclusive": true,
"believerExclusive": true,
"dimensions": 1024
},
{
"name": "copilot-plus-multilingual",
"provider": "copilot-plus-jina",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true,
"plusExclusive": true,
"dimensions": 512
},
{
"name": "text-embedding-3-small",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true
},
{
"name": "text-embedding-3-large",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true
},
{
"name": "embed-multilingual-light-v3.0",
"provider": "cohereai",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true
},
{
"name": "text-embedding-004",
"provider": "google",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true
},
{
"name": "azure-openai",
"provider": "azure openai",
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true
}
],
"embeddingRequestsPerMin": 90,
"embeddingBatchSize": 16,
"disableIndexOnMobile": true,
"showSuggestedPrompts": true,
"showRelevantNotes": true,
"numPartitions": 1,
"promptUsageTimestamps": {},
"promptSortStrategy": "timestamp",
"defaultConversationNoteName": "{$topic}@{$date}_{$time}",
"inlineEditCommands": [],
"projectList": [],
"enableAutocomplete": false,
"autocompleteAcceptKey": "Tab",
"allowAdditionalContext": true,
"enableWordCompletion": false,
"lastDismissedVersion": "2.9.5",
"passMarkdownImages": true,
"enableCustomPromptTemplating": true,
"suggestedDefaultCommands": true
}
File diff suppressed because one or more lines are too long
+13
View File
@@ -0,0 +1,13 @@
{
"id": "copilot",
"name": "Copilot",
"version": "2.9.5",
"minAppVersion": "0.15.0",
"description": "Your AI Copilot: Chat with Your Second Brain, Learn Faster, Work Smarter.",
"author": "Logan Yang",
"authorUrl": "https://twitter.com/logancyang",
"fundingUrl": {
"Buy Me a Coffee": "https://www.buymeacoffee.com/logancyang",
"GitHub Sponsor": "https://github.com/sponsors/logancyang"
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,328 @@
{
"lastVersion": "3.1.16",
"aestheticStyle": "default",
"positionStyle": "top",
"menuCommands": [
{
"id": "editing-toolbar:editor-undo",
"name": "Undo editor",
"icon": "undo-glyph"
},
{
"id": "editing-toolbar:editor-redo",
"name": "Redo editor",
"icon": "redo-glyph"
},
{
"id": "editing-toolbar:toggle-format-brush",
"name": "Format Brush",
"icon": "paintbrush"
},
{
"id": "editing-toolbar:format-eraser",
"name": "Clear text formatting",
"icon": "eraser"
},
{
"id": "editing-toolbar:header2-text",
"name": "Header 2",
"icon": "header-2"
},
{
"id": "editing-toolbar:header3-text",
"name": "Header 3",
"icon": "header-3"
},
{
"id": "SubmenuCommands-header",
"name": "submenu",
"icon": "header-n",
"SubmenuCommands": [
{
"id": "editing-toolbar:header1-text",
"name": "Header 1",
"icon": "header-1"
},
{
"id": "editing-toolbar:header4-text",
"name": "Header 4",
"icon": "header-4"
},
{
"id": "editing-toolbar:header5-text",
"name": "Header 5",
"icon": "header-5"
},
{
"id": "editing-toolbar:header6-text",
"name": "Header 6",
"icon": "header-6"
}
]
},
{
"id": "editing-toolbar:toggle-bold",
"name": "Bold",
"icon": "bold-glyph"
},
{
"id": "editing-toolbar:toggle-italics",
"name": "Italics",
"icon": "italic-glyph"
},
{
"id": "editing-toolbar:toggle-strikethrough",
"name": "Strikethrough",
"icon": "strikethrough-glyph"
},
{
"id": "editing-toolbar:underline",
"name": "Underline",
"icon": "underline-glyph"
},
{
"id": "editing-toolbar:toggle-highlight",
"name": "==Highlight==",
"icon": "highlight-glyph"
},
{
"id": "SubmenuCommands-lucdf3en5",
"name": "submenu",
"icon": "edit",
"SubmenuCommands": [
{
"id": "editing-toolbar:editor-copy",
"name": "Copy",
"icon": "lucide-copy"
},
{
"id": "editing-toolbar:editor-cut",
"name": "Cut",
"icon": "lucide-scissors"
},
{
"id": "editing-toolbar:editor-paste",
"name": "Paste",
"icon": "lucide-clipboard-type"
},
{
"id": "editing-toolbar:editor:swap-line-down",
"name": "Swap line down",
"icon": "lucide-corner-right-down"
},
{
"id": "editing-toolbar:editor:swap-line-up",
"name": "Swap line up",
"icon": "lucide-corner-right-up"
}
]
},
{
"id": "editing-toolbar:editor:attach-file",
"name": "Attach file",
"icon": "lucide-paperclip"
},
{
"id": "editing-toolbar:editor:insert-table",
"name": "Insert Table",
"icon": "lucide-table"
},
{
"id": "editing-toolbar:editor:cycle-list-checklist",
"name": "Cycle list checklist",
"icon": "check-circle"
},
{
"id": "SubmenuCommands-luc8efull",
"name": "submenu",
"icon": "message-square",
"SubmenuCommands": [
{
"id": "editing-toolbar:editor:toggle-blockquote",
"name": "Blockquote",
"icon": "lucide-text-quote"
},
{
"id": "editing-toolbar:insert-callout",
"name": "Insert Callout ",
"icon": "lucide-quote"
}
]
},
{
"id": "SubmenuCommands-mdcmder",
"name": "submenu",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M464 608 l0 -568 q0 -3 -2.5 -5.5 q-2.5 -2.5 -5.5 -2.5 l-80 0 q-3 0 -5.5 2.5 q-2.5 2.5 -2.5 5.5 l0 568 l-232 0 q-3 0 -5.5 2.5 q-2.5 2.5 -2.5 5.5 l0 80 q0 3 2.5 5.5 q2.5 2.5 5.5 2.5 l560 0 q3 0 5.5 -2.5 q2.5 -2.5 2.5 -5.5 l0 -80 q0 -3 -2.5 -5.5 q-2.5 -2.5 -5.5 -2.5 l-232 0 ZM864 696 q17 0 28.5 11.5 q11.5 11.5 11.5 28.5 q0 17 -11.5 28.5 q-11.5 11.5 -28.5 11.5 q-17 0 -28.5 -11.5 q-11.5 -11.5 -11.5 -28.5 q0 -17 11.5 -28.5 q11.5 -11.5 28.5 -11.5 ZM864 640 q-40 0 -68 28 q-28 28 -28 68 q0 40 28 68 q28 28 68 28 q40 0 68 -28 q28 -28 28 -68 q0 -40 -28 -68 q-28 -28 -68 -28 ZM576 322 l0 -63 q0 -3 2 -5 l89 -70 l-89 -70 q-2 -2 -2 -5 l0 -63 q0 -4 3.5 -5.5 q3.5 -1.5 6.5 0.5 l170 133 q4 3 4.5 8.5 q0.5 5.5 -2.5 9.5 l-2 2 l-170 133 q-3 2 -6.5 0.5 q-3.5 -1.5 -3.5 -5.5 ZM256 322 l0 -63 q0 -3 -2 -5 l-89 -70 l89 -70 q2 -2 2 -5 l0 -63 q0 -4 -3.5 -5.5 q-3.5 -1.5 -6.5 0.5 l-170 133 q-4 3 -4.5 8.5 q-0.5 5.5 2.5 9.5 l2 2 l170 133 q3 2 6.5 0.5 q3.5 -1.5 3.5 -5.5 Z\"></path></g></svg>",
"SubmenuCommands": [
{
"id": "editing-toolbar:superscript",
"name": "Superscript",
"icon": "superscript-glyph"
},
{
"id": "editing-toolbar:subscript",
"name": "Subscript",
"icon": "subscript-glyph"
},
{
"id": "editing-toolbar:editor:toggle-code",
"name": "Inline code",
"icon": "code-glyph"
},
{
"id": "editing-toolbar:codeblock",
"name": "Code block",
"icon": "codeblock-glyph"
},
{
"id": "editing-toolbar:editor:insert-wikilink",
"name": "Insert wikilink [[]]",
"icon": "<svg width=\"15\" height=\"15\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M306 134 l91 0 q1 0 1 -8 l0 -80 q0 -8 -1 -8 l-91 0 q-1 0 -1 7 q0 -8 -5 -8 l-45 0 q-5 0 -5 8 l0 784 q0 8 5 8 l45 0 q5 0 5 -8 q0 8 1 8 l91 0 q1 0 1 -8 l0 -80 q0 -8 -1 -8 l-91 0 q-1 0 -1 8 l0 -623 q0 8 1 8 ZM139 134 l91 0 q1 0 1 -8 l0 -80 q0 -8 -1 -8 l-91 0 q-1 0 -1 7 q0 -8 -5 -8 l-45 0 q-5 0 -5 8 l0 784 q0 8 5 8 l45 0 q5 0 5 -8 q0 8 1 8 l91 0 q1 0 1 -8 l0 -80 q0 -8 -1 -8 l-91 0 q-1 0 -1 8 l0 -623 q0 8 1 8 ZM711 134 q1 0 1 -8 l0 623 q0 -8 -1 -8 l-91 0 q-1 0 -1 8 l0 80 q0 8 1 8 l91 0 q1 0 1 -8 q0 8 4 8 l46 0 q4 0 4 -8 l0 -784 q0 -8 -4 -8 l-46 0 q-4 0 -4 8 q0 -7 -1 -7 l-91 0 q-1 0 -1 8 l0 80 q0 8 1 8 l91 0 ZM878 134 q1 0 1 -8 l0 623 q0 -8 -1 -8 l-91 0 q-1 0 -1 8 l0 80 q0 8 1 8 l91 0 q1 0 1 -8 q0 8 5 8 l45 0 q4 0 4 -8 l0 -784 q0 -8 -4 -8 l-45 0 q-5 0 -5 8 q0 -7 -1 -7 l-91 0 q-1 0 -1 8 l0 80 q0 8 1 8 l91 0 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:editor:insert-embed",
"name": "Insert embed ![[]]",
"icon": "note-glyph"
},
{
"id": "editing-toolbar:insert-link",
"name": "Insert link []()",
"icon": "link-glyph"
},
{
"id": "editing-toolbar:hrline",
"name": "Horizontal divider",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M912 424 l0 -80 q0 -3 -2.5 -5.5 q-2.5 -2.5 -5.5 -2.5 l-784 0 q-3 0 -5.5 2.5 q-2.5 2.5 -2.5 5.5 l0 80 q0 3 2.5 5.5 q2.5 2.5 5.5 2.5 l784 0 q3 0 5.5 -2.5 q2.5 -2.5 2.5 -5.5 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:toggle-inline-math",
"name": "Inline math",
"icon": "lucide-sigma"
},
{
"id": "editing-toolbar:editor:insert-mathblock",
"name": "MathBlock",
"icon": "lucide-sigma-square"
}
]
},
{
"id": "SubmenuCommands-list",
"name": "submenu-list",
"icon": "bullet-list-glyph",
"SubmenuCommands": [
{
"id": "editing-toolbar:editor:toggle-checklist-status",
"name": "Checklist",
"icon": "checkbox-glyph"
},
{
"id": "editing-toolbar:renumber-ordered-list",
"name": "Renumber ordered list",
"icon": "list-restart"
},
{
"id": "editing-toolbar:toggle-numbered-list",
"name": "Numbered list",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M860 424 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-457 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l457 0 ZM860 756 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-457 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l457 0 ZM860 92 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-457 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l457 0 ZM264 136 l-3 -3 l-51 -57 l56 0 q14 0 24.5 -10 q10.5 -10 11.5 -25 l0 -1 q0 -15 -10.5 -25.5 q-10.5 -10.5 -24.5 -10.5 l-137 0 q-15 0 -25 10 q-10 10 -11 24.5 q-1 14.5 9 25.5 l63 70 l49 54 q7 7 7 16.5 q0 9.5 -7.5 16.5 q-7.5 7 -18.5 7 q-11 0 -18.5 -6.5 q-7.5 -6.5 -8.5 -16.5 l0 0 q0 -15 -10.5 -25.5 q-10.5 -10.5 -25.5 -10.5 q-15 0 -25.5 10.5 q-10.5 10.5 -10.5 25.5 q0 26 13.5 47.5 q13.5 21.5 36 34.5 q22.5 13 49 13 q26.5 0 49.5 -13 q23 -13 36 -34.5 q13 -21.5 13 -47.5 q0 -20 -7.5 -37.5 q-7.5 -17.5 -21.5 -30.5 l-1 -1 ZM173 794 q11 11 25 10.5 q14 -0.5 24.5 -10.5 q10.5 -10 10.5 -25 l0 -293 q0 -15 -10 -25.5 q-10 -10.5 -25 -10.5 q-15 0 -25.5 10 q-10.5 10 -11.5 25 l0 211 q-10 -8 -23.5 -7 q-13.5 1 -22.5 11 l-1 0 q-10 11 -9.5 25.5 q0.5 14.5 10.5 24.5 l58 54 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:toggle-bullet-list",
"name": "Bullet list",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M860 424 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-477 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l477 0 ZM860 756 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-477 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l477 0 ZM860 92 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-477 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l477 0 ZM176 716 l0 0 ZM112 716 q0 -27 18.5 -45.5 q18.5 -18.5 45.5 -18.5 q27 0 45.5 18.5 q18.5 18.5 18.5 45.5 q0 27 -18.5 45.5 q-18.5 18.5 -45.5 18.5 q-27 0 -45.5 -18.5 q-18.5 -18.5 -18.5 -45.5 ZM176 384 l0 0 ZM112 384 q0 -27 18.5 -45.5 q18.5 -18.5 45.5 -18.5 q27 0 45.5 18.5 q18.5 18.5 18.5 45.5 q0 27 -18.5 45.5 q-18.5 18.5 -45.5 18.5 q-27 0 -45.5 -18.5 q-18.5 -18.5 -18.5 -45.5 ZM176 52 l0 0 ZM112 52 q0 -27 18.5 -45.5 q18.5 -18.5 45.5 -18.5 q27 0 45.5 18.5 q18.5 18.5 18.5 45.5 q0 27 -18.5 45.5 q-18.5 18.5 -45.5 18.5 q-27 0 -45.5 -18.5 q-18.5 -18.5 -18.5 -45.5 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:undent-list",
"name": "Unindent-list",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M872 302 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-429 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l429 0 ZM872 542 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-429 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l429 0 ZM872 784 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM872 62 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM244 534 l-123 -122 q-8 -7 -8 -18 q0 -11 8 -18 l123 -122 q8 -7 19 -7 q11 0 18.5 7.5 q7.5 7.5 7.5 18.5 l0 242 q0 11 -7.5 18.5 q-7.5 7.5 -18.5 7.5 q-11 0 -19 -7 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:indent-list",
"name": "Indent list",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M872 302 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-429 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l429 0 ZM872 542 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-429 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l429 0 ZM872 784 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM872 62 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM158 534 l124 -122 q7 -7 7 -18 q0 -11 -7 -18 l-124 -122 q-7 -7 -18 -7 q-11 0 -19 7.5 q-8 7.5 -8 18.5 l0 242 q0 11 8 18.5 q8 7.5 19 7.5 q11 0 18 -7 Z\"></path></g></svg>"
}
]
},
{
"id": "SubmenuCommands-aligin",
"name": "submenu-aligin",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M724 304 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 540 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM724 776 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 68 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 Z\"></path></g></svg>",
"SubmenuCommands": [
{
"id": "editing-toolbar:justify",
"name": "<p aligin=\"justify\"></p>",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M112 736 l0 0 ZM120 736 l784 0 q8 0 8 -8 l0 -80 q0 -8 -8 -8 l-784 0 q-8 0 -8 8 l0 80 q0 8 8 8 ZM112 331 l0 0 ZM120 331 l784 0 q8 0 8 -8 l0 -80 q0 -8 -8 -8 l-784 0 q-8 0 -8 8 l0 80 q0 8 8 8 ZM112 128 l0 0 ZM120 128 l784 0 q8 0 8 -8 l0 -80 q0 -8 -8 -8 l-784 0 q-8 0 -8 8 l0 80 q0 8 8 8 ZM112 533 l0 0 ZM120 533 l784 0 q8 0 8 -8 l0 -80 q0 -8 -8 -8 l-784 0 q-8 0 -8 8 l0 80 q0 8 8 8 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:left",
"name": "<p aligin=\"left\"></p>",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M572 304 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 540 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM572 776 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 68 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:center",
"name": "<center>",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M724 304 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 540 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM724 776 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 68 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:right",
"name": "<p aligin=\"right\"></p>",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M872 304 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 540 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM872 776 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 68 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 Z\"></path></g></svg>"
}
]
},
{
"id": "editing-toolbar:change-font-color",
"name": "Change font color[html]",
"icon": "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" focusable=\"false\" fill=\"currentColor\"><g fill-rule=\"evenodd\"><path id=\"change-font-color-icon\" d=\"M3 18h18v3H3z\" style=\"fill:#2DC26B\"></path><path d=\"M8.7 16h-.8a.5.5 0 01-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 01-.5.6h-.8a.5.5 0 01-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 00.5.6h1.6a.5.5 0 00.5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z\"></path></g></svg>"
},
{
"id": "editing-toolbar:change-background-color",
"name": "Change Backgroundcolor[html]",
"icon": "<svg width=\"18\" height=\"24\" viewBox=\"0 0 256 256\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"><g stroke=\"none\" stroke-width=\"1\" fill=\"currentColor\" fill-rule=\"evenodd\"><g ><g fill=\"currentColor\"><g transform=\"translate(119.502295, 137.878331) rotate(-135.000000) translate(-119.502295, -137.878331) translate(48.002295, 31.757731)\" ><path d=\"M100.946943,60.8084699 L43.7469427,60.8084699 C37.2852111,60.8084699 32.0469427,66.0467383 32.0469427,72.5084699 L32.0469427,118.70847 C32.0469427,125.170201 37.2852111,130.40847 43.7469427,130.40847 L100.946943,130.40847 C107.408674,130.40847 112.646943,125.170201 112.646943,118.70847 L112.646943,72.5084699 C112.646943,66.0467383 107.408674,60.8084699 100.946943,60.8084699 Z M93.646,79.808 L93.646,111.408 L51.046,111.408 L51.046,79.808 L93.646,79.808 Z\" fill-rule=\"nonzero\"></path><path d=\"M87.9366521,16.90916 L87.9194966,68.2000001 C87.9183543,69.4147389 86.9334998,70.399264 85.7187607,70.4 L56.9423078,70.4 C55.7272813,70.4 54.7423078,69.4150264 54.7423078,68.2 L54.7423078,39.4621057 C54.7423078,37.2523513 55.5736632,35.1234748 57.0711706,33.4985176 L76.4832996,12.4342613 C78.9534987,9.75382857 83.1289108,9.5834005 85.8093436,12.0535996 C87.1658473,13.303709 87.9372691,15.0644715 87.9366521,16.90916 Z\" fill-rule=\"evenodd\"></path><path d=\"M131.3,111.241199 L11.7,111.241199 C5.23826843,111.241199 0,116.479467 0,122.941199 L0,200.541199 C0,207.002931 5.23826843,212.241199 11.7,212.241199 L131.3,212.241199 C137.761732,212.241199 143,207.002931 143,200.541199 L143,122.941199 C143,116.479467 137.761732,111.241199 131.3,111.241199 Z M124,130.241 L124,193.241 L19,193.241 L19,130.241 L124,130.241 Z\" fill-rule=\"nonzero\"></path></g></g><path d=\"M51,218 L205,218 C211.075132,218 216,222.924868 216,229 C216,235.075132 211.075132,240 205,240 L51,240 C44.9248678,240 40,235.075132 40,229 C40,222.924868 44.9248678,218 51,218 Z\" id=\"change-background-color-icon\" style=\"fill:#FA541C\"></path></g></g></svg>"
},
{
"id": "editing-toolbar:fullscreen-focus",
"name": "Fullscreen focus mode",
"icon": "fullscreen"
},
{
"id": "editing-toolbar:workplace-fullscreen-focus",
"name": "Workplace-Fullscreen ",
"icon": "exit-fullscreen"
}
],
"followingCommands": [],
"topCommands": [],
"fixedCommands": [],
"mobileCommands": [],
"enableMultipleConfig": false,
"appendMethod": "workspace",
"shouldShowMenuOnSelect": false,
"cMenuVisibility": true,
"cMenuBottomValue": 4.25,
"cMenuNumRows": 12,
"cMenuWidth": 610,
"cMenuFontColor": "#2DC26B",
"cMenuBackgroundColor": "#d3f8b6",
"autohide": false,
"Iscentered": false,
"custom_bg1": "#FFB78B8C",
"custom_bg2": "#CDF4698C",
"custom_bg3": "#A0CCF68C",
"custom_bg4": "#F0A7D88C",
"custom_bg5": "#ADEFEF8C",
"custom_fc1": "#D83931",
"custom_fc2": "#DE7802",
"custom_fc3": "#245BDB",
"custom_fc4": "#6425D0",
"custom_fc5": "#646A73",
"isLoadOnMobile": false,
"horizontalPosition": 0,
"verticalPosition": 0,
"formatBrushes": {},
"customCommands": [],
"viewTypeSettings": {},
"toolbarBackgroundColor": "rgba(var(--background-secondary-rgb), 0.7)",
"toolbarIconColor": "var(--text-normal)",
"toolbarIconSize": 18
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
{
"id": "editing-toolbar",
"name": "Editing Toolbar",
"version": "3.1.16",
"minAppVersion": "0.14.0",
"description": "The Obsidian Editing Toolbar is modified from cmenu, which provides more powerful customization settings and has many built-in editing commands to be a MS Word-like toolbar editing experience.",
"author": "Cuman",
"authorUrl": "https://github.com/cumany/obsidian-editing-toolbar",
"isDesktopOnly": false
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,973 @@
'use strict';
var obsidian = require('obsidian');
/******************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
var e = new Error(message);
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
};
// 'path' module extracted from Node.js v8.11.1 (only the posix part)
function assertPath(path) {
if (typeof path !== 'string') {
throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));
}
}
// Resolves . and .. elements in a path with directory names
function normalizeStringPosix(path, allowAboveRoot) {
var res = '';
var lastSegmentLength = 0;
var lastSlash = -1;
var dots = 0;
var code;
for (var i = 0; i <= path.length; ++i) {
if (i < path.length)
code = path.charCodeAt(i);
else if (code === 47 /*/*/)
break;
else
code = 47 /*/*/;
if (code === 47 /*/*/) {
if (lastSlash === i - 1 || dots === 1) ; else if (lastSlash !== i - 1 && dots === 2) {
if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {
if (res.length > 2) {
var lastSlashIndex = res.lastIndexOf('/');
if (lastSlashIndex !== res.length - 1) {
if (lastSlashIndex === -1) {
res = '';
lastSegmentLength = 0;
} else {
res = res.slice(0, lastSlashIndex);
lastSegmentLength = res.length - 1 - res.lastIndexOf('/');
}
lastSlash = i;
dots = 0;
continue;
}
} else if (res.length === 2 || res.length === 1) {
res = '';
lastSegmentLength = 0;
lastSlash = i;
dots = 0;
continue;
}
}
if (allowAboveRoot) {
if (res.length > 0)
res += '/..';
else
res = '..';
lastSegmentLength = 2;
}
} else {
if (res.length > 0)
res += '/' + path.slice(lastSlash + 1, i);
else
res = path.slice(lastSlash + 1, i);
lastSegmentLength = i - lastSlash - 1;
}
lastSlash = i;
dots = 0;
} else if (code === 46 /*.*/ && dots !== -1) {
++dots;
} else {
dots = -1;
}
}
return res;
}
function _format(sep, pathObject) {
var dir = pathObject.dir || pathObject.root;
var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');
if (!dir) {
return base;
}
if (dir === pathObject.root) {
return dir + base;
}
return dir + sep + base;
}
var posix = {
// path.resolve([from ...], to)
resolve: function resolve() {
var resolvedPath = '';
var resolvedAbsolute = false;
var cwd;
for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
var path;
if (i >= 0)
path = arguments[i];
else {
if (cwd === undefined)
cwd = process.cwd();
path = cwd;
}
assertPath(path);
// Skip empty entries
if (path.length === 0) {
continue;
}
resolvedPath = path + '/' + resolvedPath;
resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;
}
// At this point the path should be resolved to a full absolute path, but
// handle relative paths to be safe (might happen when process.cwd() fails)
// Normalize the path
resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);
if (resolvedAbsolute) {
if (resolvedPath.length > 0)
return '/' + resolvedPath;
else
return '/';
} else if (resolvedPath.length > 0) {
return resolvedPath;
} else {
return '.';
}
},
normalize: function normalize(path) {
assertPath(path);
if (path.length === 0) return '.';
var isAbsolute = path.charCodeAt(0) === 47 /*/*/;
var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;
// Normalize the path
path = normalizeStringPosix(path, !isAbsolute);
if (path.length === 0 && !isAbsolute) path = '.';
if (path.length > 0 && trailingSeparator) path += '/';
if (isAbsolute) return '/' + path;
return path;
},
isAbsolute: function isAbsolute(path) {
assertPath(path);
return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;
},
join: function join() {
if (arguments.length === 0)
return '.';
var joined;
for (var i = 0; i < arguments.length; ++i) {
var arg = arguments[i];
assertPath(arg);
if (arg.length > 0) {
if (joined === undefined)
joined = arg;
else
joined += '/' + arg;
}
}
if (joined === undefined)
return '.';
return posix.normalize(joined);
},
relative: function relative(from, to) {
assertPath(from);
assertPath(to);
if (from === to) return '';
from = posix.resolve(from);
to = posix.resolve(to);
if (from === to) return '';
// Trim any leading backslashes
var fromStart = 1;
for (; fromStart < from.length; ++fromStart) {
if (from.charCodeAt(fromStart) !== 47 /*/*/)
break;
}
var fromEnd = from.length;
var fromLen = fromEnd - fromStart;
// Trim any leading backslashes
var toStart = 1;
for (; toStart < to.length; ++toStart) {
if (to.charCodeAt(toStart) !== 47 /*/*/)
break;
}
var toEnd = to.length;
var toLen = toEnd - toStart;
// Compare paths to find the longest common path from root
var length = fromLen < toLen ? fromLen : toLen;
var lastCommonSep = -1;
var i = 0;
for (; i <= length; ++i) {
if (i === length) {
if (toLen > length) {
if (to.charCodeAt(toStart + i) === 47 /*/*/) {
// We get here if `from` is the exact base path for `to`.
// For example: from='/foo/bar'; to='/foo/bar/baz'
return to.slice(toStart + i + 1);
} else if (i === 0) {
// We get here if `from` is the root
// For example: from='/'; to='/foo'
return to.slice(toStart + i);
}
} else if (fromLen > length) {
if (from.charCodeAt(fromStart + i) === 47 /*/*/) {
// We get here if `to` is the exact base path for `from`.
// For example: from='/foo/bar/baz'; to='/foo/bar'
lastCommonSep = i;
} else if (i === 0) {
// We get here if `to` is the root.
// For example: from='/foo'; to='/'
lastCommonSep = 0;
}
}
break;
}
var fromCode = from.charCodeAt(fromStart + i);
var toCode = to.charCodeAt(toStart + i);
if (fromCode !== toCode)
break;
else if (fromCode === 47 /*/*/)
lastCommonSep = i;
}
var out = '';
// Generate the relative path based on the path difference between `to`
// and `from`
for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {
if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {
if (out.length === 0)
out += '..';
else
out += '/..';
}
}
// Lastly, append the rest of the destination (`to`) path that comes after
// the common path parts
if (out.length > 0)
return out + to.slice(toStart + lastCommonSep);
else {
toStart += lastCommonSep;
if (to.charCodeAt(toStart) === 47 /*/*/)
++toStart;
return to.slice(toStart);
}
},
_makeLong: function _makeLong(path) {
return path;
},
dirname: function dirname(path) {
assertPath(path);
if (path.length === 0) return '.';
var code = path.charCodeAt(0);
var hasRoot = code === 47 /*/*/;
var end = -1;
var matchedSlash = true;
for (var i = path.length - 1; i >= 1; --i) {
code = path.charCodeAt(i);
if (code === 47 /*/*/) {
if (!matchedSlash) {
end = i;
break;
}
} else {
// We saw the first non-path separator
matchedSlash = false;
}
}
if (end === -1) return hasRoot ? '/' : '.';
if (hasRoot && end === 1) return '//';
return path.slice(0, end);
},
basename: function basename(path, ext) {
if (ext !== undefined && typeof ext !== 'string') throw new TypeError('"ext" argument must be a string');
assertPath(path);
var start = 0;
var end = -1;
var matchedSlash = true;
var i;
if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {
if (ext.length === path.length && ext === path) return '';
var extIdx = ext.length - 1;
var firstNonSlashEnd = -1;
for (i = path.length - 1; i >= 0; --i) {
var code = path.charCodeAt(i);
if (code === 47 /*/*/) {
// If we reached a path separator that was not part of a set of path
// separators at the end of the string, stop now
if (!matchedSlash) {
start = i + 1;
break;
}
} else {
if (firstNonSlashEnd === -1) {
// We saw the first non-path separator, remember this index in case
// we need it if the extension ends up not matching
matchedSlash = false;
firstNonSlashEnd = i + 1;
}
if (extIdx >= 0) {
// Try to match the explicit extension
if (code === ext.charCodeAt(extIdx)) {
if (--extIdx === -1) {
// We matched the extension, so mark this as the end of our path
// component
end = i;
}
} else {
// Extension does not match, so our result is the entire path
// component
extIdx = -1;
end = firstNonSlashEnd;
}
}
}
}
if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;
return path.slice(start, end);
} else {
for (i = path.length - 1; i >= 0; --i) {
if (path.charCodeAt(i) === 47 /*/*/) {
// If we reached a path separator that was not part of a set of path
// separators at the end of the string, stop now
if (!matchedSlash) {
start = i + 1;
break;
}
} else if (end === -1) {
// We saw the first non-path separator, mark this as the end of our
// path component
matchedSlash = false;
end = i + 1;
}
}
if (end === -1) return '';
return path.slice(start, end);
}
},
extname: function extname(path) {
assertPath(path);
var startDot = -1;
var startPart = 0;
var end = -1;
var matchedSlash = true;
// Track the state of characters (if any) we see before our first dot and
// after any path separator we find
var preDotState = 0;
for (var i = path.length - 1; i >= 0; --i) {
var code = path.charCodeAt(i);
if (code === 47 /*/*/) {
// If we reached a path separator that was not part of a set of path
// separators at the end of the string, stop now
if (!matchedSlash) {
startPart = i + 1;
break;
}
continue;
}
if (end === -1) {
// We saw the first non-path separator, mark this as the end of our
// extension
matchedSlash = false;
end = i + 1;
}
if (code === 46 /*.*/) {
// If this is our first dot, mark it as the start of our extension
if (startDot === -1)
startDot = i;
else if (preDotState !== 1)
preDotState = 1;
} else if (startDot !== -1) {
// We saw a non-dot and non-path separator before our dot, so we should
// have a good chance at having a non-empty extension
preDotState = -1;
}
}
if (startDot === -1 || end === -1 ||
// We saw a non-dot character immediately before the dot
preDotState === 0 ||
// The (right-most) trimmed path component is exactly '..'
preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
return '';
}
return path.slice(startDot, end);
},
format: function format(pathObject) {
if (pathObject === null || typeof pathObject !== 'object') {
throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject);
}
return _format('/', pathObject);
},
parse: function parse(path) {
assertPath(path);
var ret = { root: '', dir: '', base: '', ext: '', name: '' };
if (path.length === 0) return ret;
var code = path.charCodeAt(0);
var isAbsolute = code === 47 /*/*/;
var start;
if (isAbsolute) {
ret.root = '/';
start = 1;
} else {
start = 0;
}
var startDot = -1;
var startPart = 0;
var end = -1;
var matchedSlash = true;
var i = path.length - 1;
// Track the state of characters (if any) we see before our first dot and
// after any path separator we find
var preDotState = 0;
// Get non-dir info
for (; i >= start; --i) {
code = path.charCodeAt(i);
if (code === 47 /*/*/) {
// If we reached a path separator that was not part of a set of path
// separators at the end of the string, stop now
if (!matchedSlash) {
startPart = i + 1;
break;
}
continue;
}
if (end === -1) {
// We saw the first non-path separator, mark this as the end of our
// extension
matchedSlash = false;
end = i + 1;
}
if (code === 46 /*.*/) {
// If this is our first dot, mark it as the start of our extension
if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;
} else if (startDot !== -1) {
// We saw a non-dot and non-path separator before our dot, so we should
// have a good chance at having a non-empty extension
preDotState = -1;
}
}
if (startDot === -1 || end === -1 ||
// We saw a non-dot character immediately before the dot
preDotState === 0 ||
// The (right-most) trimmed path component is exactly '..'
preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
if (end !== -1) {
if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);
}
} else {
if (startPart === 0 && isAbsolute) {
ret.name = path.slice(1, startDot);
ret.base = path.slice(1, end);
} else {
ret.name = path.slice(startPart, startDot);
ret.base = path.slice(startPart, end);
}
ret.ext = path.slice(startDot, end);
}
if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';
return ret;
},
sep: '/',
delimiter: ':',
win32: null,
posix: null
};
posix.posix = posix;
var pathBrowserify = posix;
const withSubfolderClass = 'oz-with-subfolder';
const showAllNumbersClass = 'oz-show-all-num';
const isFolder = (item) => item.file instanceof obsidian.TFolder;
const iterateItems = (items, callback) => {
for (const key in items) {
if (!Object.prototype.hasOwnProperty.call(items, key))
continue;
callback(items[key]);
}
};
const getParentPath = (src) => {
if (src === '/')
return null;
const path = pathBrowserify.dirname(src);
if (path === '.')
return '/';
else
return path;
};
const equals = (arr1, arr2) => {
// if the other array is a falsy value, return
if (!Array.isArray(arr1) || !Array.isArray(arr2))
return false;
// compare lengths - can save a lot of time
if (arr1.length != arr2.length)
return false;
return arr1.every((v, i) => v === arr2[i]);
};
const isParent = (parent, child) => {
if (child === parent)
return false;
if (parent === '/')
parent = '';
if (child === '/')
child = '';
const parentTokens = parent.split('/').filter((i) => i.length);
return parentTokens.every((t, i) => child.split('/')[i] === t);
};
// Helper to play with the File Explorer (if exists)
const doWithFileExplorer = (plugin, callback) => {
let leaves;
let count = 0;
const tryGetView = () => {
leaves = plugin.app.workspace.getLeavesOfType('file-explorer');
if (leaves.length === 0) {
if (count++ > 5)
console.error('failed to get file-explorer');
else {
console.log('file-explorer not found, retrying...');
setTimeout(tryGetView, 500);
}
}
else {
if (leaves.length > 1)
console.warn('more then one file-explorer');
callback(leaves[0].view);
}
};
tryGetView();
};
function around(obj, factories) {
const removers = Object.keys(factories).map(key => around1(obj, key, factories[key]));
return removers.length === 1 ? removers[0] : function () { removers.forEach(r => r()); };
}
function around1(obj, method, createWrapper) {
const original = obj[method], hadOwn = obj.hasOwnProperty(method);
let current = createWrapper(original);
// Let our wrapper inherit static props from the wrapping method,
// and the wrapping method, props from the original method
if (original)
Object.setPrototypeOf(current, original);
Object.setPrototypeOf(wrapper, current);
obj[method] = wrapper;
// Return a callback to allow safe removal
return remove;
function wrapper(...args) {
// If we have been deactivated and are no longer wrapped, remove ourselves
if (current === original && obj[method] === wrapper)
remove();
return current.apply(this, args);
}
function remove() {
// If no other patches, just do a direct removal
if (obj[method] === wrapper) {
if (hadOwn)
obj[method] = original;
else
delete obj[method];
}
if (current === original)
return;
// Else pass future calls through, and remove wrapper from the prototype chain
current = original;
Object.setPrototypeOf(wrapper, original || Function);
}
}
const countFolderChildren = (folder, filter) => {
let count = 0;
for (const af of folder.children) {
if (filter(af))
count++;
if (af instanceof obsidian.TFolder)
count += countFolderChildren(af, filter);
}
return count;
};
/** filter out all path that is the parent of existing path */
const filterParent = (pathList) => {
const list = Array.from(pathList);
list.sort();
for (let i = 0; i < list.length; i++) {
if (i < list.length - 1 && (list[i] === list[i + 1] || isParent(list[i], list[i + 1]))) {
list.shift();
i--;
}
}
return new Set(list);
};
/** get all parents and add to set if not exist */
const getAllParents = (path, set) => {
let parent = getParentPath(path);
while (parent && !set.has(parent)) {
set.add(parent);
parent = getParentPath(parent);
}
};
/**
* Update folder count of target's parent
*/
const updateCount = (targetList, plugin) => {
const set = filterParent(targetList);
for (const path of targetList) {
getAllParents(path, set);
}
// set count of path
const { fileExplorer, fileFilter } = plugin;
if (!fileExplorer) {
console.error('fileExplorer missing');
return;
}
for (const path of set) {
// check if path available
if (!fileExplorer.fileItems[path])
continue;
setCount(fileExplorer.fileItems[path], fileFilter);
}
// Update root separately
if (plugin.rootFolderEl && plugin.settings.addRootFolder) {
setupRootCount(plugin);
}
// empty waitingList
targetList.length = 0;
};
const setupRootCount = (plugin) => {
if (plugin.rootFolderEl) {
let rootFolderElChildren = plugin.rootFolderEl.children;
if (rootFolderElChildren && rootFolderElChildren.length > 0) {
let totalCount = countFolderChildren(plugin.app.vault.getAbstractFileByPath('/'), plugin.fileFilter);
rootFolderElChildren[0].setAttr('data-count', totalCount.toString());
}
}
};
const setupCount = (plugin, revert = false) => {
if (!plugin.fileExplorer)
throw new Error('fileExplorer not found');
// For each setup, first setup the root folder
plugin.setupRootFolder();
setupRootCount(plugin);
// Iterate other items and include new counts
iterateItems(plugin.fileExplorer.fileItems, (item) => {
if (!isFolder(item))
return;
if (revert)
removeCount(item);
else
setCount(item, plugin.fileFilter);
});
};
const setCount = (item, filter) => {
// if (item.file.isRoot()) return;
const count = countFolderChildren(item.file, filter);
item.selfEl.dataset['count'] = count.toString();
item.selfEl.toggleClass(withSubfolderClass, Array.isArray(item.file.children) && item.file.children.some((af) => af instanceof obsidian.TFolder));
};
const removeCount = (item) => {
if (item.selfEl.dataset['count'])
delete item.selfEl.dataset['count'];
item.selfEl.removeClass(withSubfolderClass);
};
class VaultHandler {
get app() {
return this.plugin.app;
}
get vault() {
return this.plugin.app.vault;
}
constructor(plugin) {
this.waitingList = [];
this.update = obsidian.debounce(() => updateCount(this.waitingList, this.plugin), 500, true);
this.handler = (...args) => {
var _a;
for (const arg of args) {
const path = arg instanceof obsidian.TAbstractFile ? arg.path : arg;
this.waitingList.push((_a = getParentPath(path)) !== null && _a !== void 0 ? _a : '/');
}
this.update();
};
this.registerVaultEvent = () => {
this.plugin.registerEvent(this.vault.on('create', this.handler));
this.plugin.registerEvent(this.vault.on('rename', this.handler));
this.plugin.registerEvent(this.vault.on('delete', this.handler));
};
this.plugin = plugin;
}
}
const DEFAULT_SETTINGS = {
showAllNumbers: false,
filterList: ['md'],
blacklist: false,
addRootFolder: false,
};
class FENoteCountSettingTab extends obsidian.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
get showOnlyNoteValue() {
const { settings } = this.plugin;
return settings.blacklist === DEFAULT_SETTINGS.blacklist && equals(settings.filterList, DEFAULT_SETTINGS.filterList);
}
set showOnlyNoteValue(value) {
const { blacklist, filterList } = DEFAULT_SETTINGS;
this.plugin.settings.blacklist = blacklist;
if (value) {
// do deep copy
this.plugin.settings.filterList = Array.from(filterList);
}
else {
this.plugin.settings.filterList.length = 0;
}
}
display() {
let { containerEl } = this;
containerEl.empty();
containerEl.createEl('h2', {
text: 'File Explorer Note Count Settings',
});
new obsidian.Setting(containerEl)
.setName('Show All Numbers')
.setDesc('Turn on this option if you want to see the number of notes even after you expand the collapsed folders')
.addToggle((toggle) => toggle.setValue(this.plugin.settings.showAllNumbers).onChange((value) => {
document.body.toggleClass('oz-show-all-num', value);
this.plugin.settings.showAllNumbers = value;
this.plugin.saveSettings();
}));
new obsidian.Setting(containerEl)
.setName('Add Root Folder')
.setDesc('By default, there is no root folder provided by Obsidian. It is moved to drop-down menu to switch between vaults. ' +
'Enable this option if you want to see root folder and its count in the file explorer')
.addToggle((toggle) => toggle.setValue(this.plugin.settings.addRootFolder).onChange((value) => {
this.plugin.settings.addRootFolder = value;
this.plugin.saveSettings();
this.plugin.reloadCount();
}));
this.filterOpt();
}
filterOpt() {
new obsidian.Setting(this.containerEl)
.setName('Show Only Markdown Notes')
.setDesc('Turn off this option to choose file that should be counted')
.addToggle((toggle) => toggle.setValue(this.showOnlyNoteValue).onChange((value) => {
this.showOnlyNoteValue = value;
this.plugin.reloadCount();
this.plugin.saveSettings();
this.display();
}));
if (!this.showOnlyNoteValue) {
new obsidian.Setting(this.containerEl)
.setName('Filter List')
.setDesc(createFragment((descEl) => {
descEl.appendText('Extension list to include/exclude file during counting');
descEl.appendChild(document.createElement('br'));
descEl.appendText('Separated by comma');
}))
.addTextArea((text) => {
const onChange = (value) => __awaiter(this, void 0, void 0, function* () {
const list = value.split(',').map((v) => v.trim());
this.plugin.settings.filterList = list;
this.plugin.reloadCount();
yield this.plugin.saveSettings();
});
text.setPlaceholder('Leave it empty to count all types of files');
text.setValue(this.plugin.settings.filterList.join(', ')).onChange(obsidian.debounce(onChange, 500, true));
text.inputEl.rows = 2;
text.inputEl.cols = 25;
});
new obsidian.Setting(this.containerEl)
.setName('Enable Blacklist')
.setDesc('Turn on this option to use Filter List to exclude files')
.addToggle((toggle) => toggle.setValue(this.plugin.settings.blacklist).onChange((value) => {
this.plugin.settings.blacklist = value;
this.plugin.reloadCount();
this.plugin.saveSettings();
}));
}
}
}
class FileExplorerNoteCount extends obsidian.Plugin {
constructor() {
super(...arguments);
this.settings = DEFAULT_SETTINGS;
this.vaultHandler = new VaultHandler(this);
this.rootFolderEl = null;
this.explorerNavHeaderSelector = '.workspace-leaf-content[data-type="file-explorer"] .nav-header';
this.rootFolderClassName = 'oz-explorer-root-folder';
this.initialize = (revert = false) => {
let plugin = this;
// First Check if the root folder exists
let explorerHeaderEl = document.querySelector(`${this.explorerNavHeaderSelector} .${this.rootFolderClassName}`);
if (explorerHeaderEl)
this.rootFolderEl = explorerHeaderEl;
const getViewHandler = (revert) => (view) => {
this.fileExplorer = view;
setupCount(this, revert);
this.setupRootFolder(revert);
if (!revert) {
this.registerEvent(this.app.workspace.on('css-change', this.setupRootFolder));
this.vaultHandler.registerVaultEvent();
if (this.settings.showAllNumbers)
document.body.addClass('oz-show-all-num');
}
else {
for (const el of document.getElementsByClassName(withSubfolderClass)) {
el.removeClass(withSubfolderClass);
}
document.body.removeClass(showAllNumbersClass);
}
if (!revert) {
// when file explorer is closed (workspace changed)
// try to update fehanlder with new file explorer instance
this.register(around(view, {
onClose: (next) => function () {
setTimeout(() => doWithFileExplorer(plugin, getViewHandler(false)), 1e3);
return next.apply(this);
},
}));
}
};
doWithFileExplorer(plugin, getViewHandler(revert));
};
this.setupRootFolder = (revert = false) => {
var _a, _b, _c;
if (!this.fileExplorer) {
console.error('file-explorer not found');
return;
}
if (this.rootFolderEl && !this.settings.addRootFolder) {
this.rootFolderEl.remove();
this.rootFolderEl = null;
}
// Check if root is provided by Obsidian (it shouldn't be in the new releases)
const root = (_c = (_b = (_a = this.fileExplorer) === null || _a === void 0 ? void 0 : _a.fileItems) === null || _b === void 0 ? void 0 : _b['/']) !== null && _c !== void 0 ? _c : null;
if (!root) {
// Get the Nav Header
let explorerHeaderEl = document.querySelector(this.explorerNavHeaderSelector);
if (!explorerHeaderEl)
return;
if (!this.rootFolderEl && this.settings.addRootFolder) {
this.rootFolderEl = explorerHeaderEl.createEl('div', {
cls: ['tree-item', 'nav-folder', this.rootFolderClassName],
});
let rootTitle = this.rootFolderEl.createEl('div', {
cls: ['oz-explorer-root-nav-folder-title'],
attr: { 'data-path': '/' },
});
let titleContent = rootTitle.createEl('div', {
cls: ['tree-item-inner', 'nav-folder-title-content'],
});
titleContent.textContent = this.app.vault.getName();
}
}
};
}
onload() {
return __awaiter(this, void 0, void 0, function* () {
console.log('loading FileExplorerNoteCount');
this.addSettingTab(new FENoteCountSettingTab(this.app, this));
yield this.loadSettings();
this.app.workspace.onLayoutReady(this.initialize);
});
}
onunload() {
console.log('unloading FileExplorerNoteCount');
this.initialize(true);
}
loadSettings() {
return __awaiter(this, void 0, void 0, function* () {
this.settings = Object.assign(Object.assign({}, this.settings), (yield this.loadData()));
});
}
saveSettings() {
return __awaiter(this, void 0, void 0, function* () {
yield this.saveData(this.settings);
});
}
reloadCount() {
setupCount(this);
}
get fileFilter() {
let list = this.settings.filterList;
return (af) => {
if (af instanceof obsidian.TFile) {
const { extension: target } = af;
// if list is empty, filter nothing
if (list.length === 0)
return true;
else if (this.settings.blacklist)
return !list.includes(target);
else
return list.includes(target);
}
else
return false;
};
}
}
module.exports = FileExplorerNoteCount;
/* nosourcemap */
@@ -0,0 +1,10 @@
{
"id": "file-explorer-note-count",
"name": "File Explorer Note Count",
"version": "1.2.4",
"minAppVersion": "1.2.0",
"description": "The plugin helps you to see the number of notes under each folder within the file explorer.",
"author": "Ozan Tellioglu",
"authorUrl": "https://www.ozan.pl",
"isDesktopOnly": false
}
@@ -0,0 +1,34 @@
.nav-folder-title[data-count]::after {
content: attr(data-count);
display: inline-block;
position: relative;
font-size: calc(100% * 0.8);
margin-right: 4px;
/* border-radius: 3px; */
padding: 2px 0;
/* background-color: var(--background-secondary-alt); */
transition: opacity 100ms ease-in-out;
}
.oz-explorer-root-nav-folder-title {
display: flex;
}
.oz-explorer-root-nav-folder-title[data-count]::after {
content: attr(data-count);
margin-right: 4px;
font-size: calc(100% * 0.8);
display: inline-block;
}
body:not(.oz-show-all-num) .nav-folder:not(.is-collapsed) > .nav-folder-title.oz-with-subfolder[data-count]:not([data-path='/'])::after {
opacity: 0;
}
.nav-folder-title-content {
flex-grow: 1;
}
.oz-explorer-root-folder {
margin-top: 15px;
}
@@ -0,0 +1,61 @@
{
"hideStrictPathFilters": true,
"pinFilters": {
"active": true,
"tags": [
{
"name": "",
"active": true,
"pattern": "",
"patternType": "STRICT"
}
],
"paths": [
{
"name": "",
"active": true,
"type": "FILES_AND_DIRECTORIES",
"pattern": "",
"patternType": "WILDCARD"
}
],
"frontMatter": [
{
"name": "",
"active": true,
"path": "",
"pattern": "",
"patternType": "STRICT"
}
]
},
"hideFilters": {
"active": true,
"tags": [
{
"name": "",
"active": true,
"pattern": "",
"patternType": "STRICT"
}
],
"paths": [
{
"name": "",
"active": true,
"type": "FILES_AND_DIRECTORIES",
"pattern": "",
"patternType": "WILDCARD"
}
],
"frontMatter": [
{
"name": "",
"active": true,
"path": "",
"pattern": "",
"patternType": "STRICT"
}
]
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,10 @@
{
"id": "file-explorer-plus",
"name": "File Explorer++",
"version": "1.3.1",
"minAppVersion": "1.6.3",
"description": "Hide and pin files and folders in the file explorer using custom filters, such as wildcards and regex, based on their names, paths, and tags. Additionally, achieve the same with a single click in the file menu.",
"author": "kelszo",
"authorUrl": "https://github.com/kelszo",
"isDesktopOnly": false
}
@@ -0,0 +1,31 @@
.file-explorer-plus.pin-icon {
color: hsl(var(--accent-h), var(--accent-s), var(--accent-l));
margin-right: 0.2em;
width: 16px;
height: 16px;
margin-top: -4px;
align-self: center;
scale: 0.75;
rotate: 45deg;
opacity: 0.7;
}
.file-explorer-plus.filters-activated-modal {
display: grid;
place-items: center;
}
.file-explorer-plus table {
border-collapse: collapse;
}
.file-explorer-plus th {
text-align: center;
padding-left: 5px;
padding-right: 5px;
border-bottom: 2px solid var(--text-normal);
}
.file-explorer-plus td {
padding: 3px;
}
.file-explorer-plus h2.settings-header {
font-size: calc(var(--font-ui-medium) * 1.3);
font-weight: var(--font-bold);
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,9 @@
{
"id": "local-rest-api-second-brain-mcp-extension",
"name": "Local REST API Second Brain MCP Extension",
"version": "1.0.9",
"minAppVersion": "1.4.0",
"description": "Extension for Local REST API plugin to add second brain MCP server.",
"author": "Mehran Ziadloo",
"isDesktopOnly": true
}
@@ -0,0 +1,8 @@
/*
This CSS file will be included with your plugin, and
available in the app when your plugin is enabled.
If your plugin does not need CSS, delete this file.
*/
@@ -0,0 +1,174 @@
{
"mcpTransport": {
"bearerToken": "Jw2Zr-cuvoS8yGaj-zGMpPzjAgK3tN3AfOFr6Tzbq-c"
},
"semanticSearch": {
"provider": "auto",
"indexingMode": "live",
"unloadModelWhenIdle": false
},
"commandPermissions": {
"enabled": true,
"allowlist": [
"editor:toggle-bold",
"editor:toggle-strikethrough",
"editor:toggle-highlight",
"editor:toggle-code",
"editor:toggle-inline-math",
"editor:toggle-blockquote",
"editor:toggle-bullet-list",
"editor:toggle-numbered-list",
"editor:toggle-checklist-status",
"editor:toggle-comments",
"editor:insert-link",
"editor:insert-wikilink",
"editor:insert-embed",
"editor:insert-horizontal-rule",
"editor:insert-callout",
"editor:insert-tag",
"app:go-back",
"app:go-forward",
"editor:focus-top",
"editor:focus-bottom",
"editor:focus-left",
"editor:focus-right",
"workspace:split-vertical",
"workspace:split-horizontal",
"workspace:close",
"workspace:next-tab",
"workspace:previous-tab",
"graph:open",
"graph:open-local",
"global-search:open",
"switcher:open",
"file-explorer:reveal-active-file",
"recent-files-obsidian:recent-files-open",
"tag-pane:open",
"outline:open",
"outline:open-for-current",
"daily-notes",
"insert-current-date",
"insert-current-time",
"insert-template",
"open-with-default-app:open",
"open-with-default-app:show",
"omnisearch:show-modal",
"omnisearch:show-modal-infile",
"obsidian-paste-image-rename:batch-rename-all-images",
"obsidian-paste-image-rename:batch-rename-embeded-files",
"obsidian-importer:open-modal",
"note-composer:merge-file",
"note-composer:split-file",
"note-composer:extract-heading",
"markdown:toggle-preview",
"markdown:clear-metadata-properties",
"markdown:add-metadata-property",
"markdown:add-alias",
"graph:animate",
"file-recovery:open",
"file-explorer:open",
"file-explorer:new-folder",
"file-explorer:new-file-in-new-pane",
"file-explorer:new-file-in-current-tab",
"file-explorer:new-file",
"file-explorer:move-file",
"file-explorer:duplicate-file",
"editor:add-cursor-above",
"editor:add-cursor-below",
"editor:attach-file",
"editor:clear-formatting",
"editor:context-menu",
"editor:cycle-list-checklist",
"editor:delete-paragraph",
"editor:download-attachments",
"editor:focus",
"editor:fold-all",
"editor:fold-less",
"editor:fold-more",
"editor:follow-link",
"editor:indent-list",
"editor:insert-codeblock",
"editor:insert-footnote",
"editor:insert-mathblock",
"editor:insert-table",
"editor:open-link-in-new-split",
"editor:open-link-in-new-leaf",
"editor:set-heading-1",
"editor:set-heading-0",
"editor:set-heading",
"editor:save-file",
"editor:rename-heading",
"editor:open-search-replace",
"editor:open-search",
"editor:open-link-in-new-window",
"editor:table-col-align-center",
"editor:table-col-after",
"editor:swap-line-up",
"editor:swap-line-down",
"editor:set-heading-6",
"editor:set-heading-5",
"editor:set-heading-4",
"editor:set-heading-3",
"editor:set-heading-2",
"editor:table-col-align-left",
"editor:table-col-align-right",
"editor:table-col-before",
"editor:table-col-copy",
"editor:table-col-delete",
"editor:table-col-left",
"editor:table-col-right",
"editor:table-row-after",
"editor:table-row-down",
"editor:table-row-delete",
"editor:table-row-copy",
"editor:table-row-before",
"editor:table-row-up",
"editor:toggle-fold-properties",
"editor:toggle-fold",
"editor:toggle-line-numbers",
"editor:toggle-italics",
"editor:toggle-spellcheck",
"editor:toggle-source",
"editor:toggle-readable-line-length",
"editor:unfold-all",
"editor:unindent-list",
"daily-notes:goto-prev",
"daily-notes:goto-next",
"command-palette:open",
"canvas:new-file",
"canvas:jump-to-group",
"canvas:export-as-image",
"canvas:convert-to-file",
"bookmarks:unbookmark-current-view",
"bookmarks:open",
"bookmarks:bookmark-current-view",
"bookmarks:bookmark-current-section",
"bookmarks:bookmark-current-search",
"bookmarks:bookmark-current-heading",
"bookmarks:bookmark-all-tabs",
"bases:new-file",
"bases:insert",
"bases:copy-table",
"bases:change-view",
"bases:add-view",
"bases:add-item",
"backlink:open",
"backlink:open-backlinks",
"backlink:toggle-backlinks-in-document",
"app:open-another-vault",
"app:open-help",
"app:open-sandbox-vault",
"app:open-settings",
"app:open-vault",
"app:reload",
"app:toggle-ribbon",
"app:toggle-left-sidebar",
"app:toggle-default-new-pane-mode",
"app:switch-vault",
"app:show-release-notes",
"app:show-debug-info",
"app:toggle-right-sidebar",
"app:delete-file"
]
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
{
"id": "mcp-tools-istefox",
"name": "MCP Connector",
"version": "0.22.0",
"minAppVersion": "1.7.2",
"description": "Connect MCP-compatible clients (Claude Desktop, Claude Code, Cline) to your vault with semantic search, templates, file management and gated command execution.",
"author": "Stefano Ferri",
"authorUrl": "https://github.com/istefox",
"isDesktopOnly": true
}
@@ -0,0 +1,554 @@
{
"vaultProfiles": [
{
"id": "default",
"name": "Default",
"fileVisibility": "supported",
"propertyKeys": [],
"hiddenFolders": [],
"hiddenTags": [],
"hiddenFileNames": [],
"hiddenFileTags": [],
"hiddenFileProperties": [],
"navigationBanner": null,
"periodicNotesFolder": "",
"shortcuts": [],
"navRainbow": {
"mode": "foreground",
"balanceHueLuminance": true,
"separateThemeColors": false,
"shortcuts": {
"enabled": true,
"firstColor": "#ef4444",
"lastColor": "#8b5cf6",
"darkFirstColor": "#ef4444",
"darkLastColor": "#8b5cf6",
"transitionStyle": "rgb"
},
"recent": {
"enabled": true,
"firstColor": "#ef4444",
"lastColor": "#8b5cf6",
"darkFirstColor": "#ef4444",
"darkLastColor": "#8b5cf6",
"transitionStyle": "rgb"
},
"folders": {
"enabled": true,
"firstColor": "#ef4444",
"lastColor": "#8b5cf6",
"darkFirstColor": "#fb7185",
"darkLastColor": "#c084fc",
"transitionStyle": "hue",
"scope": "root"
},
"tags": {
"enabled": true,
"firstColor": "#ef4444",
"lastColor": "#8b5cf6",
"darkFirstColor": "#fb7185",
"darkLastColor": "#c084fc",
"transitionStyle": "hue",
"scope": "root"
},
"properties": {
"enabled": true,
"firstColor": "#ef4444",
"lastColor": "#8b5cf6",
"darkFirstColor": "#fb7185",
"darkLastColor": "#c084fc",
"transitionStyle": "hue",
"scope": "root"
}
}
}
],
"vaultProfile": "default",
"vaultTitle": "navigation",
"syncModes": {
"vaultProfile": "synced",
"homepage": "synced",
"folderSortOrder": "synced",
"tagSortOrder": "synced",
"propertySortOrder": "synced",
"includeDescendantNotes": "synced",
"useFloatingToolbars": "synced",
"dualPane": "synced",
"dualPaneOrientation": "synced",
"narrowSidebarLayout": "synced",
"narrowSidebarTriggerMode": "synced",
"narrowSidebarCustomWidth": "synced",
"paneTransitionDuration": "synced",
"toolbarVisibility": "synced",
"pinNavigationBanner": "synced",
"navIndent": "synced",
"navItemHeight": "synced",
"navItemHeightScaleText": "synced",
"calendarPlacement": "synced",
"calendarLeftPlacement": "synced",
"calendarWeeksToShow": "synced",
"compactItemHeight": "synced",
"compactItemHeightScaleText": "synced",
"featureImageSize": "synced",
"featureImagePixelSize": "synced",
"uiScale": "synced"
},
"createNewNotesInNewTab": true,
"autoRevealActiveFile": true,
"autoRevealShortestPath": true,
"autoRevealIgnoreRightSidebar": true,
"autoRevealIgnoreOtherWindows": true,
"paneTransitionDuration": 150,
"multiSelectModifier": "cmdCtrl",
"enterToOpenFiles": false,
"shiftEnterOpenContext": "tab",
"cmdCtrlEnterOpenContext": "split",
"mouseBackForwardAction": "history",
"startView": "files",
"showInfoButtons": true,
"homepage": {
"source": "none",
"file": null,
"createMissingPeriodicNote": true
},
"dualPane": true,
"dualPaneOrientation": "horizontal",
"narrowSidebarLayout": "singlePane",
"narrowSidebarTriggerMode": "fitPanes",
"narrowSidebarCustomWidth": 350,
"showTooltips": false,
"showTooltipPath": true,
"showTooltipWordCount": false,
"desktopBackground": "separate",
"desktopScale": 1,
"mobileScale": 1,
"useFloatingToolbars": true,
"toolbarVisibility": {
"navigation": {
"toggleDualPane": true,
"expandCollapse": true,
"calendar": true,
"hiddenItems": true,
"rootReorder": true,
"newFolder": true
},
"list": {
"back": true,
"search": true,
"reveal": false,
"descendants": true,
"sort": true,
"appearance": true,
"newNote": true
}
},
"interfaceIcons": {},
"colorIconOnly": false,
"dateFormat": "MMM D, YYYY",
"timeFormat": "h:mm a",
"calendarTemplateFolder": "",
"confirmBeforeDelete": true,
"deleteAttachments": "ask",
"moveFileConflicts": "ask",
"externalIconProviders": {
"bootstrap-icons": true,
"fontawesome-solid": true,
"material-icons": true,
"phosphor": true,
"rpg-awesome": true,
"simple-icons": true
},
"checkForUpdatesOnStart": true,
"pinNavigationBanner": true,
"showNoteCount": true,
"separateNoteCounts": true,
"showIndentGuides": false,
"navCountLeaderStyle": "none",
"rootLevelSpacing": 0,
"navIndent": 16,
"navItemHeight": 28,
"navItemHeightScaleText": true,
"collapseBehavior": "all",
"smartCollapse": true,
"excludeVaultRootFromCollapse": false,
"collapseOtherBranchesOnExpand": false,
"autoSelectFirstFileOnFocusChange": false,
"autoExpandNavItems": false,
"springLoadedFolders": true,
"springLoadedFoldersInitialDelay": 0.5,
"springLoadedFoldersSubsequentDelay": 0.5,
"showSectionIcons": true,
"showShortcuts": true,
"shortcutBadgeDisplay": "index",
"skipAutoScroll": false,
"showRecentNotes": true,
"hideRecentNotes": "none",
"pinRecentNotesWithShortcuts": false,
"recentNotesCount": 5,
"showFolderIcons": true,
"showRootFolder": true,
"inheritFolderColors": true,
"folderSortOrder": "alpha-asc",
"enableFolderNotes": false,
"folderNoteType": "markdown",
"folderNoteName": "",
"folderNoteNamePattern": "",
"folderNoteTemplate": null,
"enableFolderNoteLinks": true,
"hideFolderNoteInList": true,
"pinCreatedFolderNote": false,
"folderNoteOpenLocation": "current-tab",
"showNearestFolderNoteInSidebar": true,
"showTags": true,
"showTagIcons": true,
"showAllTagsFolder": true,
"showUntagged": true,
"scopeTagsToCurrentContext": false,
"tagSortOrder": "alpha-asc",
"inheritTagColors": true,
"keepEmptyTagsProperty": false,
"showProperties": true,
"showPropertyIcons": true,
"inheritPropertyColors": true,
"propertySortOrder": "alpha-asc",
"showAllPropertiesFolder": true,
"scopePropertiesToCurrentContext": false,
"defaultListMode": "standard",
"includeDescendantNotes": false,
"defaultFolderSort": "modified-desc",
"propertySortKey": "",
"propertySortSecondary": "title",
"manualSortPropertyKey": "sort_index",
"manualSortGroupHeaderProperty": "group_header",
"manualSortNewNotePlacement": "below-selected-note",
"confirmBeforeManualSort": true,
"revealFileOnListChanges": true,
"listPaneTitle": "header",
"noteGrouping": "date",
"showSelectedNavigationPills": false,
"stickyGroupHeaders": true,
"showFolderGroupPaths": true,
"showCurrentFolderFilesAtBottom": false,
"filterPinnedByFolder": false,
"compactItemHeight": 28,
"compactItemHeightScaleText": true,
"showQuickActions": true,
"quickActionRevealInFolder": false,
"quickActionAddTag": true,
"quickActionAddToShortcuts": true,
"quickActionPinNote": true,
"quickActionOpenInNewTab": false,
"hideDrawingPreviewImages": true,
"useFrontmatterMetadata": false,
"frontmatterIconField": "icon",
"frontmatterColorField": "color",
"frontmatterBackgroundField": "background",
"frontmatterNameField": "",
"frontmatterCreatedField": "",
"frontmatterModifiedField": "",
"frontmatterDateFormat": "",
"showFileIconUnfinishedTask": false,
"showFileBackgroundUnfinishedTask": false,
"unfinishedTaskBackgroundColor": "#ef000050",
"showFileIcons": true,
"useFolderIconForFiles": true,
"showFilenameMatchIcons": false,
"fileNameIconMap": {},
"showCategoryIcons": false,
"fileTypeIconMap": {},
"fileTypeIconPreset": "none",
"fileNameRows": 1,
"useFolderColorForTitles": false,
"showFilePreview": true,
"skipHeadingsInPreview": true,
"skipCodeBlocksInPreview": true,
"stripHtmlInPreview": true,
"stripLatexInPreview": true,
"previewRows": 2,
"previewProperties": [],
"previewPropertiesFallback": true,
"showFeatureImage": true,
"featureImageProperties": [],
"featureImageExcludeProperties": [],
"featureImageSize": "64",
"featureImagePixelSize": "256",
"forceSquareFeatureImage": true,
"downloadExternalFeatureImages": true,
"showFileTags": true,
"colorFileTags": true,
"prioritizeColoredFileTags": true,
"showFileTagAncestors": false,
"showFileTagsInCompactMode": false,
"showFileProperties": true,
"colorFileProperties": true,
"prioritizeColoredFileProperties": true,
"showFilePropertiesInCompactMode": false,
"showPropertiesOnSeparateRows": false,
"enablePropertyInternalLinks": true,
"enablePropertyExternalLinks": true,
"textCountDisplay": "none",
"textCountPlacement": "title",
"characterCountSpaces": "include",
"wordCountTargetProperty": "word-goal",
"showWordCountPercentage": false,
"showFileDate": true,
"alphabeticalDateMode": "modified",
"showParentFolder": true,
"showParentFolderFullPath": false,
"parentFolderClickRevealsFile": false,
"showParentFolderColor": false,
"showParentFolderIcon": false,
"calendarEnabled": true,
"calendarPlacement": "left-sidebar",
"calendarConfirmBeforeCreate": true,
"calendarLocale": "system-default",
"calendarWeekendDays": "sat-sun",
"calendarMonthHeadingFormat": "full",
"calendarHighlightToday": true,
"calendarShowFeatureImage": true,
"calendarMonthHighlights": {},
"calendarShowWeekNumber": false,
"calendarShowQuarter": false,
"calendarShowYearCalendar": true,
"calendarLeftPlacement": "navigation",
"calendarWeeksToShow": 1,
"calendarIntegrationMode": "notebook-navigator",
"calendarPeriodicNotesLocaleSource": "calendar",
"calendarCustomFilePattern": "YYYY/YYYYMMDD",
"calendarCustomWeekPattern": "gggg/[W]ww",
"calendarCustomMonthPattern": "YYYY/YYYYMM",
"calendarCustomQuarterPattern": "YYYY/[Q]Q",
"calendarCustomYearPattern": "YYYY",
"calendarCustomFileTemplate": null,
"calendarCustomWeekTemplate": null,
"calendarCustomMonthTemplate": null,
"calendarCustomQuarterTemplate": null,
"calendarCustomYearTemplate": null,
"keyboardShortcuts": {
"pane:move-up": [
{
"key": "ArrowUp",
"modifiers": []
}
],
"pane:move-down": [
{
"key": "ArrowDown",
"modifiers": []
}
],
"pane:page-up": [
{
"key": "PageUp",
"modifiers": []
}
],
"pane:page-down": [
{
"key": "PageDown",
"modifiers": []
}
],
"pane:home": [
{
"key": "Home",
"modifiers": []
}
],
"pane:end": [
{
"key": "End",
"modifiers": []
}
],
"pane:rename": [
{
"key": "F2",
"modifiers": []
}
],
"navigation:collapse-or-parent": [
{
"key": "ArrowLeft",
"modifiers": []
}
],
"navigation:expand-or-focus-list": [
{
"key": "ArrowRight",
"modifiers": []
}
],
"navigation:focus-list": [
{
"key": "Tab",
"modifiers": []
}
],
"pane:delete-selected": [
{
"key": "Delete",
"modifiers": []
},
{
"key": "Backspace",
"modifiers": []
}
],
"list:focus-navigation": [
{
"key": "ArrowLeft",
"modifiers": []
},
{
"key": "Tab",
"modifiers": [
"Shift"
]
}
],
"list:focus-editor": [
{
"key": "ArrowRight",
"modifiers": []
},
{
"key": "Tab",
"modifiers": []
}
],
"list:select-all": [
{
"key": "A",
"modifiers": [
"Mod"
]
}
],
"list:extend-selection-up": [
{
"key": "ArrowUp",
"modifiers": [
"Shift"
]
}
],
"list:extend-selection-down": [
{
"key": "ArrowDown",
"modifiers": [
"Shift"
]
}
],
"list:manual-sort-up": [
{
"key": "ArrowUp",
"modifiers": [
"Mod"
]
}
],
"list:manual-sort-down": [
{
"key": "ArrowDown",
"modifiers": [
"Mod"
]
}
],
"list:range-to-start": [
{
"key": "Home",
"modifiers": [
"Shift"
]
}
],
"list:range-to-end": [
{
"key": "End",
"modifiers": [
"Shift"
]
}
],
"search:focus-list": [
{
"key": "Tab",
"modifiers": []
},
{
"key": "Enter",
"modifiers": []
}
],
"search:focus-navigation": [
{
"key": "Tab",
"modifiers": [
"Shift"
]
}
],
"search:close": [
{
"key": "Escape",
"modifiers": []
}
]
},
"customVaultName": "",
"pinnedNotes": {},
"collapsedPinnedContexts": {},
"fileIcons": {},
"fileColors": {},
"fileBackgroundColors": {},
"folderIcons": {},
"folderColors": {},
"folderBackgroundColors": {},
"folderSortOverrides": {},
"folderTreeSortOverrides": {},
"folderAppearances": {},
"tagIcons": {},
"tagColors": {},
"tagBackgroundColors": {},
"tagSortOverrides": {},
"tagTreeSortOverrides": {},
"tagAppearances": {},
"propertyIcons": {},
"propertyColors": {},
"propertyBackgroundColors": {},
"propertySortOverrides": {},
"propertyTreeSortOverrides": {},
"propertyAppearances": {},
"virtualFolderColors": {},
"virtualFolderBackgroundColors": {},
"navigationSeparators": {},
"userColors": [
"#ffffff",
"#d9d9d9",
"#a6a6a6",
"#737373",
"#000000",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040",
"#404040"
],
"lastShownVersion": "3.2.2",
"rootFolderOrder": [],
"rootTagOrder": [],
"rootPropertyOrder": []
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,11 @@
{
"id": "notebook-navigator",
"name": "Notebook Navigator",
"version": "3.2.2",
"minAppVersion": "1.11.0",
"description": "Replace the default file explorer with a clean two-pane interface featuring folder tree, tag browsing, file previews, keyboard navigation, drag-and-drop, pinned notes, and customizable display options.",
"author": "Johan Sanneblad",
"authorUrl": "https://github.com/johansan",
"fundingUrl": "https://github.com/sponsors/johansan/",
"isDesktopOnly": false
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,32 @@
{
"cascadeColors": true,
"colorBackground": true,
"palette": [
{
"id": "PbkbBOekkylxRskByXevs",
"name": "Calgary",
"value": "#657b9f"
},
{
"id": "mT7Y6J5p2UWGraEutdbBw",
"name": "Reddish",
"value": "#af4141"
},
{
"id": "jMNeXlsuD37N4KWe33CHD",
"name": "",
"value": "#cbd44e"
},
{
"id": "D7BkFsf6bdqf6QeNsVxTH",
"name": "",
"value": "#6dee87"
},
{
"id": "ueHvc6VOvvkec3znswDC3",
"name": "",
"value": "#de8117"
}
],
"fileColors": []
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,11 @@
{
"id": "obsidian-file-color",
"name": "File Color",
"version": "1.1.0",
"minAppVersion": "1.2.7",
"description": "An Obsidian plugin for setting colors on folders and files in the file tree.",
"author": "ecustic",
"authorUrl": "https://github.com/ecustic",
"fundingUrl": "https://www.buymeacoffee.com/ecustic",
"isDesktopOnly": false
}
@@ -0,0 +1,27 @@
/* TEXT COLORING, NO CASCADE */
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-text > .nav-folder-title,
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-text > .nav-file-title
{
color: var(--file-color-color);
}
/* TEXT COLORING, WITH CASCADE */
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-text.file-color-cascade .nav-folder-title,
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-text.file-color-cascade .nav-file-title
{
color: var(--file-color-color);
}
/* BACKGROUND COLORING, NO CASCADE */
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-background > .nav-folder-title,
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-background > .nav-file-title
{
background-color: color-mix(in srgb, var(--file-color-color) 15%, transparent);
}
/* BACKGROUND COLORING, WITH CASCADE */
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-background.file-color-cascade .nav-folder-title,
.workspace-leaf-content[data-type="file-explorer"] .nav-files-container .file-color-file.file-color-type-background.file-color-cascade .nav-file-title
{
background-color: color-mix(in srgb, var(--file-color-color) 15%, transparent);
}
@@ -0,0 +1,36 @@
{
"settings": {
"migrated": 6,
"iconPacksPath": ".obsidian/icons",
"fontSize": 16,
"emojiStyle": "native",
"iconColor": null,
"recentlyUsedIcons": [
"FabMicrosoft",
"LiBackpack"
],
"recentlyUsedIconsSize": 5,
"rules": [],
"extraMargin": {
"top": 0,
"right": 4,
"bottom": 0,
"left": 0
},
"iconInTabsEnabled": false,
"iconInTitleEnabled": false,
"iconInTitlePosition": "above",
"iconInFrontmatterEnabled": false,
"iconInFrontmatterFieldName": "icon",
"iconColorInFrontmatterFieldName": "iconColor",
"iconsBackgroundCheckEnabled": false,
"iconsInNotesEnabled": true,
"iconsInLinksEnabled": true,
"iconIdentifier": ":",
"lucideIconPackType": "native",
"debugMode": false,
"useInternalPlugins": false
},
"Learning CI-CD": "LiBackpack",
"Microsoft Windows": "FabMicrosoft"
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
{
"id": "obsidian-icon-folder",
"name": "Iconize",
"version": "2.14.7",
"minAppVersion": "0.9.12",
"description": "Add icons to anything you desire in Obsidian, including files, folders, and text.",
"author": "Florian Woelki",
"authorUrl": "https://florianwoelki.com/",
"isDesktopOnly": false
}
@@ -0,0 +1,120 @@
.iconize-inline-title-wrapper {
width: var(--line-width);
max-width: var(--max-width);
margin-inline: var(--content-margin);
}
.iconize-title-icon {
max-width: var(--max-width);
margin-right: var(--size-4-2);
}
.iconize-icon-in-link {
transform: translateY(20%);
margin-right: var(--size-2-2);
display: inline-flex;
}
.iconize-icon {
border: 1px solid transparent;
margin: 0px 4px 0px 0px;
display: flex;
align-self: center;
margin: auto 0;
}
.nav-folder-title,
.nav-file-title {
align-items: center;
}
.iconize-setting input[type='color'] {
margin: 0 6px;
}
.iconize-modal.prompt-results {
margin: 0;
overflow-y: auto;
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
}
.prompt .iconize-subheadline {
margin-top: 12px;
font-size: 12px;
color: gray;
grid-column-start: 1;
grid-column-end: 6;
}
@media (max-width: 640px) {
.iconize-modal.prompt-results {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.prompt .iconize-subheadline {
grid-column-end: 4;
}
}
.iconize-modal.prompt-results .suggestion-item {
cursor: pointer;
white-space: pre-wrap;
display: flex;
justify-content: flex-end;
align-items: center;
flex-direction: column-reverse;
text-align: center;
font-size: 13px;
color: var(--text-muted);
padding: 16px 8px;
line-break: auto;
word-break: break-word;
line-height: 1.3;
}
.iconize-modal.prompt-results .suggestion-item.suggestion-item__center {
justify-content: center;
}
.iconize-icon-preview {
font-size: 22px;
}
.iconize-icon-preview img {
width: 16px;
height: 16px;
}
.iconize-icon-preview svg {
width: 24px;
height: 24px;
color: currentColor;
margin-bottom: 4px;
}
.iconize-dragover {
position: relative;
}
.iconize-dragover-el {
position: absolute;
width: 100%;
height: 100%;
color: var(--text-normal);
background-color: var(--background-secondary-alt);
display: flex;
align-items: center;
justify-content: center;
}
/* Custom rule modal. */
.iconize-custom-modal .modal-content {
display: flex;
align-items: center;
justify-content: center;
}
.iconize-custom-modal .modal-content input {
width: 100%;
margin-right: 0.5rem;
}
@@ -0,0 +1,465 @@
{
"importers": {
"onenote": {
"previouslyImportedIDs": [
"0-c866819f4dc14b5f8222f471a9f6372b!1-A17362FB20FDB35!s88eb6bb0d39e4f23908d5f7f2891bba7",
"0-92121ffa1a7e4ff0abf0404c94ae1da5!1-A17362FB20FDB35!s021bdabf6dba42159bc029f07ee6c19d",
"0-acefaf2d7a254f7e897c43a2e4a1eac7!1-A17362FB20FDB35!sf3dd6b73070245e68aa7b66765025032",
"0-787c09521e4341f68c470a90bf1b7c67!1-A17362FB20FDB35!sf3dd6b73070245e68aa7b66765025032",
"0-2426f18a225f45bda55866736b78cd81!1-A17362FB20FDB35!sf3dd6b73070245e68aa7b66765025032",
"0-ab277567bf2648fd80bac5baaac46274!1-A17362FB20FDB35!sf3dd6b73070245e68aa7b66765025032",
"0-cabc5546baae4beeaa1d3874eabcc7d6!1-A17362FB20FDB35!10085",
"0-09a8664f9084054422bfe9133b2c0aed!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-040ec452ae0e424aaecea2c6c407199c!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-f5f5a1bcb955449c91d438a45f8ebad4!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-9dac01913cdf0b243aaaf04da2934917!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-f277ac574fa5494a9fd4e9c0167c827d!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-cb32a4dfd7470c8f0ac5e3b7d84ebfb0!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-c8b848149c4845fea07702fb4da7792c!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-1defefbf911048f5b4b1e6ec33132957!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-13829412a5d445e1aa16718aa38bed57!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-1e0122aacdd749ff9f8a46f9e1bfde84!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-09c69b4e58b24f50938dfa0bc33630b2!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-d12ad78df8164bd48f06b1070e1d2ea4!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-6bd1cb92183e4202adab2df7605a24c6!1-A17362FB20FDB35!sbc7c62849fa4460d96f1d8d0dfa1636a",
"0-09a8664f9084054422bfe9133b2c0aed!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-040ec452ae0e424aaecea2c6c407199c!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-f5f5a1bcb955449c91d438a45f8ebad4!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-9dac01913cdf0b243aaaf04da2934917!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-f277ac574fa5494a9fd4e9c0167c827d!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-cb32a4dfd7470c8f0ac5e3b7d84ebfb0!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-c8b848149c4845fea07702fb4da7792c!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-1defefbf911048f5b4b1e6ec33132957!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-13829412a5d445e1aa16718aa38bed57!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-1e0122aacdd749ff9f8a46f9e1bfde84!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-09c69b4e58b24f50938dfa0bc33630b2!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-d12ad78df8164bd48f06b1070e1d2ea4!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-6bd1cb92183e4202adab2df7605a24c6!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-12ac3ef6e3a14304b201cb4f7ecd50a2!1-A17362FB20FDB35!se76343828f4745f694c67022df4e6e1e",
"0-75516fd9f1a60cf91add345e88cc6a49!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-44aeb3a211944961ae08ed584ad8fcca!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-0f2561d79af7016d320c90ef8d3a3ccb!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-7e6855a77d474bad8ab1643ea8f715b7!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-6be781b7e3790303242773fc4c9d2f2d!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-0703223f422f0ebf2f604e7d8d71db51!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-4d9a118f05b104d92a86ce358cd69456!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-1f079d5b43f20b1f1a9934e476cc5dc5!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-e6fde5370a8a044a379ee7cae3c01159!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-d0358b72a6a70b782c9e42b34da359b4!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-53ae3d92692e036e3636083a29d4629d!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-672f83e740f943e8b08ff56700796b21!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-598c6dbdd2ef4e92a5f275a21d777c35!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-43ed671240e14e4bbb76d5e6cea42cdc!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-fdbcc8f5439249a9820093c4578a8fdd!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-8586470f2bcc02a41e31e37502b135e3!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-c65ce38688f40d703e932b7f57e8062b!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-de09662a52cc0849221bd5f1a2e9ef86!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-5a84187f5ec14b0484a4177ec67643ac!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-07e551ae2ab70d191e2f135c358a885e!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-021ffa68741d0d89387ed6cda6465065!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-1fb2767959bf4e36a1d9c397abb80c6d!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-6295219f34680ff307c257a5174b6ed4!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-dba7b37e136201542042ad56851fefcc!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-6177526fd4f9071d085ab9172c76ca64!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-39b36a47280309940ce1f2ac6cd8b5da!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-28fab697e2c400a121dcd1cc62f6b53e!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-25feab25973e039b0c2d3865414df372!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-e332d8d3e2a04a998460538e13ecbb64!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-e68565a9eda74e31baf9510eb2453582!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-914c61f792394208bc452a2ad22f6333!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-5add95a0dea3491184e5454ed692ea9b!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-8c17cda4c80b455397d2fd6667c02612!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-a9438e23a7584fa382bf9fe2e081be1d!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-da6f07ad9ff24240a3c79196528503b6!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-b94b51769509489aab6bbb7712c3411b!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-8dbeae69ff6143f2af453aafc549d47e!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-d8cc6c0f225a4510b19cccf0fa233449!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-86d08654d40e46009ab8909101b4069f!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-3e2e47c8d0eb4648be569224aad76892!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-352c8be445e24809a595bd92571a2a93!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-05cb4ad9d3ac4ed79ca38f99fa4c27da!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-49a248c4ceb94f8ab17e89ec2cbf753f!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-413f2b2a513843aaba09742db47b48dd!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-74bb026e59dd4afa805cc87f1a0a4dbb!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-4637c318154c4b11aaa950c22ecfcb03!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-0e22a4ced155407da7457f737e85922e!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-2ab60ff1bd114d35aaddb5af1492364a!1-A17362FB20FDB35!s31da0d0c5dab4eb58cf7c6bb913c5376",
"0-75516fd9f1a60cf91add345e88cc6a49!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-44aeb3a211944961ae08ed584ad8fcca!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-0f2561d79af7016d320c90ef8d3a3ccb!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-7e6855a77d474bad8ab1643ea8f715b7!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-6be781b7e3790303242773fc4c9d2f2d!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-0703223f422f0ebf2f604e7d8d71db51!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-4d9a118f05b104d92a86ce358cd69456!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-1f079d5b43f20b1f1a9934e476cc5dc5!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-e6fde5370a8a044a379ee7cae3c01159!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-d0358b72a6a70b782c9e42b34da359b4!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-53ae3d92692e036e3636083a29d4629d!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-672f83e740f943e8b08ff56700796b21!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-598c6dbdd2ef4e92a5f275a21d777c35!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-43ed671240e14e4bbb76d5e6cea42cdc!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-fdbcc8f5439249a9820093c4578a8fdd!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-8586470f2bcc02a41e31e37502b135e3!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-c65ce38688f40d703e932b7f57e8062b!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-de09662a52cc0849221bd5f1a2e9ef86!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-5a84187f5ec14b0484a4177ec67643ac!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-07e551ae2ab70d191e2f135c358a885e!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-021ffa68741d0d89387ed6cda6465065!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-1fb2767959bf4e36a1d9c397abb80c6d!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-6295219f34680ff307c257a5174b6ed4!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-dba7b37e136201542042ad56851fefcc!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-6177526fd4f9071d085ab9172c76ca64!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-39b36a47280309940ce1f2ac6cd8b5da!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-28fab697e2c400a121dcd1cc62f6b53e!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-25feab25973e039b0c2d3865414df372!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-e332d8d3e2a04a998460538e13ecbb64!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-e68565a9eda74e31baf9510eb2453582!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-914c61f792394208bc452a2ad22f6333!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-5add95a0dea3491184e5454ed692ea9b!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-8c17cda4c80b455397d2fd6667c02612!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-a9438e23a7584fa382bf9fe2e081be1d!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-da6f07ad9ff24240a3c79196528503b6!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-b94b51769509489aab6bbb7712c3411b!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-8dbeae69ff6143f2af453aafc549d47e!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-d8cc6c0f225a4510b19cccf0fa233449!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-86d08654d40e46009ab8909101b4069f!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-3e2e47c8d0eb4648be569224aad76892!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-352c8be445e24809a595bd92571a2a93!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-05cb4ad9d3ac4ed79ca38f99fa4c27da!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-49a248c4ceb94f8ab17e89ec2cbf753f!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-413f2b2a513843aaba09742db47b48dd!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-74bb026e59dd4afa805cc87f1a0a4dbb!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-4637c318154c4b11aaa950c22ecfcb03!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-0e22a4ced155407da7457f737e85922e!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-2ab60ff1bd114d35aaddb5af1492364a!1-A17362FB20FDB35!s19d52da316fd4e1c8c7a98c0891ab8c0",
"0-9f37e99c27930d1c14610200236bb780!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-700f16cd2434010d1a29fe8328255afb!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-7b313306c6830100012b5f1f153cda52!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-b9c4d30c63600b41369e8272f2b92db8!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-f25b804e359706981b9be352d286825c!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-978963bc40940e8a1c542ce0aa731e0b!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-a294613abcf50e8f14a03b40152866bd!1-A17362FB20FDB35!s802cdad8e3ad451ca1b2732e2e4d4ffe",
"0-9f37e99c27930d1c14610200236bb780!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-700f16cd2434010d1a29fe8328255afb!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-7b313306c6830100012b5f1f153cda52!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-b9c4d30c63600b41369e8272f2b92db8!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-f25b804e359706981b9be352d286825c!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-978963bc40940e8a1c542ce0aa731e0b!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-a294613abcf50e8f14a03b40152866bd!1-A17362FB20FDB35!sa75ebbe004434211803fa9f0451820c5",
"0-18490057bedb0eb227b9cd8ba4b1c4c4!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-f9375004e3f8486e868bfc11b8b846ac!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-c9566c8abdff0248361c5875dec6da1d!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-47a903bdf1214e98b6cbfd9a3d7b0bff!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-eed003ccc46f4e3788519f4b963e23ee!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-71e160becd5d0b770cc64657be7634f2!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-a5221a10912002d83b82d584331eb461!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-03d100a8b4df0d2204ac5e1066e78668!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-a3a7fb93b1b80ca7202baba61906b987!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-4830c5106fcb0d021648de5d8517ebc4!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-922172e61db90f92126c77dc2f8939e9!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-27ecdd4281f74bbda13d0b874c58ea10!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-4b599b1c8a2705c91559f72c9faa4d1e!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-9414e265c4040b5f0dc73bc40d78cd74!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-72a33f8c96410d340955bd94ce1d5298!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-16c2674821d00bdc0801ec969f6226b8!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-449ffb4f571e492088e2b6d69c01fd64!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-d01a46a4b1350df713ff809cd813fb70!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-23bba4f62351069124d87b4beb4f2ce1!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-c18c9d0f497b4cca95ae76b8765aaf64!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-311d1d5b430a4b419dd873c0155aa5b8!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-8b0ae4bdafc547688c550497ed7c164e!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-40f8e2ffc6024d9abe9ee3246c94a013!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-5ec358d6ef6b4f968fd36e307fa7833a!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-48dc0b44218c4f1b8ffc74d3e49f11f6!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-abde233087664ad7a48a454a4ccf346d!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-0b9d4749fcf74e81b2d3a374f29c43cf!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-9beb2edcf9924629965658e19eb1de03!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-676677eb8f864020a2a1aed50b0bdac8!1-A17362FB20FDB35!s75047b4dd74045c8b91882fa22e9ef9c",
"0-18490057bedb0eb227b9cd8ba4b1c4c4!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-f9375004e3f8486e868bfc11b8b846ac!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-c9566c8abdff0248361c5875dec6da1d!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-47a903bdf1214e98b6cbfd9a3d7b0bff!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-eed003ccc46f4e3788519f4b963e23ee!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-71e160becd5d0b770cc64657be7634f2!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-a5221a10912002d83b82d584331eb461!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-03d100a8b4df0d2204ac5e1066e78668!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-a3a7fb93b1b80ca7202baba61906b987!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-4830c5106fcb0d021648de5d8517ebc4!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-922172e61db90f92126c77dc2f8939e9!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-27ecdd4281f74bbda13d0b874c58ea10!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-4b599b1c8a2705c91559f72c9faa4d1e!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-9414e265c4040b5f0dc73bc40d78cd74!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-72a33f8c96410d340955bd94ce1d5298!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-16c2674821d00bdc0801ec969f6226b8!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-449ffb4f571e492088e2b6d69c01fd64!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-d01a46a4b1350df713ff809cd813fb70!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-23bba4f62351069124d87b4beb4f2ce1!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-c18c9d0f497b4cca95ae76b8765aaf64!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-311d1d5b430a4b419dd873c0155aa5b8!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-8b0ae4bdafc547688c550497ed7c164e!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-40f8e2ffc6024d9abe9ee3246c94a013!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-5ec358d6ef6b4f968fd36e307fa7833a!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-48dc0b44218c4f1b8ffc74d3e49f11f6!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-abde233087664ad7a48a454a4ccf346d!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-0b9d4749fcf74e81b2d3a374f29c43cf!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-9beb2edcf9924629965658e19eb1de03!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-676677eb8f864020a2a1aed50b0bdac8!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-cc2bef22faa74943b23ad350650ba8fb!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-86571a28686744f7a00a21562b20775c!1-A17362FB20FDB35!s175fd18b180b4651b22504ba1fdbc102",
"0-71c272ca4214045438906c9766dd0e12!1-A17362FB20FDB35!s41c8f595616c4415a5073c427db6ebc2",
"0-968200594798058c0b555ce1f71119dd!1-A17362FB20FDB35!s10eb4051e61347d4966085693709b8c2",
"0-7f1f8f9051ce0270297535f716dac952!1-A17362FB20FDB35!s92ad9e8ec8b14d518a4f9210976383e1",
"0-b5f99ef288ea051d13b3b2f4b64bbe8b!1-A17362FB20FDB35!s92ad9e8ec8b14d518a4f9210976383e1",
"0-e7c3526105d708dd323d1018617c7091!1-A17362FB20FDB35!s92ad9e8ec8b14d518a4f9210976383e1",
"0-54cf0f0f28c503a8066fb8289cd6aa9b!1-A17362FB20FDB35!s92ad9e8ec8b14d518a4f9210976383e1",
"0-ec329669a93708630f2583076b23862f!1-A17362FB20FDB35!s92ad9e8ec8b14d518a4f9210976383e1",
"0-59306a5cf59a09d7101b599c927ab404!1-A17362FB20FDB35!s92ad9e8ec8b14d518a4f9210976383e1",
"0-c5f057cf2ee34b64944cace969e086ec!1-A17362FB20FDB35!sde7c5d2b4bd54dc881dea47c72ec9b6c",
"0-cb0849f71c9a407a86c83fec6824df70!1-A17362FB20FDB35!sde7c5d2b4bd54dc881dea47c72ec9b6c",
"0-af3fbf96c621413b88d58f0c696dd110!1-A17362FB20FDB35!sde7c5d2b4bd54dc881dea47c72ec9b6c",
"0-726de65b9cd542e99972101c43ab7bfd!1-A17362FB20FDB35!sde7c5d2b4bd54dc881dea47c72ec9b6c",
"0-c5f057cf2ee34b64944cace969e086ec!1-A17362FB20FDB35!s58276b3e29424354a5e8d7576f84c404",
"0-cc38f313511240fea9d0996155d2c919!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-969b6ff7d4e44a0abe1b22014377905c!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-14527592b9f600413034d56dfdafff31!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-e685e64e75ec080129886856ee14b730!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-669716ae2e4c0a01166c0ceef11dca3b!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-4a14c352c2c64f1fa556d4be42040703!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c9897ba1df0405042977fba7bca4b2ed!98-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c9897ba1df0405042977fba7bca4b2ed!146-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-ca136ea651310fae13708fd6e40cedc6!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-12f5e1b969de0cf41bd7ea60eb117bb5!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c9897ba1df0405042977fba7bca4b2ed!27-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-e22839fe648e4ed989a36c5c266e2ab1!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-1b3c8688eea24d25ba679ab1d4ff8daf!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-07df92115fda03b70db6ce474cf190a6!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-e30d31c5fe1d0dd232769b02e160e747!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-7152829923da0595142aef346ed03ba6!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-e67391ac23d40af70573a9c9e4f5d55f!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-13ef8e5ffe0405b924ac139a04aeac17!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-d6d1fc04ac254a7daed0ad71d66e8b87!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c9897ba1df0405042977fba7bca4b2ed!122-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c9897ba1df0405042977fba7bca4b2ed!79-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c9897ba1df0405042977fba7bca4b2ed!164-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-10a92889a2d102a525b2979889b22d83!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-011157b8eb150b7d1ad632409fd4ad25!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-c627774b9e7904f61f06d9f685516051!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-e03d40c62f420e6a27aec6bfe605ac86!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-3ccd7d56f0c20ffd0fffc40fbb6961bc!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-99615b6a9d234d3e8809c1033f4632d8!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-59caf69e30be41a6bf184981412c90cc!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-3ed476a14f9145dc8164bba8c8ff5e2f!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-cfb72ff23ce94434b8887db73875e2f3!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-25aa697d02674182b8a0762e988629f1!1-A17362FB20FDB35!sa8eda7fdadad49caac6dd72de32aae12",
"0-cc38f313511240fea9d0996155d2c919!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-969b6ff7d4e44a0abe1b22014377905c!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-14527592b9f600413034d56dfdafff31!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-e685e64e75ec080129886856ee14b730!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-669716ae2e4c0a01166c0ceef11dca3b!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-4a14c352c2c64f1fa556d4be42040703!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c9897ba1df0405042977fba7bca4b2ed!98-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c9897ba1df0405042977fba7bca4b2ed!146-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-ca136ea651310fae13708fd6e40cedc6!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-12f5e1b969de0cf41bd7ea60eb117bb5!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c9897ba1df0405042977fba7bca4b2ed!27-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-e22839fe648e4ed989a36c5c266e2ab1!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-1b3c8688eea24d25ba679ab1d4ff8daf!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-07df92115fda03b70db6ce474cf190a6!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-e30d31c5fe1d0dd232769b02e160e747!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-7152829923da0595142aef346ed03ba6!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-e67391ac23d40af70573a9c9e4f5d55f!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-13ef8e5ffe0405b924ac139a04aeac17!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-d6d1fc04ac254a7daed0ad71d66e8b87!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c9897ba1df0405042977fba7bca4b2ed!122-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c9897ba1df0405042977fba7bca4b2ed!79-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c9897ba1df0405042977fba7bca4b2ed!164-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-10a92889a2d102a525b2979889b22d83!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-011157b8eb150b7d1ad632409fd4ad25!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-c627774b9e7904f61f06d9f685516051!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-e03d40c62f420e6a27aec6bfe605ac86!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-3ccd7d56f0c20ffd0fffc40fbb6961bc!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-99615b6a9d234d3e8809c1033f4632d8!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-59caf69e30be41a6bf184981412c90cc!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-3ed476a14f9145dc8164bba8c8ff5e2f!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-cfb72ff23ce94434b8887db73875e2f3!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-25aa697d02674182b8a0762e988629f1!1-A17362FB20FDB35!sfe34c1e4663141b296f3f37b8a924183",
"0-ad7c9efe77fc03d60439ea1ea38c87d8!1-A17362FB20FDB35!sb62c969a726b47dcba74a7288ab9199e",
"0-12d64f52d8a804d81a41a64605a917f6!1-A17362FB20FDB35!sb62c969a726b47dcba74a7288ab9199e",
"0-ad7c9efe77fc03d60439ea1ea38c87d8!1-A17362FB20FDB35!s7fe8149e120c4b48a67399ff140908d6",
"0-12d64f52d8a804d81a41a64605a917f6!1-A17362FB20FDB35!s7fe8149e120c4b48a67399ff140908d6",
"0-83f950c96fa10e6535b22e3e43694b40!1-A17362FB20FDB35!s29646bac687f4a3c9bffe399d93f7530",
"0-d3215a45bdb24e219b1b3eddd0fff4d2!1-A17362FB20FDB35!s29646bac687f4a3c9bffe399d93f7530",
"0-0d3ab4ec846e4f01ba5a14ce2db58775!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-ff88e3a7a62c4183bd600bb00911bb8c!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-bdb0b5b109aa06d200c354543d1956de!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-943a9a2d396403a83034d1641d450db6!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-3f4d5ac65cbf0e5d3de6e186d8c752bd!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-49ed72c5fc0f000201f829ce398d6930!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-26cfb0d58a620616068aea5cf3ec7ab7!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-d3391649e4610c2b14562cfc2377ab63!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-f5208760dd43046c177bd6327c617bd9!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-423ae252e97004af0aeca8f2847eb595!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-0f8ed51262064665971f049ba4cc2209!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-3286dafb932e03dc10ce41bc2073903a!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-afc3cc7dd24208e41400c961193bd475!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-f1336e84c3410a6e1a2b6ffe9c5a2fcd!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-3c9f9fed83cf01400b560926010001b2!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-77bd76ad7f6f4599a2fc92699f97cfde!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-3d6b35dba21709a63928554d13e59e7a!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-7601901019e30ec620abe81fc9a60abc!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-4fdd7d77639701a337b742ef1834d866!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-6fae50656c5d087527e0a546b9323ba6!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-130089a3db8e0d09266c7a05439f6725!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-3669be627aed04352e9917402c633aa2!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-946779f292090f7c092c985892bbb25d!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-525c2f44175205c537e15c0ee7d1de02!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-71b7a9e9d2b706a730f75ca6352ca89b!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-df83008abd080ae70c6fd25e021157e4!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-d430ae28516a0f2910210fef3cdde12e!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-7fa9b3da46a4063d0cf9257624ead189!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-190bd771d54b014b01497603c3ceb234!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-db8dc63c1c2f05c40e99c4c1dd6d36ce!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-02e44bb3ec0a02c6182d624b42bb38c1!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-7d3ed9111e9a483c8f24dd9518d57142!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-ea1735fe9370065b34d4b20be5138c43!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-ebbc4e53b30f08e40082d4214a551e40!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-0bbb9fc29c1807d3276b30ba688e66d4!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-dbd436bd7659098e27a57c46de99f7ba!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-eee67e91637109541a4d5cbdf6696cba!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-e9a9f673ed8702373c1bea771fb1407f!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-86ed7399fcf44923943e633849408201!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-6505a471551341a6a81b6f7bed25b4f5!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-d8f555da265545c383128e6ed9c1a7c4!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-7eb58707ecb746bd8c61bdd9f2f2c0c9!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-e0b0b7d6c2b849f6a3e7f79a007b8678!1-A17362FB20FDB35!s03d4c52edb0b44aa984a1add84ca780e",
"0-0d3ab4ec846e4f01ba5a14ce2db58775!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-ff88e3a7a62c4183bd600bb00911bb8c!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-bdb0b5b109aa06d200c354543d1956de!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-943a9a2d396403a83034d1641d450db6!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-3f4d5ac65cbf0e5d3de6e186d8c752bd!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-49ed72c5fc0f000201f829ce398d6930!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-26cfb0d58a620616068aea5cf3ec7ab7!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-d3391649e4610c2b14562cfc2377ab63!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-f5208760dd43046c177bd6327c617bd9!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-423ae252e97004af0aeca8f2847eb595!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-0f8ed51262064665971f049ba4cc2209!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-3286dafb932e03dc10ce41bc2073903a!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-b5649645b0b3062639003f3c4990faf8!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-afc3cc7dd24208e41400c961193bd475!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-f1336e84c3410a6e1a2b6ffe9c5a2fcd!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-3c9f9fed83cf01400b560926010001b2!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-77bd76ad7f6f4599a2fc92699f97cfde!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-3d6b35dba21709a63928554d13e59e7a!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-7601901019e30ec620abe81fc9a60abc!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-4fdd7d77639701a337b742ef1834d866!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-6fae50656c5d087527e0a546b9323ba6!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-130089a3db8e0d09266c7a05439f6725!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-3669be627aed04352e9917402c633aa2!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-946779f292090f7c092c985892bbb25d!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-525c2f44175205c537e15c0ee7d1de02!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-71b7a9e9d2b706a730f75ca6352ca89b!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-df83008abd080ae70c6fd25e021157e4!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-d430ae28516a0f2910210fef3cdde12e!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-7fa9b3da46a4063d0cf9257624ead189!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-190bd771d54b014b01497603c3ceb234!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-db8dc63c1c2f05c40e99c4c1dd6d36ce!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-02e44bb3ec0a02c6182d624b42bb38c1!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-fb5619efd94302b83ba292031042a836!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-7d3ed9111e9a483c8f24dd9518d57142!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-ea1735fe9370065b34d4b20be5138c43!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-ebbc4e53b30f08e40082d4214a551e40!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-e85ea45481a60cf5234c311bd1cd0b28!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-0bbb9fc29c1807d3276b30ba688e66d4!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-dbd436bd7659098e27a57c46de99f7ba!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-eee67e91637109541a4d5cbdf6696cba!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-e9a9f673ed8702373c1bea771fb1407f!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-86ed7399fcf44923943e633849408201!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-6505a471551341a6a81b6f7bed25b4f5!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-d8f555da265545c383128e6ed9c1a7c4!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-7eb58707ecb746bd8c61bdd9f2f2c0c9!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-e0b0b7d6c2b849f6a3e7f79a007b8678!1-A17362FB20FDB35!se41d4944881e451a80d7212b24930583",
"0-6713acad97020a4e1e48c459e10426f2!1-A17362FB20FDB35!sb69115ab5f1348cf92349373682ef8f0",
"0-d5abc54a86000a6b290d02662f01825d!1-A17362FB20FDB35!sb69115ab5f1348cf92349373682ef8f0",
"0-b85dcf2ff1ef082501bca9c82b6c3319!1-A17362FB20FDB35!sb69115ab5f1348cf92349373682ef8f0",
"0-0f2bcf64d0884ed1960833801b7bba6c!1-A17362FB20FDB35!s6378e6e93e044a9e9888b9f96c904154",
"0-9f339cc994e7014c1bc0c45376948f4d!1-A17362FB20FDB35!s6378e6e93e044a9e9888b9f96c904154",
"0-0f2bcf64d0884ed1960833801b7bba6c!1-A17362FB20FDB35!s651e6e4b885946ea97032ebc8ffcdf78",
"0-9f339cc994e7014c1bc0c45376948f4d!1-A17362FB20FDB35!s651e6e4b885946ea97032ebc8ffcdf78",
"0-4030c20a963206411d4aab91473a0dc5!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-a343156939210f0222036ede060df938!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-58c34f2e305f08061cb803f6ee29dfea!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-5059c7489bbd065d22410553734d5116!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-b93a8d5784530e0a1d8c6491879b8328!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-26551afa0cf84a94a175e0981ee7e4c4!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-5c3233b026180c4d3c47d9fed403e401!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-92b24a1469ac000a129b700fc25f67dc!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-02cdaa5b32ee44909e3a4fd0e112f12f!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-bf20b4e5d8b347a2ad0896dbbf9b94df!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-773a640d3329487685b8dbab4e01c7de!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-8c00d24886504e279fcb0324aa62e053!1-A17362FB20FDB35!s79ac6e45250341d4bf86ebb1768e5e9d",
"0-4030c20a963206411d4aab91473a0dc5!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-a343156939210f0222036ede060df938!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-58c34f2e305f08061cb803f6ee29dfea!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-5059c7489bbd065d22410553734d5116!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-b93a8d5784530e0a1d8c6491879b8328!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-26551afa0cf84a94a175e0981ee7e4c4!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-5c3233b026180c4d3c47d9fed403e401!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-92b24a1469ac000a129b700fc25f67dc!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-02cdaa5b32ee44909e3a4fd0e112f12f!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-bf20b4e5d8b347a2ad0896dbbf9b94df!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-773a640d3329487685b8dbab4e01c7de!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-8c00d24886504e279fcb0324aa62e053!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-da543a840f1c44f7b1e11e31b7d89903!1-A17362FB20FDB35!s8df3ae898f57460e838e3782372a6530",
"0-23a815a387c202cd068fcc21c2308823!1-A17362FB20FDB35!s4fe06a34bfdb4fc59d3e518cffe2d739",
"0-acb5e43c5b790dbd2dc5f06a7136b361!1-A17362FB20FDB35!s4fe06a34bfdb4fc59d3e518cffe2d739",
"0-ffffd96e8a7800bb1bd8031f019fb737!1-A17362FB20FDB35!s4fe06a34bfdb4fc59d3e518cffe2d739",
"0-12bdaa42cee104bb2dd00992765797cc!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-acaac477894e07cc05e1413a55e2f06d!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-fcf08052e13f04450e59ae03fd2346ec!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-e17e68afd3c140ada20812fb953a1aa8!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-ed300b667bac010301046b7c558b93f3!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-23046a1f10ee4f9c8f339d63c4dc2187!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-5e6484e4301448e3af76fa8479969fe0!1-A17362FB20FDB35!s967706cc844349eebbe57cc5ba5876aa",
"0-12bdaa42cee104bb2dd00992765797cc!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-acaac477894e07cc05e1413a55e2f06d!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-fcf08052e13f04450e59ae03fd2346ec!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-e17e68afd3c140ada20812fb953a1aa8!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-ed300b667bac010301046b7c558b93f3!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-23046a1f10ee4f9c8f339d63c4dc2187!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-5e6484e4301448e3af76fa8479969fe0!1-A17362FB20FDB35!sb5a4b2cec84c4d5c92e6000792d4cec4",
"0-ce694770f9640ef82a5bca5ef42e12e2!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-bdf53935bc22018127fd1aa8b077eb77!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-99de1069187c08f320a7377fbd01c610!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-9e46756060ba076f1b6e86fc7529c65c!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-c4075ebd90e505e1085deaf065af4c2b!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-345d8ac649cb07273d1b26cfb1868e16!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-f21ba087e698017c22263aa423f41e0f!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-8441e4698a204cc5b1d171ef2d1a0848!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-26747730097a4c1fba7dedd430f5997a!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-220cdfce4c21413097867f2ff001c5ae!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-78a57d5a76f94d4aae399f643f505d94!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-97c4cab2bcd544b79e8668231d687317!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-ee61ce076cec4dc5ac09d84d35d68202!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-c1d8d131d081427d89eacbd25ddb3d56!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-400fe2ba446043779e876a333c3108ed!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-50de44df2d0147e09e63e950cfafc2ba!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-07ab08d03a3d46b09395ddd82295b111!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-ad8df5abe91c400ca7e4f1175c58d940!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-f6f04f03cab44e98987af9981525271b!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-9914eeeb1eb24bec9335a0bcaa0ad083!1-A17362FB20FDB35!s411c3abc39fa43faae46f8dc1684474f",
"0-ce694770f9640ef82a5bca5ef42e12e2!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-bdf53935bc22018127fd1aa8b077eb77!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-99de1069187c08f320a7377fbd01c610!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-9e46756060ba076f1b6e86fc7529c65c!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-c4075ebd90e505e1085deaf065af4c2b!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-345d8ac649cb07273d1b26cfb1868e16!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-f21ba087e698017c22263aa423f41e0f!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-8441e4698a204cc5b1d171ef2d1a0848!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-26747730097a4c1fba7dedd430f5997a!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-220cdfce4c21413097867f2ff001c5ae!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-78a57d5a76f94d4aae399f643f505d94!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931",
"0-97c4cab2bcd544b79e8668231d687317!1-A17362FB20FDB35!seee75fc5ca2a430780abcda5804bc931"
]
}
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
{
"id": "obsidian-importer",
"name": "Importer",
"version": "1.6.21",
"minAppVersion": "0.15.0",
"description": "Import data from Notion, Evernote, Apple Notes, Microsoft OneNote, Google Keep, Bear, Roam, and HTML files.",
"author": "Obsidian",
"authorUrl": "https://obsidian.md",
"isDesktopOnly": false
}
@@ -0,0 +1,87 @@
.modal.mod-importer {
max-height: var(--modal-height);
padding: var(--size-4-4) 0 0 0;
position: relative;
overflow: hidden;
}
.modal.mod-importer .modal-title {
padding: 0 var(--size-4-4);
}
.modal.mod-importer .modal-content {
overflow: auto;
padding: var(--size-4-4);
margin-bottom: calc(var(--input-height) + var(--size-4-8));
border-top: var(--border-width) solid var(--background-modifier-border);
}
.modal.mod-importer .modal-button-container {
margin: 0 0 0 calc(var(--size-4-4) * -1);
padding: var(--size-4-4);
gap: var(--size-4-2);
position: absolute;
bottom: 0;
background-color: var(--background-primary);
border-top: var(--border-width) solid var(--background-modifier-border);
width: 100%;
}
.importer-progress-bar {
width: 100%;
height: 8px;
background-color: var(--background-secondary);
overflow: hidden;
box-shadow: inset 0px 0px 0px 1px var(--background-modifier-border);
border-radius: var(--radius-s);
}
.importer-progress-bar-inner {
width: 0;
height: 100%;
background-color: var(--interactive-accent);
}
.importer-status {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: var(--size-4-2) 0;
}
.importer-stats-container {
display: flex;
justify-content: space-evenly;
margin-top: var(--size-4-5);
margin-bottom: var(--size-4-5);
}
.importer-stat {
text-align: center;
}
.importer-stat-count {
font-size: var(--font-ui-large);
}
.importer-log {
overflow: auto;
flex-grow: 1;
font-family: var(--font-monospace);
font-size: var(--font-ui-smaller);
color: var(--text-muted);
border: 1px solid var(--background-modifier-border);
padding: var(--size-4-4);
background-color: var(--background-secondary);
border-radius: var(--radius-s);
max-height: 300px;
user-select: text;
}
.importer-log .list-item {
display: inline-block;
line-height: var(--line-height-normal);
white-space: pre;
margin: var(--size-2-1);
}
.importer-error {
color: var(--text-error);
}
@@ -0,0 +1,150 @@
{
"remoteType": "",
"useCustomRequestHandler": false,
"couchDB_URI": "",
"couchDB_USER": "",
"couchDB_PASSWORD": "",
"couchDB_DBNAME": "",
"liveSync": false,
"syncOnSave": false,
"syncOnStart": true,
"savingDelay": 200,
"lessInformationInLog": false,
"gcDelay": 0,
"versionUpFlash": "",
"minimumChunkSize": 20,
"longLineThreshold": 250,
"showVerboseLog": false,
"suspendFileWatching": false,
"trashInsteadDelete": true,
"periodicReplication": true,
"periodicReplicationInterval": 60,
"syncOnFileOpen": true,
"encrypt": true,
"passphrase": "",
"usePathObfuscation": true,
"doNotDeleteFolder": false,
"resolveConflictsByNewerFile": false,
"batchSave": true,
"batchSaveMinimumDelay": 5,
"batchSaveMaximumDelay": 60,
"deviceAndVaultName": "",
"usePluginSettings": false,
"showOwnPlugins": false,
"showStatusOnEditor": true,
"showStatusOnStatusbar": true,
"showOnlyIconsOnEditor": false,
"hideFileWarningNotice": false,
"usePluginSync": false,
"autoSweepPlugins": false,
"autoSweepPluginsPeriodic": false,
"notifyPluginOrSettingUpdated": false,
"checkIntegrityOnSave": false,
"batch_size": 50,
"batches_limit": 50,
"useHistory": true,
"disableRequestURI": true,
"skipOlderFilesOnSync": true,
"checkConflictOnlyOnOpen": false,
"showMergeDialogOnlyOnActive": false,
"syncInternalFiles": false,
"syncInternalFilesBeforeReplication": false,
"syncInternalFilesIgnorePatterns": "\\/node_modules\\/, \\/\\.git\\/, \\/obsidian-livesync\\/",
"syncInternalFilesTargetPatterns": "",
"syncInternalFilesInterval": 60,
"additionalSuffixOfDatabaseName": "61fcc0be27d0c623",
"ignoreVersionCheck": false,
"lastReadUpdates": 0,
"deleteMetadataOfDeletedFiles": false,
"syncIgnoreRegEx": "",
"syncOnlyRegEx": "",
"customChunkSize": 50,
"readChunksOnline": true,
"watchInternalFileChanges": true,
"automaticallyDeleteMetadataOfDeletedFiles": 0,
"disableMarkdownAutoMerge": false,
"writeDocumentsIfConflicted": false,
"useDynamicIterationCount": false,
"syncAfterMerge": false,
"configPassphraseStore": "",
"encryptedPassphrase": "%a57e3279017d17a1cc64a3b104000000139d7cc3156fab1f39931c34c76facb0HcSvGbJmxL0ybbCQu85RXc5O5djY6wdJ1KXsx8ip",
"encryptedCouchDBConnection": "%a57e3279017d17a1cc64a3b103000000139d7cc3156fab1f39931c34c76facb0gTnylUguutu7k7/0sHULlu9w9CIrHBsu/b2GC2ZAQXGQ6bV+/5Djl7e7OkmQxcmisv00CbbObJD7a1AWwyKmwtIqxylzVuNTGfAdy4momyNYFjmIdiezrLBULecFjNzOtvy1oDBWBaLKhzQ7F7W7Wq5RgObpIBlOwc95SXkQWj3XdpHMc7I76k6MkOk0O+18nGwayORYaG+gIvRSAAzb7Ny+t+43QEfakTFsmCZLr+dY25cy0wOG1ZtFJQq9tbZgfFK9IiGt1yET4wLPfnRsmy7XrzuwV7IFN6rtPFOR89p3vpXzLb0960cAHidoDZfF3ZG5eOm0vB67btnSMWkPqrqaVREBdRhqji6YPes/DqRujwp898Qm6Py1WJ57/nZC/unT1IGJOf5Coygm7NbqH9pZWayjZ/HYHgLa9BclwvjireS5M9bMMDiTdYlRwWlUU5VXoiJ7144EURI9zWKf+BufWGtsWZ+Mg0N56J/PPkOEF8Huk/aZZq0kgFKqqjO292tfL5GcxzcFWyW+w01yKsmFATrxsQ47gRvVMyp8JcJvtQt1bXfpkvG1nnGOcC6DBPJs4xzF3mA=",
"permitEmptyPassphrase": false,
"useIndexedDBAdapter": true,
"useTimeouts": false,
"writeLogToTheFile": false,
"doNotPaceReplication": false,
"hashCacheMaxCount": 300,
"hashCacheMaxAmount": 50,
"concurrencyOfReadChunksOnline": 100,
"minimumIntervalOfReadChunksOnline": 100,
"hashAlg": "xxhash64",
"suspendParseReplicationResult": false,
"doNotSuspendOnFetching": false,
"useIgnoreFiles": false,
"ignoreFiles": ".gitignore",
"syncOnEditorSave": false,
"pluginSyncExtendedSetting": {},
"syncMaxSizeInMB": 50,
"settingSyncFile": "",
"writeCredentialsForSettingSync": false,
"notifyAllSettingSyncFile": false,
"isConfigured": true,
"settingVersion": 10,
"enableCompression": false,
"accessKey": "",
"bucket": "",
"endpoint": "",
"region": "",
"secretKey": "",
"useEden": false,
"maxChunksInEden": 10,
"maxTotalLengthInEden": 1024,
"maxAgeInEden": 10,
"disableCheckingConfigMismatch": false,
"displayLanguage": "def",
"enableChunkSplitterV2": false,
"disableWorkerForGeneratingChunks": false,
"processSmallFilesInUIThread": false,
"notifyThresholdOfRemoteStorageSize": 800,
"usePluginSyncV2": false,
"usePluginEtc": false,
"handleFilenameCaseSensitive": false,
"doNotUseFixedRevisionForChunks": true,
"showLongerLogInsideEditor": false,
"sendChunksBulk": false,
"sendChunksBulkMaxSize": 1,
"useSegmenter": false,
"useAdvancedMode": false,
"usePowerUserMode": false,
"useEdgeCaseMode": false,
"enableDebugTools": false,
"suppressNotifyHiddenFilesChange": false,
"syncMinimumInterval": 2000,
"P2P_Enabled": false,
"P2P_AutoAccepting": 0,
"P2P_AppID": "self-hosted-livesync",
"P2P_roomID": "",
"P2P_passphrase": "",
"P2P_relays": "wss://exp-relay.vrtmrz.net/",
"P2P_AutoBroadcast": false,
"P2P_AutoStart": false,
"P2P_AutoSyncPeers": "",
"P2P_AutoWatchPeers": "",
"P2P_SyncOnReplication": "",
"P2P_RebuildFrom": "",
"P2P_AutoAcceptingPeers": "",
"P2P_AutoDenyingPeers": "",
"P2P_IsHeadless": false,
"doctorProcessedVersion": "0.24.16",
"bucketCustomHeaders": "",
"couchDB_CustomHeaders": "",
"useJWT": false,
"jwtAlgorithm": "",
"jwtKey": "",
"jwtKid": "",
"jwtSub": "",
"jwtExpDuration": 5,
"useRequestAPI": false,
"bucketPrefix": ""
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
{
"id": "obsidian-livesync",
"name": "Self-hosted LiveSync",
"version": "0.24.28",
"minAppVersion": "0.9.12",
"description": "Community implementation of self-hosted livesync. Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.",
"author": "vorotamoroz",
"authorUrl": "https://github.com/vrtmrz",
"isDesktopOnly": false
}
@@ -0,0 +1,454 @@
.added {
color: var(--text-on-accent);
background-color: var(--text-accent);
}
.normal {
color: var(--text-normal);
}
.deleted {
color: var(--text-on-accent);
background-color: var(--text-muted);
}
.op-scrollable {
overflow-y: scroll;
/* min-height: 280px; */
max-height: 280px;
user-select: text;
-webkit-user-select: text;
}
.op-pre {
white-space: pre-wrap;
}
.op-warn {
border: 1px solid salmon;
padding: 2px;
border-radius: 4px;
}
.op-warn::before {
content: "Warning";
font-weight: bold;
color: salmon;
position: relative;
display: block;
}
.op-warn-info {
border: 1px solid rgb(255, 209, 81);
padding: 2px;
border-radius: 4px;
}
.op-warn-info::before {
content: "Notice";
font-weight: bold;
color: rgb(255, 209, 81);
position: relative;
display: block;
}
.syncstatusbar {
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
.tcenter {
text-align: center;
}
.sls-plugins-wrap {
display: flex;
flex-grow: 1;
max-height: 50vh;
overflow-y: scroll;
}
.sls-plugins-tbl {
border: 1px solid var(--background-modifier-border);
width: 100%;
max-height: 80%;
}
.divider th {
border-top: 1px solid var(--background-modifier-border);
}
.sls-header-button {
margin-left: 2em;
}
.sls-hidden {
display: none;
}
:root {
--sls-log-text: "";
}
.sls-troubleshoot-preview {
max-width: max-content;
}
.sls-troubleshoot-preview img {
max-width: 100%;
}
.sls-setting-tab {
display: none;
}
div.sls-setting-menu-btn {
color: var(--text-normal);
background-color: var(--background-secondary-alt);
border-radius: 4px 4px 0 0;
padding: 6px 10px;
cursor: pointer;
margin-right: 12px;
font-family: "Inter", sans-serif;
outline: none;
user-select: none;
flex-grow: 1;
text-align: center;
flex-shrink: 1;
}
.sls-setting-label.selected {
/* order: 1; */
flex-grow: 1;
/* width: 100%; */
}
.sls-setting-tab:hover~div.sls-setting-menu-btn,
.sls-setting-label.selected .sls-setting-tab:checked~div.sls-setting-menu-btn {
background-color: var(--interactive-accent);
color: var(--text-on-accent);
}
.sls-setting-menu-wrapper {
display: flex;
flex-direction: column;
flex-grow: 1;
position: sticky;
top: 0;
background-color: rgba(var(--background-primary), 0.3);
backdrop-filter: blur(4px);
border-radius: 4px;
z-index: 10;
}
.sls-setting-menu {
display: flex;
flex-direction: row;
overflow-x: auto;
}
body {
--sls-col-transparent: transparent;
--sls-col-warn: rgba(var(--background-modifier-error-rgb), 0.1);
--sls-col-warn-stripe1: var(--sls-col-transparent);
--sls-col-warn-stripe2: var(--sls-col-warn);
}
.sls-setting-menu-buttons {
border: 1px solid var(--sls-col-warn);
padding: 2px;
margin: 1px;
border-radius: 4px;
background-image: linear-gradient(-45deg,
var(--sls-col-warn-stripe1) 25%, var(--sls-col-warn-stripe2) 25%, var(--sls-col-warn-stripe2) 50%,
var(--sls-col-warn-stripe1) 50%, var(--sls-col-warn-stripe1) 75%, var(--sls-col-warn-stripe2) 75%, var(--sls-col-warn-stripe2));
background-size: 30px 30px;
display: flex;
flex-direction: row;
justify-content: flex-end;
padding: 0.5em 0.25em;
justify-content: center;
align-items: center;
/* transition: background-position 1s; */
animation: sls-scroll-warn 1s linear 0s infinite;
}
@keyframes sls-scroll-warn {
0% {
background-position: 0 0;
}
100% {
background-position: 30px 0;
}
}
.sls-setting-menu-buttons label {
margin-right: auto;
flex-grow: 1;
color: var(--text-warning);
}
.sls-setting-label {
flex-grow: 1;
display: inline-flex;
justify-content: center;
}
.setting-collapsed {
display: none;
}
.sls-plugins-tbl-buttons {
text-align: right;
}
.sls-plugins-tbl-buttons button {
flex-grow: 0;
padding: 6px 10px;
}
.sls-plugins-tbl-device-head {
background-color: var(--background-secondary-alt);
color: var(--text-accent);
}
.op-flex {
display: flex;
}
.op-flex input {
display: inline-flex;
flex-grow: 1;
margin-bottom: 8px;
}
.op-info {
display: inline-flex;
flex-grow: 1;
border-bottom: 1px solid var(--background-modifier-border);
width: 100%;
margin-bottom: 4px;
padding-bottom: 4px;
}
.history-added {
color: var(--text-on-accent);
background-color: var(--text-accent);
}
.history-normal {
color: var(--text-normal);
}
.history-deleted {
color: var(--text-on-accent);
background-color: var(--text-muted);
text-decoration: line-through;
}
.ob-btn-config-fix label {
margin-right: 40px;
}
.ob-btn-config-info {
border: 1px solid salmon;
padding: 2px;
margin: 1px;
border-radius: 4px;
}
.ob-btn-config-head {
padding: 2px;
margin: 1px;
border-radius: 4px;
}
.isWizard .wizardHidden {
display: none;
}
.sls-setting:not(.isWizard) .wizardOnly {
display: none;
}
.sls-item-dirty::before {
content: "✏";
}
.sls-item-dirty-help::after {
content: " ❓";
}
.sls-item-invalid-value {
background-color: rgba(var(--background-modifier-error-rgb), 0.3) !important;
}
.sls-setting-disabled input[type=text],
.sls-setting-disabled input[type=number],
.sls-setting-disabled input[type=password] {
filter: brightness(80%);
color: var(--text-muted);
}
.sls-setting-hidden {
display: none;
}
.sls-setting-obsolete {
background-image: linear-gradient(-45deg,
var(--sls-col-warn-stripe1) 25%, var(--sls-col-warn-stripe2) 25%, var(--sls-col-warn-stripe2) 50%,
var(--sls-col-warn-stripe1) 50%, var(--sls-col-warn-stripe1) 75%, var(--sls-col-warn-stripe2) 75%, var(--sls-col-warn-stripe2));
background-image: linear-gradient(-45deg,
transparent 25%, rgba(var(--background-secondary), 0.1) 25%, rgba(var(--background-secondary), 0.1) 50%, transparent 50%, transparent 75%, rgba(var(--background-secondary), 0.1) 75%, rgba(var(--background-secondary), 0.1));
background-size: 60px 60px;
}
.password-input>.setting-item-control>input {
-webkit-text-security: disc;
}
span.ls-mark-cr::after {
user-select: none;
content: "↲";
color: var(--text-muted);
font-size: 0.8em;
}
.deleted span.ls-mark-cr::after {
color: var(--text-on-accent);
}
.ls-imgdiff-wrap {
display: flex;
justify-content: center;
align-items: center;
}
.ls-imgdiff-wrap .overlay {
position: relative;
}
.ls-imgdiff-wrap .overlay .img-base {
position: relative;
top: 0;
left: 0;
}
.ls-imgdiff-wrap .overlay .img-overlay {
-webkit-filter: invert(100%) opacity(50%);
filter: invert(100%) opacity(50%);
position: absolute;
top: 0;
left: 0;
animation: ls-blink-diff 0.5s cubic-bezier(0.4, 0, 1, 1) infinite alternate;
}
@keyframes ls-blink-diff {
0% {
opacity: 0;
}
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.livesync-status {
user-select: none;
pointer-events: none;
height: auto;
min-height: 1em;
position: absolute;
background-color: transparent;
width: 100%;
padding: 10px;
padding-right: 16px;
top: var(--header-height);
z-index: calc(var(--layer-cover) + 1);
font-variant-numeric: tabular-nums;
tab-size: 4;
text-align: right;
white-space: pre-wrap;
display: inline-block;
color: var(--text-normal);
font-size: 80%;
}
.livesync-status div {
opacity: 0.6;
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
.livesync-status .livesync-status-loghistory {
text-align: left;
opacity: 0.4;
}
.livesync-status div.livesync-status-messagearea {
opacity: 0.6;
color: var(--text-on-accent);
background: var(--background-modifier-error);
-webkit-filter: unset;
filter: unset;
}
.menu-setting-poweruser-disabled .sls-setting-poweruser {
display: none;
}
.menu-setting-advanced-disabled .sls-setting-advanced {
display: none;
}
.menu-setting-edgecase-disabled .sls-setting-edgecase {
display: none;
}
.sls-setting-panel-title {
position: sticky;
}
.sls-setting-panel-title {
top: 2em;
background-color: rgba(var(--background-primary), 0.3);
backdrop-filter: blur(4px);
border-radius: 30%;
}
.sls-dialogue-note-wrapper {
display: flex;
justify-content: flex-end;
align-items: center;
}
.sls-dialogue-note-countdown {
font-size: 0.8em;
}
.sls-qr {
display: flex;
justify-content: center;
align-items: center;
max-width: max-content;
}
.sls-keypair pre {
max-width: 100%;
overflow-x: auto;
white-space: pre-wrap;
word-break: break-all;
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
{
"id": "obsidian-local-rest-api",
"name": "Local REST API with MCP",
"version": "4.1.3",
"minAppVersion": "1.4.0",
"description": "A secure REST API and Model Context Protocol (MCP) server for your vault.",
"author": "Adam Coddington",
"authorUrl": "https://adamcoddington.net/",
"isDesktopOnly": true
}
@@ -0,0 +1,55 @@
/* Sets all the text color to red! */
div.obsidian-local-rest-api-settings div.api-key-display {
margin-bottom: 20px;
}
div.obsidian-local-rest-api-settings pre {
font-size: 0.8em;
padding: 10px 20px;
margin: 10px 25px;
background-color: var(--background-modifier-cover);
font-family: monospace;
user-select: all;
}
div.obsidian-local-rest-api-settings div.setting-item-control {
min-width: 50%;
}
div.obsidian-local-rest-api-settings textarea {
width: 100%;
}
div.obsidian-local-rest-api-settings div.certificate-expired {
padding: 10px 20px;
border: 2px solid #ff0000;
}
div.obsidian-local-rest-api-settings div.certificate-expiring-soon {
padding: 10px 20px;
border: 2px solid #ffff00;
}
div.obsidian-local-rest-api-settings div.certificate-regeneration-recommended {
padding: 10px 20px;
border: 2px solid #ffff00;
}
div.obsidian-local-rest-api-settings table.api-urls tr {
width: 100%;
}
div.obsidian-local-rest-api-settings table.api-urls th,
div.obsidian-local-rest-api-settings table.api-urls td {
padding: 5px 25px;
}
div.obsidian-local-rest-api-settings table.api-urls tr.disabled td.name,
div.obsidian-local-rest-api-settings table.api-urls tr.disabled td.url {
text-decoration: line-through;
}
div.obsidian-local-rest-api-settings p {
padding: 0px 15px;
}
@@ -0,0 +1,944 @@
/* THIS IS A GENERATED/BUNDLED FILE BY ESBUILD */
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
// package.json
var require_package = __commonJS({
"package.json"(exports, module2) {
module2.exports = {
name: "obsidian-paste-image-rename",
version: "1.6.1",
main: "main.js",
scripts: {
start: "node esbuild.config.mjs",
build: "tsc -noEmit -skipLibCheck && BUILD_ENV=production node esbuild.config.mjs && cp manifest.json build",
version: "node version-bump.mjs && git add manifest.json versions.json",
release: "npm run build && gh release create ${npm_package_version} build/*"
},
keywords: [],
author: "Reorx",
license: "MIT",
devDependencies: {
"@types/node": "^18.11.18",
"@typescript-eslint/eslint-plugin": "^5.49.0",
"@typescript-eslint/parser": "^5.49.0",
"builtin-modules": "^3.3.0",
esbuild: "0.16.17",
obsidian: "^1.1.1",
tslib: "2.5.0",
typescript: "4.9.4"
},
dependencies: {
"cash-dom": "^8.1.2"
}
};
}
});
// src/main.ts
var main_exports = {};
__export(main_exports, {
default: () => PasteImageRenamePlugin
});
module.exports = __toCommonJS(main_exports);
var import_obsidian2 = require("obsidian");
// src/batch.ts
var import_obsidian = require("obsidian");
// src/utils.ts
var DEBUG = false;
if (DEBUG)
console.log("DEBUG is enabled");
function debugLog(...args) {
if (DEBUG) {
console.log(new Date().toISOString().slice(11, 23), ...args);
}
}
function createElementTree(rootEl, opts) {
const result = {
el: rootEl.createEl(opts.tag, opts),
children: []
};
const children = opts.children || [];
for (const child of children) {
result.children.push(createElementTree(result.el, child));
}
return result;
}
var path = {
// Credit: @creationix/path.js
join(...partSegments) {
let parts = [];
for (let i = 0, l = partSegments.length; i < l; i++) {
parts = parts.concat(partSegments[i].split("/"));
}
const newParts = [];
for (let i = 0, l = parts.length; i < l; i++) {
const part = parts[i];
if (!part || part === ".")
continue;
else
newParts.push(part);
}
if (parts[0] === "")
newParts.unshift("");
return newParts.join("/");
},
// returns the last part of a path, e.g. 'foo.jpg'
basename(fullpath) {
const sp = fullpath.split("/");
return sp[sp.length - 1];
},
// return extension without dot, e.g. 'jpg'
extension(fullpath) {
const positions = [...fullpath.matchAll(new RegExp("\\.", "gi"))].map((a) => a.index);
return fullpath.slice(positions[positions.length - 1] + 1);
}
};
var filenameNotAllowedChars = /[^\p{L}0-9~`!@$&*()\-_=+{};'",<.>? ]/ug;
var sanitizer = {
filename(s) {
return s.replace(filenameNotAllowedChars, "").trim();
},
delimiter(s) {
s = this.filename(s);
if (!s)
s = "-";
return s;
}
};
function escapeRegExp(s) {
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function lockInputMethodComposition(el) {
const state = {
lock: false
};
el.addEventListener("compositionstart", () => {
state.lock = true;
});
el.addEventListener("compositionend", () => {
state.lock = false;
});
return state;
}
// src/batch.ts
var ImageBatchRenameModal = class extends import_obsidian.Modal {
constructor(app, activeFile, renameFunc, onClose) {
super(app);
this.activeFile = activeFile;
this.renameFunc = renameFunc;
this.onCloseExtra = onClose;
this.state = {
namePattern: "",
extPattern: "",
nameReplace: "",
renameTasks: []
};
}
onOpen() {
this.containerEl.addClass("image-rename-modal");
const { contentEl, titleEl } = this;
titleEl.setText("Batch rename embeded files");
const namePatternSetting = new import_obsidian.Setting(contentEl).setName("Name pattern").setDesc("Please input the name pattern to match files (regex)").addText((text) => text.setValue(this.state.namePattern).onChange(
(value) => __async(this, null, function* () {
this.state.namePattern = value;
})
));
const npInputEl = namePatternSetting.controlEl.children[0];
npInputEl.focus();
const npInputState = lockInputMethodComposition(npInputEl);
npInputEl.addEventListener("keydown", (e) => __async(this, null, function* () {
if (e.key === "Enter" && !npInputState.lock) {
e.preventDefault();
if (!this.state.namePattern) {
errorEl.innerText = 'Error: "Name pattern" could not be empty';
errorEl.style.display = "block";
return;
}
this.matchImageNames(tbodyEl);
}
}));
const extPatternSetting = new import_obsidian.Setting(contentEl).setName("Extension pattern").setDesc("Please input the extension pattern to match files (regex)").addText((text) => text.setValue(this.state.extPattern).onChange(
(value) => __async(this, null, function* () {
this.state.extPattern = value;
})
));
const extInputEl = extPatternSetting.controlEl.children[0];
extInputEl.addEventListener("keydown", (e) => __async(this, null, function* () {
if (e.key === "Enter") {
e.preventDefault();
this.matchImageNames(tbodyEl);
}
}));
const nameReplaceSetting = new import_obsidian.Setting(contentEl).setName("Name replace").setDesc("Please input the string to replace the matched name (use $1, $2 for regex groups)").addText((text) => text.setValue(this.state.nameReplace).onChange(
(value) => __async(this, null, function* () {
this.state.nameReplace = value;
})
));
const nrInputEl = nameReplaceSetting.controlEl.children[0];
const nrInputState = lockInputMethodComposition(nrInputEl);
nrInputEl.addEventListener("keydown", (e) => __async(this, null, function* () {
if (e.key === "Enter" && !nrInputState.lock) {
e.preventDefault();
this.matchImageNames(tbodyEl);
}
}));
const matchedContainer = contentEl.createDiv({
cls: "matched-container"
});
const tableET = createElementTree(matchedContainer, {
tag: "table",
children: [
{
tag: "thead",
children: [
{
tag: "tr",
children: [
{
tag: "td",
text: "Original path"
},
{
tag: "td",
text: "Renamed Name"
}
]
}
]
},
{
tag: "tbody"
}
]
});
const tbodyEl = tableET.children[1].el;
const errorEl = contentEl.createDiv({
cls: "error",
attr: {
style: "display: none;"
}
});
new import_obsidian.Setting(contentEl).addButton((button) => {
button.setButtonText("Rename all").setClass("mod-cta").onClick(() => {
new ConfirmModal(
this.app,
"Confirm rename all",
`Are you sure? This will rename all the ${this.state.renameTasks.length} images matched the pattern.`,
() => {
this.renameAll();
this.close();
}
).open();
});
}).addButton((button) => {
button.setButtonText("Cancel").onClick(() => {
this.close();
});
});
}
onClose() {
const { contentEl } = this;
contentEl.empty();
this.onCloseExtra();
}
renameAll() {
return __async(this, null, function* () {
debugLog("renameAll", this.state);
for (const task of this.state.renameTasks) {
yield this.renameFunc(task.file, task.name);
}
});
}
matchImageNames(tbodyEl) {
const { state } = this;
const renameTasks = [];
tbodyEl.empty();
const fileCache = this.app.metadataCache.getFileCache(this.activeFile);
if (!fileCache || !fileCache.embeds)
return;
const namePatternRegex = new RegExp(state.namePattern, "g");
const extPatternRegex = new RegExp(state.extPattern);
fileCache.embeds.forEach((embed) => {
const file = this.app.metadataCache.getFirstLinkpathDest(embed.link, this.activeFile.path);
if (!file) {
console.warn("file not found", embed.link);
return;
}
if (state.extPattern) {
const m0 = extPatternRegex.exec(file.extension);
if (!m0)
return;
}
const stem = file.basename;
namePatternRegex.lastIndex = 0;
const m1 = namePatternRegex.exec(stem);
if (!m1)
return;
let renamedName = file.name;
if (state.nameReplace) {
namePatternRegex.lastIndex = 0;
renamedName = stem.replace(namePatternRegex, state.nameReplace);
renamedName = `${renamedName}.${file.extension}`;
}
renameTasks.push({
file,
name: renamedName
});
createElementTree(tbodyEl, {
tag: "tr",
children: [
{
tag: "td",
children: [
{
tag: "span",
text: file.name
},
{
tag: "div",
text: file.path,
attr: {
class: "file-path"
}
}
]
},
{
tag: "td",
children: [
{
tag: "span",
text: renamedName
},
{
tag: "div",
text: path.join(file.parent.path, renamedName),
attr: {
class: "file-path"
}
}
]
}
]
});
});
debugLog("new renameTasks", renameTasks);
state.renameTasks = renameTasks;
}
};
var ConfirmModal = class extends import_obsidian.Modal {
constructor(app, title, message, onConfirm) {
super(app);
this.title = title;
this.message = message;
this.onConfirm = onConfirm;
}
onOpen() {
const { contentEl, titleEl } = this;
titleEl.setText(this.title);
contentEl.createEl("p", {
text: this.message
});
new import_obsidian.Setting(contentEl).addButton((button) => {
button.setButtonText("Yes").setClass("mod-warning").onClick(() => {
this.onConfirm();
this.close();
});
}).addButton((button) => {
button.setButtonText("No").onClick(() => {
this.close();
});
});
}
};
// src/template.ts
var dateTmplRegex = /{{DATE:([^}]+)}}/gm;
var frontmatterTmplRegex = /{{frontmatter:([^}]+)}}/gm;
var replaceDateVar = (s, date) => {
const m = dateTmplRegex.exec(s);
if (!m)
return s;
return s.replace(m[0], date.format(m[1]));
};
var replaceFrontmatterVar = (s, frontmatter) => {
if (!frontmatter)
return s;
const m = frontmatterTmplRegex.exec(s);
if (!m)
return s;
return s.replace(m[0], frontmatter[m[1]] || "");
};
var renderTemplate = (tmpl, data, frontmatter) => {
const now = window.moment();
let text = tmpl;
let newtext;
while ((newtext = replaceDateVar(text, now)) != text) {
text = newtext;
}
while ((newtext = replaceFrontmatterVar(text, frontmatter)) != text) {
text = newtext;
}
text = text.replace(/{{imageNameKey}}/gm, data.imageNameKey).replace(/{{fileName}}/gm, data.fileName).replace(/{{dirName}}/gm, data.dirName).replace(/{{firstHeading}}/gm, data.firstHeading);
return text;
};
// src/main.ts
var DEFAULT_SETTINGS = {
imageNamePattern: "{{fileName}}",
dupNumberAtStart: false,
dupNumberDelimiter: "-",
dupNumberAlways: false,
autoRename: false,
handleAllAttachments: false,
excludeExtensionPattern: "",
disableRenameNotice: false
};
var PASTED_IMAGE_PREFIX = "Pasted image ";
var PasteImageRenamePlugin = class extends import_obsidian2.Plugin {
constructor() {
super(...arguments);
this.modals = [];
}
onload() {
return __async(this, null, function* () {
const pkg = require_package();
console.log(`Plugin loading: ${pkg.name} ${pkg.version} BUILD_ENV=${"production"}`);
yield this.loadSettings();
this.registerEvent(
this.app.vault.on("create", (file) => {
if (!(file instanceof import_obsidian2.TFile))
return;
const timeGapMs = new Date().getTime() - file.stat.ctime;
if (timeGapMs > 1e3)
return;
if (isMarkdownFile(file))
return;
if (isPastedImage(file)) {
debugLog("pasted image created", file);
this.startRenameProcess(file, this.settings.autoRename);
} else {
if (this.settings.handleAllAttachments) {
debugLog("handleAllAttachments for file", file);
if (this.testExcludeExtension(file)) {
debugLog("excluded file by ext", file);
return;
}
this.startRenameProcess(file, this.settings.autoRename);
}
}
})
);
const startBatchRenameProcess = () => {
this.openBatchRenameModal();
};
this.addCommand({
id: "batch-rename-embeded-files",
name: "Batch rename embeded files (in the current file)",
callback: startBatchRenameProcess
});
if (DEBUG) {
this.addRibbonIcon("wand-glyph", "Batch rename embeded files", startBatchRenameProcess);
}
const batchRenameAllImages = () => {
this.batchRenameAllImages();
};
this.addCommand({
id: "batch-rename-all-images",
name: "Batch rename all images instantly (in the current file)",
callback: batchRenameAllImages
});
if (DEBUG) {
this.addRibbonIcon("wand-glyph", "Batch rename all images instantly (in the current file)", batchRenameAllImages);
}
this.addSettingTab(new SettingTab(this.app, this));
});
}
startRenameProcess(file, autoRename = false) {
return __async(this, null, function* () {
const activeFile = this.getActiveFile();
if (!activeFile) {
new import_obsidian2.Notice("Error: No active file found.");
return;
}
const { stem, newName, isMeaningful } = this.generateNewName(file, activeFile);
debugLog("generated newName:", newName, isMeaningful);
if (!isMeaningful || !autoRename) {
this.openRenameModal(file, isMeaningful ? stem : "", activeFile.path);
return;
}
this.renameFile(file, newName, activeFile.path, true);
});
}
renameFile(file, inputNewName, sourcePath, replaceCurrentLine) {
return __async(this, null, function* () {
const { name: newName } = yield this.deduplicateNewName(inputNewName, file);
debugLog("deduplicated newName:", newName);
const originName = file.name;
const linkText = this.app.fileManager.generateMarkdownLink(file, sourcePath);
const newPath = path.join(file.parent.path, newName);
try {
yield this.app.fileManager.renameFile(file, newPath);
} catch (err) {
new import_obsidian2.Notice(`Failed to rename ${newName}: ${err}`);
throw err;
}
if (!replaceCurrentLine) {
return;
}
const newLinkText = this.app.fileManager.generateMarkdownLink(file, sourcePath);
debugLog("replace text", linkText, newLinkText);
const editor = this.getActiveEditor();
if (!editor) {
new import_obsidian2.Notice(`Failed to rename ${newName}: no active editor`);
return;
}
const cursor = editor.getCursor();
const line = editor.getLine(cursor.line);
const replacedLine = line.replace(linkText, newLinkText);
debugLog("current line -> replaced line", line, replacedLine);
editor.transaction({
changes: [
{
from: __spreadProps(__spreadValues({}, cursor), { ch: 0 }),
to: __spreadProps(__spreadValues({}, cursor), { ch: line.length }),
text: replacedLine
}
]
});
if (!this.settings.disableRenameNotice) {
new import_obsidian2.Notice(`Renamed ${originName} to ${newName}`);
}
});
}
openRenameModal(file, newName, sourcePath) {
const modal = new ImageRenameModal(
this.app,
file,
newName,
(confirmedName) => {
debugLog("confirmedName:", confirmedName);
this.renameFile(file, confirmedName, sourcePath, true);
},
() => {
this.modals.splice(this.modals.indexOf(modal), 1);
}
);
this.modals.push(modal);
modal.open();
debugLog("modals count", this.modals.length);
}
openBatchRenameModal() {
const activeFile = this.getActiveFile();
const modal = new ImageBatchRenameModal(
this.app,
activeFile,
(file, name) => __async(this, null, function* () {
yield this.renameFile(file, name, activeFile.path);
}),
() => {
this.modals.splice(this.modals.indexOf(modal), 1);
}
);
this.modals.push(modal);
modal.open();
}
batchRenameAllImages() {
return __async(this, null, function* () {
const activeFile = this.getActiveFile();
const fileCache = this.app.metadataCache.getFileCache(activeFile);
if (!fileCache || !fileCache.embeds)
return;
const extPatternRegex = /jpe?g|png|gif|tiff|webp/i;
for (const embed of fileCache.embeds) {
const file = this.app.metadataCache.getFirstLinkpathDest(embed.link, activeFile.path);
if (!file) {
console.warn("file not found", embed.link);
return;
}
const m0 = extPatternRegex.exec(file.extension);
if (!m0)
return;
const { newName, isMeaningful } = this.generateNewName(file, activeFile);
debugLog("generated newName:", newName, isMeaningful);
if (!isMeaningful) {
new import_obsidian2.Notice("Failed to batch rename images: the generated name is not meaningful");
break;
}
yield this.renameFile(file, newName, activeFile.path, false);
}
});
}
// returns a new name for the input file, with extension
generateNewName(file, activeFile) {
let imageNameKey = "";
let firstHeading = "";
let frontmatter;
const fileCache = this.app.metadataCache.getFileCache(activeFile);
if (fileCache) {
debugLog("frontmatter", fileCache.frontmatter);
frontmatter = fileCache.frontmatter;
imageNameKey = (frontmatter == null ? void 0 : frontmatter.imageNameKey) || "";
firstHeading = getFirstHeading(fileCache.headings);
} else {
console.warn("could not get file cache from active file", activeFile.name);
}
const stem = renderTemplate(
this.settings.imageNamePattern,
{
imageNameKey,
fileName: activeFile.basename,
dirName: activeFile.parent.name,
firstHeading
},
frontmatter
);
const meaninglessRegex = new RegExp(`[${this.settings.dupNumberDelimiter}\\s]`, "gm");
return {
stem,
newName: stem + "." + file.extension,
isMeaningful: stem.replace(meaninglessRegex, "") !== ""
};
}
// newName: foo.ext
deduplicateNewName(newName, file) {
return __async(this, null, function* () {
const dir = file.parent.path;
const listed = yield this.app.vault.adapter.list(dir);
debugLog("sibling files", listed);
const newNameExt = path.extension(newName), newNameStem = newName.slice(0, newName.length - newNameExt.length - 1), newNameStemEscaped = escapeRegExp(newNameStem), delimiter = this.settings.dupNumberDelimiter, delimiterEscaped = escapeRegExp(delimiter);
let dupNameRegex;
if (this.settings.dupNumberAtStart) {
dupNameRegex = new RegExp(
`^(?<number>\\d+)${delimiterEscaped}(?<name>${newNameStemEscaped})\\.${newNameExt}$`
);
} else {
dupNameRegex = new RegExp(
`^(?<name>${newNameStemEscaped})${delimiterEscaped}(?<number>\\d+)\\.${newNameExt}$`
);
}
debugLog("dupNameRegex", dupNameRegex);
const dupNameNumbers = [];
let isNewNameExist = false;
for (let sibling of listed.files) {
sibling = path.basename(sibling);
if (sibling == newName) {
isNewNameExist = true;
continue;
}
const m = dupNameRegex.exec(sibling);
if (!m)
continue;
dupNameNumbers.push(parseInt(m.groups.number));
}
if (isNewNameExist || this.settings.dupNumberAlways) {
const newNumber = dupNameNumbers.length > 0 ? Math.max(...dupNameNumbers) + 1 : 1;
if (this.settings.dupNumberAtStart) {
newName = `${newNumber}${delimiter}${newNameStem}.${newNameExt}`;
} else {
newName = `${newNameStem}${delimiter}${newNumber}.${newNameExt}`;
}
}
return {
name: newName,
stem: newName.slice(0, newName.length - newNameExt.length - 1),
extension: newNameExt
};
});
}
getActiveFile() {
const view = this.app.workspace.getActiveViewOfType(import_obsidian2.MarkdownView);
const file = view == null ? void 0 : view.file;
debugLog("active file", file == null ? void 0 : file.path);
return file;
}
getActiveEditor() {
const view = this.app.workspace.getActiveViewOfType(import_obsidian2.MarkdownView);
return view == null ? void 0 : view.editor;
}
onunload() {
this.modals.map((modal) => modal.close());
}
testExcludeExtension(file) {
const pattern = this.settings.excludeExtensionPattern;
if (!pattern)
return false;
return new RegExp(pattern).test(file.extension);
}
loadSettings() {
return __async(this, null, function* () {
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
});
}
saveSettings() {
return __async(this, null, function* () {
yield this.saveData(this.settings);
});
}
};
function getFirstHeading(headings) {
if (headings && headings.length > 0) {
for (const heading of headings) {
if (heading.level === 1) {
return heading.heading;
}
}
}
return "";
}
function isPastedImage(file) {
if (file instanceof import_obsidian2.TFile) {
if (file.name.startsWith(PASTED_IMAGE_PREFIX)) {
return true;
}
}
return false;
}
function isMarkdownFile(file) {
if (file instanceof import_obsidian2.TFile) {
if (file.extension === "md") {
return true;
}
}
return false;
}
var ImageRenameModal = class extends import_obsidian2.Modal {
constructor(app, src, stem, renameFunc, onClose) {
super(app);
this.src = src;
this.stem = stem;
this.renameFunc = renameFunc;
this.onCloseExtra = onClose;
}
onOpen() {
this.containerEl.addClass("image-rename-modal");
const { contentEl, titleEl } = this;
titleEl.setText("Rename image");
const imageContainer = contentEl.createDiv({
cls: "image-container"
});
imageContainer.createEl("img", {
attr: {
src: this.app.vault.getResourcePath(this.src)
}
});
let stem = this.stem;
const ext = this.src.extension;
const getNewName = (stem2) => stem2 + "." + ext;
const getNewPath = (stem2) => path.join(this.src.parent.path, getNewName(stem2));
const infoET = createElementTree(contentEl, {
tag: "ul",
cls: "info",
children: [
{
tag: "li",
children: [
{
tag: "span",
text: "Origin path"
},
{
tag: "span",
text: this.src.path
}
]
},
{
tag: "li",
children: [
{
tag: "span",
text: "New path"
},
{
tag: "span",
text: getNewPath(stem)
}
]
}
]
});
const doRename = () => __async(this, null, function* () {
debugLog("doRename", `stem=${stem}`);
this.renameFunc(getNewName(stem));
});
const nameSetting = new import_obsidian2.Setting(contentEl).setName("New name").setDesc("Please input the new name for the image (without extension)").addText((text) => text.setValue(stem).onChange(
(value) => __async(this, null, function* () {
stem = sanitizer.filename(value);
infoET.children[1].children[1].el.innerText = getNewPath(stem);
})
));
const nameInputEl = nameSetting.controlEl.children[0];
nameInputEl.focus();
const nameInputState = lockInputMethodComposition(nameInputEl);
nameInputEl.addEventListener("keydown", (e) => __async(this, null, function* () {
if (e.key === "Enter" && !nameInputState.lock) {
e.preventDefault();
if (!stem) {
errorEl.innerText = 'Error: "New name" could not be empty';
errorEl.style.display = "block";
return;
}
doRename();
this.close();
}
}));
const errorEl = contentEl.createDiv({
cls: "error",
attr: {
style: "display: none;"
}
});
new import_obsidian2.Setting(contentEl).addButton((button) => {
button.setButtonText("Rename").onClick(() => {
doRename();
this.close();
});
}).addButton((button) => {
button.setButtonText("Cancel").onClick(() => {
this.close();
});
});
}
onClose() {
const { contentEl } = this;
contentEl.empty();
this.onCloseExtra();
}
};
var imageNamePatternDesc = `
The pattern indicates how the new name should be generated.
Available variables:
- {{fileName}}: name of the active file, without ".md" extension.
- {{imageNameKey}}: this variable is read from the markdown file's frontmatter, from the same key "imageNameKey".
- {{DATE:$FORMAT}}: use "$FORMAT" to format the current date, "$FORMAT" must be a Moment.js format string, e.g. {{DATE:YYYY-MM-DD}}.
Here are some examples from pattern to image names (repeat in sequence), variables: fileName = "My note", imageNameKey = "foo":
- {{fileName}}: My note, My note-1, My note-2
- {{imageNameKey}}: foo, foo-1, foo-2
- {{imageNameKey}}-{{DATE:YYYYMMDD}}: foo-20220408, foo-20220408-1, foo-20220408-2
`;
var SettingTab = class extends import_obsidian2.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
display() {
const { containerEl } = this;
containerEl.empty();
new import_obsidian2.Setting(containerEl).setName("Image name pattern").setDesc(imageNamePatternDesc).setClass("long-description-setting-item").addText((text) => text.setPlaceholder("{{imageNameKey}}").setValue(this.plugin.settings.imageNamePattern).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.imageNamePattern = value;
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Duplicate number at start (or end)").setDesc(`If enabled, duplicate number will be added at the start as prefix for the image name, otherwise it will be added at the end as suffix for the image name.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.dupNumberAtStart).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.dupNumberAtStart = value;
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Duplicate number delimiter").setDesc(`The delimiter to generate the number prefix/suffix for duplicated names. For example, if the value is "-", the suffix will be like "-1", "-2", "-3", and the prefix will be like "1-", "2-", "3-". Only characters that are valid in file names are allowed.`).addText((text) => text.setValue(this.plugin.settings.dupNumberDelimiter).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.dupNumberDelimiter = sanitizer.delimiter(value);
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Always add duplicate number").setDesc(`If enabled, duplicate number will always be added to the image name. Otherwise, it will only be added when the name is duplicated.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.dupNumberAlways).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.dupNumberAlways = value;
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Auto rename").setDesc(`By default, the rename modal will always be shown to confirm before renaming, if this option is set, the image will be auto renamed after pasting.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.autoRename).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.autoRename = value;
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Handle all attachments").setDesc(`By default, the plugin only handles images that starts with "Pasted image " in name,
which is the prefix Obsidian uses to create images from pasted content.
If this option is set, the plugin will handle all attachments that are created in the vault.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.handleAllAttachments).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.handleAllAttachments = value;
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Exclude extension pattern").setDesc(`This option is only useful when "Handle all attachments" is enabled.
Write a Regex pattern to exclude certain extensions from being handled. Only the first line will be used.`).setClass("single-line-textarea").addTextArea((text) => text.setPlaceholder("docx?|xlsx?|pptx?|zip|rar").setValue(this.plugin.settings.excludeExtensionPattern).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.excludeExtensionPattern = value;
yield this.plugin.saveSettings();
})
));
new import_obsidian2.Setting(containerEl).setName("Disable rename notice").setDesc(`Turn off this option if you don't want to see the notice when renaming images.
Note that Obsidian may display a notice when a link has changed, this option cannot disable that.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.disableRenameNotice).onChange(
(value) => __async(this, null, function* () {
this.plugin.settings.disableRenameNotice = value;
yield this.plugin.saveSettings();
})
));
}
};
/* nosourcemap */
@@ -0,0 +1,10 @@
{
"id": "obsidian-paste-image-rename",
"name": "Paste image rename",
"version": "1.6.1",
"minAppVersion": "0.12.0",
"description": "Rename pasted images and all the other attchments added to the vault",
"author": "Reorx",
"authorUrl": "https://github.com/reorx",
"isDesktopOnly": false
}
@@ -0,0 +1,79 @@
/* src/styles.css */
:root {
--shadow-color: 0deg 0% 0%;
--shadow-elevation-medium:
0.5px 0.5px 0.7px hsl(var(--shadow-color) / 0.14),
1.1px 1.1px 1.5px -0.9px hsl(var(--shadow-color) / 0.12),
2.4px 2.5px 3.3px -1.8px hsl(var(--shadow-color) / 0.1),
5.3px 5.6px 7.3px -2.7px hsl(var(--shadow-color) / 0.09),
11px 11.4px 15.1px -3.6px hsl(var(--shadow-color) / 0.07);
}
.image-rename-modal .modal {
width: 65%;
min-width: 600px;
}
.image-rename-modal .modal-content {
padding: 10px 5px;
}
.image-rename-modal .image-container {
display: flex;
justify-content: center;
}
.image-rename-modal .info {
padding: 10px 0;
color: var(--text-muted);
user-select: text;
}
.image-rename-modal .info li > span:nth-of-type(1) {
display: inline-block;
width: 6em;
margin-right: .5em;
}
.image-rename-modal .info li > span:nth-of-type(1):after {
content: ":";
float: right;
}
.image-rename-modal .image-container img {
display: block;
max-height: 300px;
box-shadow: var(--shadow-elevation-medium);
}
.image-rename-modal .setting-item-control input {
min-width: 300px;
}
.image-rename-modal .error {
border: 1px solid rgb(201, 90, 90);
color: rgb(134, 22, 22);
padding: 10px;
}
.image-rename-modal table {
font-size: .9em;
line-height: 1.8;
margin-bottom: 1.5em;
user-select: text;
}
.image-rename-modal table td {
padding-right: 1em;
}
.image-rename-modal table thead td {
font-weight: 700;
}
.image-rename-modal table tbody td .file-path {
font-size: .8em;
color: var(--text-faint);
line-height: 1;
}
.long-description-setting-item {
flex-wrap: wrap;
}
.long-description-setting-item .setting-item-description {
white-space: pre-wrap;
line-height: 1.3em;
}
.long-description-setting-item .setting-item-control {
padding-top: 10px;
}
.long-description-setting-item .setting-item-control input {
min-width: 300px;
width: 50%;
}
@@ -0,0 +1,105 @@
{
"presets": {
"this_file": "path includes {{query.file.path}}",
"this_folder": "folder includes {{query.file.folder}}",
"this_folder_only": "filter by function task.file.folder === query.file.folder",
"this_root": "root includes {{query.file.root}}",
"hide_date_fields": "# Hide any values for all date fields\nhide due date\nhide scheduled date\nhide start date\nhide created date\nhide done date\nhide cancelled date",
"hide_non_date_fields": "# Hide all the non-date fields, but not tags\nhide id\nhide depends on\nhide recurrence rule\nhide on completion\nhide priority",
"hide_query_elements": "# Hide toolbar, postpone, edit and backlinks\nhide toolbar\nhide postpone button\nhide edit button\nhide backlinks",
"hide_everything": "# Hide everything except description and any tags\npreset hide_date_fields\npreset hide_non_date_fields\npreset hide_query_elements"
},
"globalQuery": "",
"globalFilter": "",
"removeGlobalFilter": false,
"taskFormat": "tasksPluginEmoji",
"setCreatedDate": false,
"setDoneDate": true,
"setCancelledDate": true,
"autoSuggestInEditor": true,
"autoSuggestMinMatch": 0,
"autoSuggestMaxItems": 20,
"provideAccessKeys": true,
"useFilenameAsScheduledDate": false,
"filenameAsScheduledDateFormat": "",
"filenameAsDateFolders": [],
"recurrenceOnNextLine": false,
"removeScheduledDateOnRecurrence": false,
"searchResults": {
"taskCountLocation": "bottom"
},
"statusSettings": {
"coreStatuses": [
{
"symbol": " ",
"name": "Todo",
"nextStatusSymbol": "x",
"availableAsCommand": true,
"type": "TODO"
},
{
"symbol": "x",
"name": "Done",
"nextStatusSymbol": " ",
"availableAsCommand": true,
"type": "DONE"
}
],
"customStatuses": [
{
"symbol": "/",
"name": "In Progress",
"nextStatusSymbol": "x",
"availableAsCommand": true,
"type": "IN_PROGRESS"
},
{
"symbol": "-",
"name": "Cancelled",
"nextStatusSymbol": " ",
"availableAsCommand": true,
"type": "CANCELLED"
}
]
},
"isShownInEditModal": {
"priority": true,
"recurrence": true,
"due": true,
"scheduled": true,
"start": true,
"before_this": true,
"after_this": true,
"status": true,
"created": true,
"done": true,
"cancelled": true
},
"dismissedNotices": {
"live-preview-callout-warning": false
},
"features": {
"INTERNAL_TESTING_ENABLED_BY_DEFAULT": true
},
"generalSettings": {},
"headingOpened": {
"Core Statuses": true,
"Custom Statuses": true
},
"debugSettings": {
"ignoreSortInstructions": false,
"showTaskHiddenData": false,
"recordTimings": false
},
"loggingOptions": {
"minLevels": {
"": "info",
"tasks": "info",
"tasks.Cache": "info",
"tasks.Events": "info",
"tasks.File": "info",
"tasks.Query": "info",
"tasks.Task": "info"
}
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,12 @@
{
"id": "obsidian-tasks-plugin",
"name": "Tasks",
"version": "8.2.2",
"minAppVersion": "1.8.7",
"description": "Track tasks across your vault. Supports due dates, recurring tasks, done dates, sub-set of checklist items, and filtering.",
"helpUrl": "https://publish.obsidian.md/tasks/",
"author": "Clare Macrae and Ilyas Landikov (created by Martin Schenck)",
"authorUrl": "https://github.com/obsidian-tasks-group",
"fundingUrl": "https://github.com/sponsors/claremacrae",
"isDesktopOnly": false
}
File diff suppressed because one or more lines are too long
+43
View File
@@ -0,0 +1,43 @@
{
"useCache": true,
"hideExcluded": false,
"recencyBoost": "0",
"downrankedFoldersFilters": [],
"ignoreDiacritics": true,
"ignoreArabicDiacritics": false,
"indexedFileTypes": [],
"indexFilesWithoutExtension": false,
"displayTitle": "",
"PDFIndexing": false,
"officeIndexing": false,
"imagesIndexing": false,
"aiImageIndexing": false,
"unsupportedFilesIndexing": "default",
"splitCamelCase": false,
"openInNewPane": false,
"vimLikeNavigationShortcut": false,
"ribbonIcon": true,
"showExcerpt": true,
"maxEmbeds": 5,
"renderLineReturnInExcerpts": true,
"showCreateButton": false,
"highlight": true,
"showPreviousQueryResults": true,
"simpleSearch": false,
"tokenizeUrls": false,
"fuzziness": "1",
"weightBasename": 10,
"weightDirectory": 7,
"weightH1": 6,
"weightH2": 5,
"weightH3": 4,
"weightUnmarkedTags": 2,
"weightCustomProperties": [],
"httpApiEnabled": false,
"httpApiPort": "51361",
"httpApiNotice": true,
"welcomeMessage": "1.21.0",
"verboseLogging": false,
"DANGER_httpHost": null,
"DANGER_forceSaveCache": false
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,14 @@
{
"id": "omnisearch",
"name": "Omnisearch",
"version": "1.29.3",
"minAppVersion": "1.7.2",
"description": "A search engine that just works.",
"author": "Simon Cambier",
"authorUrl": "https://scambier.xyz",
"fundingUrl": {
"Github": "https://github.com/sponsors/scambier",
"Ko-fi": "https://ko-fi.com/scambier"
},
"isDesktopOnly": false
}
+150
View File
@@ -0,0 +1,150 @@
.omnisearch-modal {
}
.omnisearch-result {
white-space: normal;
display: flex;
flex-direction: row;
/* justify-content: space-between; */
flex-wrap: nowrap;
}
.omnisearch-result__title-container {
display: flex;
align-items: center;
justify-content: space-between;
column-gap: 5px;
flex-wrap: wrap;
}
.omnisearch-result__title {
white-space: pre-wrap;
align-items: center;
display: flex;
gap: 5px;
}
.omnisearch-result__title > span {
}
.omnisearch-result__folder-path {
font-size: 0.75rem;
align-items: center;
display: flex;
gap: 5px;
color: var(--text-muted);
}
.omnisearch-result__extension {
font-size: 0.7rem;
color: var(--text-muted);
}
.omnisearch-result__counter {
font-size: 0.7rem;
color: var(--text-muted);
}
.omnisearch-result__body {
white-space: normal;
font-size: small;
word-wrap: normal;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
color: var(--text-muted);
margin-inline-start: 0.5em;
}
.omnisearch-result__embed {
margin-left: 1em;
}
.omnisearch-result__image-container {
flex-basis: 20%;
text-align: end;
}
.omnisearch-highlight {
}
.omnisearch-default-highlight {
text-decoration: underline;
text-decoration-color: var(--text-highlight-bg);
text-decoration-thickness: 3px;
text-underline-offset: -1px;
text-decoration-skip-ink: none;
}
.omnisearch-input-container {
display: flex;
align-items: center;
flex-direction: row;
gap: 5px;
}
.omnisearch-result__icon {
display: inline-block;
vertical-align: middle;
width: 16px;
height: 16px;
margin-right: 4px;
}
.omnisearch-result__icon svg {
width: 100%;
height: 100%;
}
.omnisearch-result__icon--emoji {
font-size: 16px;
vertical-align: middle;
margin-right: 4px;
}
@media only screen and (max-width: 600px) {
.omnisearch-input-container {
flex-direction: column;
}
.omnisearch-input-container__buttons {
display: flex;
flex-direction: row;
width: 100%;
padding: 0 1em 0 1em;
gap: 1em;
}
.omnisearch-input-container__buttons > button {
flex-grow: 1;
}
}
@media only screen and (min-width: 600px) {
.omnisearch-input-container__buttons {
margin-inline-end: 1em;
}
}
.omnisearch-input-field {
position: relative;
flex-grow: 1;
}
.omnisearch-result-highlight .cm-content ::selection,
.omnisearch-result-highlight .cm-line::selection {
background-color: var(
--omnisearch-highlight-color,
rgba(222, 183, 110, 1)
) !important;
color: var(--omnisearch-highlight-text-color, black) !important;
}
.omnisearch-result-highlight .cm-selectionLayer .cm-selectionBackground {
background-color: var(
--omnisearch-highlight-color,
rgba(222, 183, 110, 1)
) !important;
}
@@ -0,0 +1,164 @@
{
"recentFiles": [
{
"basename": "Secure Server Build",
"path": "Linux/Security/Secure Server Build.md"
},
{
"basename": "IP Address Tracking",
"path": "IP Address Tracking.md"
},
{
"basename": "Configuring Arr Stack",
"path": "Application Install Notes/ArrStack - Testing/Configuring Arr Stack.md"
},
{
"basename": "arrstack One-command media server (SonarrRadarrProwlarrqBittorrent behind a VPN). Now maintained as SparkBox → tomsparkbox.com",
"path": "Application Install Notes/ArrStack - Testing/arrstack One-command media server (SonarrRadarrProwlarrqBittorrent behind a VPN). Now maintained as SparkBox → tomsparkbox.com.md"
},
{
"basename": "wg-down.sh",
"path": "Scripts/wireguard/wg-down.sh.md"
},
{
"basename": "APT - Update and Upgrade",
"path": "Scripts/APT - Update and Upgrade.md"
},
{
"basename": "Initial Server Setup with Debian-Based Distributions",
"path": "Linux/Security/Initial Server Setup with Debian-Based Distributions.md"
},
{
"basename": "zshrc - Zsh aliases and functions",
"path": "Linux/zshrc - Zsh aliases and functions.md"
},
{
"basename": "SSH Config file for desktop",
"path": "Linux/SSH Config file for desktop.md"
},
{
"basename": "Automatic Deployment Rollback",
"path": "Learning CI-CD/Automatic Deployment Rollback.md"
},
{
"basename": "Build & Push to Gitea Container Registry First",
"path": "Learning CI-CD/Build & Push to Gitea Container Registry First.md"
},
{
"basename": "Handle Local Storage Path Differences",
"path": "Learning CI-CD/Handle Local Storage Path Differences.md"
},
{
"basename": "README",
"path": "Desktop/Chemoi_Doc/dotfiles_samples/LoganDonley/README.md"
},
{
"basename": "ChezmoiNotes",
"path": "Desktop/Chemoi_Doc/ChezmoiNotes.md"
},
{
"basename": "Installing Targus Display Driver",
"path": "Desktop/Installing Targus Display Driver.md"
},
{
"basename": "Asusctl",
"path": "Desktop/Asusctl.md"
},
{
"basename": "web-application-firewall-waf",
"path": "Bookstack/web-application-firewall-waf.md"
},
{
"basename": "scripts",
"path": "Bookstack/scripts.md"
},
{
"basename": "Hestia Setup",
"path": "Application Install Notes/Hestia Setup.md"
},
{
"basename": "Hermes agent Troubleshooting",
"path": "Hermes agent Troubleshooting.md"
},
{
"basename": "AI - Persona entries",
"path": "AI - Persona entries.md"
},
{
"basename": "rClone sync to OneDrive",
"path": "Application Install Notes/rClone sync to OneDrive.md"
},
{
"basename": "Hermes agent Troubleshooting",
"path": "AI Brain/Hermes agent Troubleshooting.md"
},
{
"basename": "Project_Docker_Boilerplates_Master",
"path": "AI Brain/Project_Docker_Boilerplates_Master.md"
},
{
"basename": "Initial Server Setup with Windows Server 2019",
"path": "Microsoft Windows/Initial Server Setup with Windows Server 2019.md"
},
{
"basename": "Git",
"path": "Cheat Sheets/Git.md"
},
{
"basename": "ARRSTACK CONFIG",
"path": "Application Install Notes/ArrStack - Testing/ARRSTACK CONFIG.md"
},
{
"basename": "Trilium Notes - Install Syncing Server and Desktop App",
"path": "Application Install Notes/Docker Apps/Trilium Notes - Install Syncing Server and Desktop App.md"
},
{
"basename": "Watchtower - Update Docker Containers Automatically 1",
"path": "Application Install Notes/Docker Apps/Watchtower - Update Docker Containers Automatically 1.md"
},
{
"basename": "Portainer",
"path": "Application Install Notes/Docker Apps/Portainer.md"
},
{
"basename": "CheckMK - Open Source Network, Server, and Machine Monitoring",
"path": "Application Install Notes/Docker Apps/CheckMK - Open Source Network, Server, and Machine Monitoring.md"
},
{
"basename": "Zabbix - Setup and Install",
"path": "Application Install Notes/Docker Apps/Zabbix - Setup and Install.md"
},
{
"basename": "wg-easy - install",
"path": "Application Install Notes/Docker Apps/wg-easy - install.md"
},
{
"basename": "Authelia - Setup and Install",
"path": "Application Install Notes/Docker Apps/Authelia - Setup and Install.md"
},
{
"basename": "Authentik - Install and Setup",
"path": "Application Install Notes/Docker Apps/Authentik - Install and Setup.md"
},
{
"basename": "AI - Persona entries",
"path": "AI Brain/AI - Persona entries.md"
},
{
"basename": "Docker Install Script",
"path": "Application Install Notes/Docker Apps/Docker Install Script.md"
},
{
"basename": "arrstack",
"path": "Bookstack/arrstack.md"
},
{
"basename": "docker",
"path": "Bookstack/docker.md"
}
],
"omittedPaths": [],
"omittedTags": [],
"updateOn": "file-open",
"omitBookmarks": false
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
{
"id": "recent-files-obsidian",
"name": "Recent Files",
"version": "1.7.9",
"minAppVersion": "0.16.3",
"description": "List files by most recently opened.",
"author": "Tony Grosinger",
"authorUrl": "https://grosinger.net",
"isDesktopOnly": false,
"fundingUrl": {
"Github Sponsor": "https://github.com/sponsors/tgrosinger",
"Buy me a Coffee": "https://buymeacoffee.com/tgrosinger",
"Paypal": "https://paypal.me/tgrosinger"
}
}
@@ -0,0 +1,34 @@
.recent-files-file {
.tree-item-spacer {
flex-grow: 1;
}
}
.recent-files-title {
justify-content: flex-start;
align-items: unset;
}
.recent-files-file-delete {
justify-content: right;
display: none;
}
.recent-files-title:hover .recent-files-file-delete {
display: flex;
cursor: var(--cursor);
}
.recent-files-file-delete:hover {
color: var(--nav-item-color-hover);
}
.recent-files-donation {
width: 70%;
margin: 0 auto;
text-align: center;
}
.recent-files-donate-button {
margin: 10px;
}
+512
View File
@@ -0,0 +1,512 @@
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __export = (target, all) => {
__markAsModule(target);
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __reExport = (target, module2, desc) => {
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
for (let key of __getOwnPropNames(module2))
if (!__hasOwnProp.call(target, key) && key !== "default")
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
}
return target;
};
var __toModule = (module2) => {
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
};
var __publicField = (obj, key, value) => {
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
return value;
};
// src/main.ts
__export(exports, {
default: () => SettingsSearch
});
var import_obsidian = __toModule(require("obsidian"));
// node_modules/monkey-around/mjs/index.js
function around(obj, factories) {
const removers = Object.keys(factories).map((key) => around1(obj, key, factories[key]));
return removers.length === 1 ? removers[0] : function() {
removers.forEach((r) => r());
};
}
function around1(obj, method, createWrapper) {
const original = obj[method], hadOwn = obj.hasOwnProperty(method);
let current = createWrapper(original);
if (original)
Object.setPrototypeOf(current, original);
Object.setPrototypeOf(wrapper, current);
obj[method] = wrapper;
return remove;
function wrapper(...args) {
if (current === original && obj[method] === wrapper)
remove();
return current.apply(this, args);
}
function remove() {
if (obj[method] === wrapper) {
if (hadOwn)
obj[method] = original;
else
delete obj[method];
}
if (current === original)
return;
current = original;
Object.setPrototypeOf(wrapper, original || Function);
}
}
// src/main.ts
var SettingsSearch = class extends import_obsidian.Plugin {
constructor() {
super(...arguments);
__publicField(this, "settingsSearchEl", createDiv("settings-search-container vertical-tab-header-group"));
__publicField(this, "settingsResultsContainerEl", createDiv("settings-search-results-container vertical-tab-content"));
__publicField(this, "settingsNavItemContainer", this.settingsSearchEl.createDiv("vertical-tab-header-group-items").createDiv("vertical-tab-nav-item settings-search-input"));
__publicField(this, "settingsResultsEl");
__publicField(this, "search");
__publicField(this, "locale");
__publicField(this, "resources", []);
__publicField(this, "results", []);
__publicField(this, "loaded", false);
__publicField(this, "tabIndex", 0);
__publicField(this, "pluginTabIndex", 0);
__publicField(this, "seen", []);
__publicField(this, "settingCache", new Map());
__publicField(this, "searchAppended", false);
__publicField(this, "activeIndex", -1);
__publicField(this, "activeSetting");
__publicField(this, "scope", new import_obsidian.Scope(this.app.scope));
__publicField(this, "mobileContainers", []);
}
async onload() {
(window["SettingsSearch"] = {
addResources: this.addResources.bind(this),
removeResources: this.removeResources.bind(this),
removeTabResources: this.removeTabResources.bind(this)
}) && this.register(() => delete window["SettingsSearch"]);
this.app.workspace.onLayoutReady(async () => {
this.settingsResultsContainerEl.createEl("h3", {
text: "Settings Search Results"
});
this.settingsResultsEl = this.settingsResultsContainerEl.createDiv("settings-search-results");
this.buildScope();
this.buildSearch();
this.buildResources();
this.buildPluginResources();
this.patchSettings();
this.loaded = true;
this.app.workspace.trigger("settings-search-loaded");
});
}
buildResources() {
const tab = this.app.setting.settingTabs[this.tabIndex];
if (tab && tab.id !== void 0 && !this.seen.includes(tab.id)) {
this.getTabResources(tab);
this.tabIndex++;
setTimeout(() => this.buildResources());
}
}
buildPluginResources() {
const tab = this.app.setting.pluginTabs[this.pluginTabIndex];
if (tab) {
this.getTabResources(tab);
this.pluginTabIndex++;
setTimeout(() => this.buildPluginResources());
}
}
get manifests() {
return Object.values(this.app.plugins.manifests);
}
addResourceToCache(resource) {
if (!resource || !resource.text || !resource.name || !resource.tab) {
return new Error("A valid resource must be provided.");
}
let name;
if (resource.external) {
name = createFragment((el) => {
(0, import_obsidian.setIcon)(el.createSpan({
attr: {
"aria-label": "This setting was added by another plugin."
}
}), "info");
el.createSpan({ text: resource.text });
});
} else {
name = resource.text;
}
const setting = new import_obsidian.Setting(createDiv()).setName(name).setDesc(createFragment((e) => e.createDiv().innerHTML = resource.desc ?? ""));
if (resource.external) {
setting.settingEl.addClass("set-externally");
}
if (resource.tab == "community-plugins") {
let plugin = this.manifests.find((p) => p.name == resource.text);
if (plugin && this.app.plugins.getPlugin(plugin.id)?._loaded && this.app.setting.pluginTabs.find((t) => t.id == plugin.id)) {
setting.addExtraButton((b) => {
b.setTooltip(`Open ${resource.text} Settings`).onClick(() => {
this.app.setting.openTabById(plugin.id);
});
});
}
}
if (resource.tab == "plugins") {
const plugins = Object.values(this.app.internalPlugins.plugins);
const plugin = plugins.find((p) => p._loaded && p.instance.name == resource.text);
if (plugin && this.app.setting.pluginTabs.find((t) => t.id == plugin.instance.id)) {
setting.addExtraButton((b) => {
b.setTooltip(`Open ${resource.text} Settings`).onClick(() => {
this.app.setting.openTabById(plugin.instance.id);
});
});
}
}
setting.addExtraButton((b) => {
b.setIcon("forward-arrow").onClick(() => {
this.showResult(resource);
});
});
this.settingCache.set(resource, setting);
}
getResourceFromCache(resource) {
if (!this.settingCache.has(resource)) {
this.addResourceToCache(resource);
}
return this.settingCache.get(resource);
}
removeResourcesFromCache(resources) {
for (const resource of resources) {
this.settingCache.delete(resource);
}
}
addResources(...resources) {
for (const resource of resources) {
resource.external = true;
if (this.resources.find((k) => this.equivalent(resource, k)))
continue;
this.resources.push(resource);
this.addResourceToCache(resource);
}
return () => this.removeResources(...resources);
}
equivalent(resource1, resource2) {
return resource1.name == resource2.name && resource1.tab == resource2.tab && resource1.text == resource2.text && resource1.desc == resource2.desc && resource1.external == resource2.external;
}
removeResources(...resources) {
const removing = [];
const keys = [...this.settingCache.keys()];
for (const resource of resources) {
if (!resource || !resource.text || !resource.name || !resource.tab) {
continue;
}
resource.external = true;
this.resources = this.resources.filter((r) => !this.equivalent(resource, r));
removing.push(...keys.filter((k) => k == resource || this.equivalent(resource, k)));
}
this.removeResourcesFromCache(removing);
}
removeTabResources(tab) {
const removing = this.resources.filter((t) => t.tab == tab);
this.resources = this.resources.filter((t) => t.tab != tab);
this.removeResourcesFromCache(removing);
}
async getTabResources(tab) {
await tab.display();
const settings = tab.containerEl.querySelectorAll(".setting-item:not(.setting-item-header)");
for (const el of Array.from(settings)) {
const text = el.querySelector(".setting-item-name")?.textContent;
if (!text)
continue;
const desc = el.querySelector(".setting-item-description")?.innerHTML ?? "";
const resource = {
tab: tab.id,
name: tab.name,
text,
desc
};
this.resources.push(resource);
this.addResourceToCache(resource);
}
if (this.app.setting.activeTab?.id == tab.id)
return;
this.seen.push(tab.id);
tab.containerEl.detach();
tab.hide();
}
patchSettings() {
const self = this;
this.register(around(this.app.setting, {
onOpen: function(next) {
return function() {
next.apply(this);
if (!import_obsidian.Platform.isMobile)
self.search.inputEl.focus();
return next;
};
}
}));
this.register(around(this.app.setting, {
addSettingTab: function(next) {
return function(tab) {
if (tab && tab.id !== void 0 && !self.seen.includes(tab.id)) {
self.getTabResources(tab);
}
return next.call(this, tab);
};
}
}));
this.register(around(this.app.setting, {
removeSettingTab: function(next) {
return function(tab) {
if (this.isPluginSettingTab(tab)) {
self.removeTabResources(tab.id);
}
return next.call(this, tab);
};
}
}));
this.register(around(this.app.setting, {
openTab: function(next) {
return function(tab) {
self.searchAppended = false;
self.app.keymap.popScope(self.scope);
return next.call(this, tab);
};
},
openTabById: function(next) {
return function(tab) {
self.searchAppended = false;
self.app.keymap.popScope(self.scope);
return next.call(this, tab);
};
},
onClose: function(next) {
return function() {
if (import_obsidian.Platform.isMobile) {
self.detach();
}
return next.call(this);
};
}
}));
}
buildSearch() {
const tempSetting = new import_obsidian.Setting(createDiv()).addSearch((s) => {
this.search = s;
});
this.settingsNavItemContainer.append(tempSetting.controlEl);
tempSetting.settingEl.detach();
this.search.onChange((v) => {
this.onChange(v);
});
this.search.setPlaceholder("Search settings...");
this.app.setting.tabHeadersEl.prepend(this.settingsSearchEl);
}
buildScope() {
this.scope.register(["Ctrl"], "N", () => {
if (this.activeSetting) {
this.activeSetting.settingEl.removeClass("active");
}
this.activeIndex = ((this.activeIndex + 1) % this.results.length + this.results.length) % this.results.length;
this.centerActiveSetting();
});
this.scope.register([], "ArrowDown", () => {
if (this.activeSetting) {
this.activeSetting.settingEl.removeClass("active");
}
this.activeIndex = ((this.activeIndex + 1) % this.results.length + this.results.length) % this.results.length;
this.centerActiveSetting();
});
this.scope.register(["Ctrl"], "P", () => {
if (this.activeSetting) {
this.activeSetting.settingEl.removeClass("active");
}
this.activeIndex = ((this.activeIndex - 1) % this.results.length + this.results.length) % this.results.length;
this.centerActiveSetting();
});
this.scope.register([], "ArrowUp", () => {
if (this.activeSetting) {
this.activeSetting.settingEl.removeClass("active");
}
this.activeIndex = ((this.activeIndex - 1) % this.results.length + this.results.length) % this.results.length;
this.centerActiveSetting();
});
this.scope.register([], "Enter", () => {
if (this.activeSetting) {
this.showResult(this.results[this.activeIndex]);
}
});
}
centerActiveSetting() {
const result = this.results[this.activeIndex];
this.activeSetting = this.getResourceFromCache(result);
this.activeSetting.settingEl.addClass("active");
this.activeSetting.settingEl.scrollIntoView({
behavior: "auto",
block: "nearest"
});
}
detachFromMobile() {
if (import_obsidian.Platform.isMobile) {
this.settingsResultsContainerEl.detach();
for (const header of this.mobileContainers) {
this.app.setting.tabHeadersEl.append(header);
}
this.search.setValue("");
}
}
detachFromDesktop() {
if (import_obsidian.Platform.isDesktop) {
this.app.setting.openTabById(this.app.setting.lastTabId);
}
}
detach() {
this.detachFromDesktop();
this.detachFromMobile();
this.searchAppended = false;
}
onChange(v) {
if (!v) {
this.detach();
this.app.keymap.popScope(this.scope);
return;
}
if (!this.searchAppended) {
this.activeIndex = -1;
this.app.keymap.popScope(this.scope);
this.app.keymap.pushScope(this.scope);
if (this.activeSetting) {
this.activeSetting.settingEl.removeClass("active");
this.activeSetting = null;
}
if (!import_obsidian.Platform.isMobile) {
this.app.setting.activeTab.navEl.removeClass("is-active");
this.app.setting.tabContentContainer.empty();
this.app.setting.tabContentContainer.append(this.settingsResultsContainerEl);
} else {
const headers = this.app.setting.tabHeadersEl.querySelectorAll(".vertical-tab-header-group:not(.settings-search-container)");
for (const header of Array.from(headers)) {
this.mobileContainers.push(header);
header.detach();
}
this.app.setting.tabHeadersEl.append(this.settingsResultsContainerEl);
}
this.searchAppended = true;
}
this.appendResults(this.performFuzzySearch(v));
}
getMatchText(text, result) {
const matchElements = {};
return createFragment((content) => {
for (let i = 0; i < text.length; i++) {
let match = result.matches.find((m) => m[0] === i);
if (match) {
const index = result.matches.indexOf(match);
if (!matchElements[index]) {
matchElements[index] = createSpan("suggestion-highlight");
}
let element = matchElements[index];
content.appendChild(element);
element.appendText(text.substring(match[0], match[1]));
i += match[1] - match[0] - 1;
continue;
}
content.appendText(text[i]);
}
});
}
appendResults(results) {
this.settingsResultsEl.empty();
if (results.length) {
const headers = {};
for (const resource of results) {
if (!(resource.tab in headers)) {
headers[resource.tab] = this.settingsResultsEl.createDiv();
new import_obsidian.Setting(headers[resource.tab]).setHeading().setName(resource.name);
}
const setting = this.getResourceFromCache(resource);
headers[resource.tab].append(setting.settingEl);
}
} else {
this.settingsResultsEl.setText("No results found :(");
}
}
showResult(result) {
this.search.setValue("");
const tab = this.app.setting.settingTabs.find((t) => t.id == result.tab) ?? this.app.setting.pluginTabs.find((t) => t.id == result.tab);
if (!tab) {
new import_obsidian.Notice("There was an issue opening the setting tab.");
return;
}
this.app.setting.openTabById(tab.id);
this.app.keymap.popScope(this.scope);
this.detach();
try {
const names = tab.containerEl.querySelectorAll(".setting-item-name");
const el = Array.from(names).find((n) => n.textContent == result.text);
if (!el)
return;
const setting = el.closest(".setting-item");
if (!setting)
return;
if (tab.id == "obsidian-style-settings") {
let collapsed = setting.closest(".style-settings-container");
let previous = collapsed?.previousElementSibling;
while (previous != null && previous.hasClass("is-collapsed") && previous.hasClass("style-settings-heading")) {
previous.removeClass("is-collapsed");
collapsed = collapsed.parentElement?.closest(".style-settings-container");
previous = collapsed?.previousElementSibling;
}
}
let details = setting.closest("details");
while (details) {
details.setAttr("open", "open");
details = details.parentElement?.closest("details");
}
setting.scrollIntoView(true);
setting.addClass("is-flashing");
window.setTimeout(() => setting.removeClass("is-flashing"), 3e3);
} catch (e) {
console.error(e);
}
}
performFuzzySearch(input) {
const results = [], hotkeys = [];
for (const resource of this.resources) {
let result = (0, import_obsidian.prepareSimpleSearch)(input)(resource.text) ?? (0, import_obsidian.prepareSimpleSearch)(input)(resource.desc);
if (result) {
if (resource.tab == "hotkeys") {
hotkeys.push(resource);
} else {
results.push(resource);
}
}
}
this.results = [...results, ...hotkeys];
return this.results;
}
onunload() {
this.settingsSearchEl.detach();
this.settingsResultsEl.detach();
this.detach();
if (this.searchAppended && import_obsidian.Platform.isDesktop)
this.app.setting.openTabById(this.app.setting.lastTabId);
}
};
/* nosourcemap */
@@ -0,0 +1,10 @@
{
"id": "settings-search",
"name": "Settings Search",
"version": "1.3.10",
"minAppVersion": "0.12.17",
"author": "Jeremy Valentine",
"description": "Globally search settings in Obsidian.md",
"authorUrl": "https://github.com/valentine195",
"isDesktopOnly": false
}
@@ -0,0 +1,25 @@
/* src/assets/main.css */
.settings-search-container.vertical-tab-header-group {
padding-bottom: 0;
}
.settings-search-input {
padding-left: 6px;
}
.vertical-tab-nav-item.settings-search-input {
background-color: inherit !important;
}
.settings-search-input .setting-item-control {
display: block;
}
.settings-search-input .search-input-container {
margin: 0;
}
.settings-search-results .setting-item.active {
background-color: var(--background-secondary);
}
.settings-search-results .set-externally .setting-item-name {
display: flex;
gap: 0.5rem;
}
/* src/styles.css */
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,11 @@
{
"id": "supercharged-links-obsidian",
"name": "Supercharged Links",
"version": "0.13.10",
"minAppVersion": "1.11.0",
"description": "Add properties and menu options to links and style them!",
"author": "mdelobelle & Emile",
"authorUrl": "https://github.com/mdelobelle/mdelobelle/tree/main",
"helpUrl": "https://github.com/mdelobelle/obsidian_supercharged_links#readme",
"isDesktopOnly": false
}
@@ -0,0 +1,15 @@
.css-boilerplate-result {
width: 30em
}
div.supercharged-modal {
height: 70vh;
}
div.supercharged-modal h4 {
margin: 0;
}
span.data-link-text > a.cm-underline {
color: inherit;
}
@@ -0,0 +1,10 @@
/* WARNING: This file will be overwritten by the plugin.
Do not edit this file directly! First copy this file and rename it if you want to edit things. */
:root {
}
/* @settings
name: Supercharged Links
id: supercharged-links
settings:
*/
@@ -0,0 +1,9 @@
{
"name": "Dark Clarity",
"author": "chenbihao",
"authorUrl": "https://github.com/chenbihao",
"version": "1.2.1",
"repo": "chenbihao/obsidian-theme-dark-clarity",
"screenshot": "screenshot.png",
"modes": ["dark", "light"]
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
{
"name": "Dracula for Obsidian",
"version": "0.0.0",
"minAppVersion": "0.16.0",
"author": "jarodise"
}
@@ -0,0 +1,717 @@
:root
{
--font-size-normal: 19px;
--font-size-code: 16px;
--font-size-side-dock: 16px;
--font-size-side-dock-title: 18px;
--font-size-status-bar: 16px;
--font-size-h1: 24px;
--font-size-h2: 23px;
--font-size-h3: 22px;
--font-size-h4: 21px;
--font-size-h5: 20px;
--font-size-h6: 19px;
--font-family-editor: Avenir, Avenir Next, sans-serif;
--font-family-preview: Avenir, Avenir Next, sans-serif;
}
.theme-light,
.theme-dark {
--background-primary: #282a36;
--background-primary-alt: #44475a;
--background-secondary: #44475a;
--background-secondary-alt: #282a36;
--background-accent: #f8f8f2;
--background-modifier-border: #f8f8f2;
--background-modifier-form-field: rgba(0, 0, 0, 0.2);
--background-modifier-form-field-highlighted: rgba(0, 0, 0, 0.5);
--background-modifier-box-shadow: rgba(0, 0, 0, 0.3);
--background-modifier-success: #50fa7b; /*no sure*/
--background-modifier-error: #3d0000; /*no sure*/
--background-modifier-error-rgb: 61, 0, 0;
--background-modifier-error-hover: #470000;
--background-modifier-cover: rgba(0, 0, 0, 0.6);
--text-accent: #ffb86c;
--text-accent-hover: #8be9fd;
--text-normal: #f8f8f2;
--text-muted: #f8f8f2;
--text-faint: #bd93f9;
--text-highlight-bg: #ff5555;
--text-error: #ff79c6;
--text-error-hover: #ff79c6;
--text-selection: #6272a4; /* Chromium precess this color with alpha channel */
--text-on-accent: #bd93f9;
--interactive-normal: #ffb86c;
--interactive-hover: #ff5555;
--interactive-accent: #ffb86c;
--interactive-accent-rgb: 123, 108, 217;
--interactive-accent-hover: #ff5555;
--scrollbar-active-thumb-bg: rgba(255, 255, 255, 0.2);
--scrollbar-bg: rgba(255, 255, 255, 0.05);
--scrollbar-thumb-bg: rgba(255, 255, 255, 0.1);
--text-title-h1: #ff79c6;
--text-title-h2: #bd93f9;
--text-title-h3: #ff5555;
--text-title-h4: #ffb86c;
--text-title-h5: #50fa7b;
--text-title-h6: #8be9fd;
--inline-code: #bd93f9;
--code-block: #8be9fd;
--pre-code: #44475a;
--blockquote-border: #ffb86c;
--vim-cursor: #ff5555;
--border-color: #2b2727; /*also like transparent*/
}
/*-------------------------------------*/
/* Search the following lines */
/* to jump to specific section */
/*-------------------------------------*/
/* resize-handle and borders */
/* tags */
/* link */
/* Cursor */
/* basic format in EDITOR and PREVIEW */
/* Headings - EDITOR and PREVIEW */
/* Code block in Preview */
/* Code block in Editor */
/* Brackets */
/* Blockquote */
/* table */
/* Checkbox */
/* html in editor */
/* popover */
/* Side panel */
/* internal embedded link in preview */
/* graph view */
/* settings */
/* Hide side bar */
/* width of content */
/* at a rule line before ul list *
/* Hide Scrollbar (recommend for mac) */
/*-------------------------------------*/
/***************************************/
/* resize-handle and borders */
/***************************************/
/*vertical resize-handle*/
.workspace-split.mod-vertical > * > .workspace-leaf-resize-handle,
.workspace-split.mod-left-split > .workspace-leaf-resize-handle,
.workspace-split.mod-right-split > .workspace-leaf-resize-handle{
width: 1px !important;
background-color: var(--border-color);
}
/*horizontal resize-handle*/
.workspace-split.mod-horizontal > * > .workspace-leaf-resize-handle{
height: 1px !important;
background-color: var(--border-color);
}
/*workspace ribbon when collapsed*/
.workspace-ribbon.is-collapsed {
background-color: var(--background-primary-alt);
}
/*the vertical split*/
.workspace-split.mod-root .workspace-split.mod-vertical .workspace-leaf-content,
.workspace-split.mod-vertical > .workspace-split,
.workspace-split.mod-vertical > .workspace-leaf,
.workspace-tabs{
padding-right: 0px;
}
/*status-bar*/
.status-bar{
font-size: var(--font-size-status-bar);
background-color: var(--background-secondary-alt);
border-top: 0px;
}
.document-search-container{
border-top: 0px;
border-right: 0px;
z-index: inherit;
}
.workspace-ribbon.mod-left.is-collapsed{
border-right: 1px solid var(--border-color);
}
.workspace-ribbon.mod-right.is-collapsed{
border-left: 1px solid var(--border-color);
}
/*************************************/
/* tags */
/*************************************/
/* Tag hover in preview */
a.tag:hover {
color: var(--text-accent) !important;
}
/* Tag Color in editor and preview*/
.cm-hashtag, a.tag {
color: var(--text-accent-hover) !important;
text-decoration: none !important;
font-style: normal !important;
}
/*********************************/
/* link */
/*********************************/
/* link */
a,
.internal-link,
.cm-hmd-internal-link,
.cm-link,
.cm-formatting-link,
.cm-url {
text-decoration: none !important;
}
/* the url string in editor */
.cm-s-obsidian span.cm-string{
color: var(--text-accent-hover) !important;
}
/* make external links italics to differentiate */
a:not(.internal-link) {
font-style: italic;
}
/*footnote*/
.cm-s-obsidian pre.HyperMD-footnote span.cm-hmd-footnote,
.cm-s-obsidian span.cm-footref {
color: var(--text-accent) !important;
}
/***************************************/
/* Cursor */
/***************************************/
/* Cursor color and opacity */
.cm-fat-cursor .CodeMirror-cursor, .cm-animate-fat-cursor
{
width: 0.5em;
background: var(--vim-cursor);
opacity: 60% !important;
}
/**************************************/
/* basic format in EDITOR and PREVIEW */
/**************************************/
/* font for everything outside of editor/preview panes */
.app-container {
font-family: var(--font-family-preview);
}
/* set the text selection color for preview mode */
::selection {
background-color: var(--text-selection);
}
/* normal text outside of headings and code of editor */
.cm-s-obsidian, .mod-single-child .cm-s-obsidian {
font-family: var(--font-family-editor);
font-size: var(--font-size-normal);
}
/* normal text outside of headings and code of preview */
.markdown-preview-view, .mod-single-child .markdown-preview-view {
font-family: var(--font-family-editor);
font-size: var(--font-size-normal);
padding-top: 0px;
padding-left: 2% !important;
padding-right: 1% !important;
}
/* bold in preview and editor */
strong, .cm-strong {
font-weight: 600;
color: #50fa7b;
}
/* emphasis in preview and editor */
em, .cm-em {
color: var(--text-muted);
font-style: italic;
}
/* strikethrough in preview and editor */
s, .cm-strikethrough {
color: var(--text-muted);
}
/* list in editor */
.cm-s-obsidian span.cm-formatting-list {
color: var(--text-normal) !important;
}
/* horizontal line in preview */
.markdown-preview-view hr {
background-color: var(--text-faint) !important;
}
/* embedded images */
img:not(.emoji) {
display: block;
margin-left: auto;
margin-right: auto;
}
/* img hover zoom out img*/
img:hover {
transform: scale(1.04);
transition: transform 0.25s ease-in-out 0s;
}
.community-theme img:hover{
transform: none;
}
/*********************************/
/* Headings - EDITOR and PREVIEW */
/*********************************/
/* headings for editor and preview */
.cm-header-1, .markdown-preview-view h1
{
font-family: var(--font-family-editor);
font-weight: 500;
font-size: var(--font-size-h1);
color: var(--text-title-h1);
}
.cm-header-2, .markdown-preview-view h2
{
font-family: var(--font-family-editor);
font-weight: 500;
font-size: var(--font-size-h2);
color: var(--text-title-h2);
}
.cm-header-3, .markdown-preview-view h3
{
font-family: var(--font-family-editor);
font-weight: 500;
font-size: var(--font-size-h3);
color: var(--text-title-h3);
}
.cm-header-4, .markdown-preview-view h4
{
font-family: var(--font-family-editor);
font-weight: 500;
font-size: var(--font-size-h4);
color: var(--text-title-h4);
}
.cm-header-5, .markdown-preview-view h5
{
font-family: var(--font-family-editor);
font-weight: 500;
font-size: var(--font-size-h5);
color: var(--text-title-h5);
}
.cm-header-6, .markdown-preview-view h6
{
font-family: var(--font-family-editor);
font-weight: 500;
font-size: var(--font-size-h6);
color: var(--text-title-h6);
}
/***************************************/
/* Code block in Preview */
/***************************************/
/* code blocks in preview */
pre code {
font-family: monaco !important;
font-size: var(--font-size-code) !important;
padding: 6px !important;
line-height: normal;
display: block;
color: var(--code-block) !important;
}
/* padding of code blocks in preview */
.markdown-preview-view pre {
padding: 0px !important;
}
/* font-size of in-line block for preview */
.markdown-preview-view code
{
font-size: var(--font-size-code);
}
/* remove the shadow that typically affect light mode */
.theme-dark code[class*="language-"],
.theme-dark pre[class*="language-"],
.theme-light code[class*="language-"],
.theme-light pre[class*="language-"]
{
text-shadow: none !important;
color: var(--text-faint) !important;
background-color: var(--pre-code);
}
/***************************************/
/* Brackets */
/***************************************/
.cm-s-obsidian span.cm-formatting-link {
color: var(--text-accent) !important;
}
/***************************************/
/* Blockquote */
/***************************************/
/* for editor */
.cm-quote {
color: var(--text-normal) !important;
font-style: italic;
}
/* for preview */
.markdown-preview-view blockquote {
background-color: var(--pre-code);
border: 0px solid;
border-color: var(--blockquote-border) !important;
border-left-width: 4px !important;
border-radius: 0 8px 8px 0;
line-height: 1.5em;
margin: 30px 0px;
font-style: italic;
}
/***************************************/
/* table */
/***************************************/
th {
font-weight: 800 !important;
}
.markdown-preview-view th {
font-weight: 800;
background-color: var(--background-secondary) !important;
}
thead {
border-bottom: 3px solid var(--background-modifier-border);
}
.table {
padding: 4px;
line-height: normal;
display: block;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px;
}
/***************************************/
/* Checkbox */
/***************************************/
.markdown-preview-view .task-list-item-checkbox:checked::before {
content: '✓';
position: absolute;
color: var(--text-accent);
font-size:1em;
line-height: 1.25em;
width:1.2em;
text-align:center;
text-shadow: 0 0 0.1em var(--text-accent);
}
.markdown-preview-view .task-list-item-checkbox {
-webkit-appearance: none;
top: 0.2em !important;
right: 4px;
box-sizing: border-box;
border: 1px solid var(--text-muted);
position: relative;
width: 1.25em;
height: 1.25em;
margin: 0;
box-shadow: 0 0 0.1em var(--text-muted);
}
.checkbox-container {
background-color: var(--background-primary);
}
/***************************************/
/* popover */
/***************************************/
.popover{
border: 1px solid var(--border-color);
background-color: var(--background-secondary);
}
/***************************************/
/* Side panel */
/***************************************/
/* search result in backlink or file search */
.search-result-file-title {
font-size: 15px ;
}
.search-result-file-matches, .search-empty-state {
font-size: var(--font-size-side-dock);
}
/*decrease the spacing between result items*/
.search-result-file-title,
.search-result-file-match {
padding: 0px 10px;
}
.nav-file-title, .nav-folder-title {
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
border-top-left-radius: 0 !important;
border-top-right-radius: 0 !important;
}
/*backlink pane*/
.workspace-leaf-content[data-type="backlink"] .view-content{
background-color: var(--background-secondary);
}
.workspace-leaf-content[data-type="tag"] .tag-pane-tag-count,
.workspace-leaf-content[data-type="tag"] .tag-pane-tag-text {
font-size: var(--font-size-side-dock);
}
.workspace-leaf-content[data-type="backlink"] .search-result-file-matches {
font-size: var(--font-size-side-dock);
}
/***************************************/
/* internal embedded link in preview */
/***************************************/
/* Naked Embeds */
.markdown-embed-title { display: none; }
.markdown-preview-view .markdown-embed-content>:first-child { margin-top: 0; }
.markdown-preview-view .markdown-embed-content>:last-child { margin-bottom: 0; }
/*remove the following two line, you will get border and scroll*/
.markdown-preview-view .markdown-embed { border:none; padding:0; margin:0; }
.markdown-preview-view .markdown-embed-content
{
max-height: unset;
background-color: var(--background-secondary);
}
/* the link on the top right corner*/
.markdown-embed-link {
color: var(--text-faint) !important;
}
.markdown-embed-link:hover {
color: var(--text-accent) !important;
}
/***************************************/
/* graph view */
/***************************************/
.graph-view.color-circle,
.graph-view.color-fill-highlight,
.graph-view.color-line-highlight
{
color: var(--text-accent) !important;
}
.graph-view.color-text
{
color: var(--text-normal) !important;
}
.graph-view.color-line {
color: #6272a4;
}
.graph-view.color-fill{
color: var(--text-muted);
}
.workspace-leaf-content[data-type = "graph"] .view-content{
background-color: var(--background-primary);
}
/***************************************/
/* settings */
/***************************************/
.modal.mod-settings button:not(.mod-cta):hover {
background-color: var(--interactive-accent-hover);
}
/***************************************/
/* Hide side bar */
/***************************************/
.workspace-ribbon:not(:hover) .workspace-ribbon-collapse-btn,
.workspace-ribbon:not(:hover) .side-dock-actions,
.workspace-ribbon:not(:hover) .side-dock-settings {
display:none;
transition: all 300ms ease-in-out;}
.workspace-ribbon:not(:hover) {
width: 0px;
transition: all 300ms ease-in-out;}
.workspace-split.mod-left-split {margin-left: 0px;}
.workspace-split.mod-right-split {margin-right: 0px;}
/***************************************/
/* width of content */
/***************************************/
.markdown-source-view.is-readable-line-width .CodeMirror {
max-width: 900px;
margin-left: auto;
margin-right: auto;
}
.markdown-preview-view.is-readable-line-width .markdown-preview-section {
max-width: 900px;
margin-left: 30px;
margin-right: 30px;
}
/* header */
.theme-dark .view-header {
background-color: var(--background-primary) !important;
border-top: 1px solid var(--border-color) !important;
border-bottom: 1px solid var(--border-color) !important;
}
.theme-dark .view-header-title-container:after {
background: linear-gradient(to bottom, transparent, var(--background-primary)) !important;
}
.theme-dark .workspace-leaf.mod-active .view-header {
background-color: var(--background-secondary-alt) !important;
border-top: 0px !important;
border-bottom: 3px solid var(--interactive-accent) !important;
}
.workspace-leaf.mod-active .view-header-title-container:after {
background: linear-gradient(to bottom, transparent, var(--background-secondary-alt)) !important;
}
.workspace-leaf.mod-active .view-header-title,
.workspace-leaf.mod-active .view-header-icon
{
color: var(--background-modifier-border);
}
.view-header-title, .view-header-icon, .view-action{
color: var(--text-faint);
}
.view-header-title
{
font-size: 20px;
}
/***************************************/
/* at a rule line before ul list */
/***************************************/
ul ul { position: relative; }
ul ul::before {
content:'';
border-left: 1px solid var(--border-color);
position: absolute;
}
ul ul::before { left: -1em; top: 0; bottom: 0; }
/* rule line when there are checkboxes*/
ul .task-list-item ul::before {left: 0.15em !important}
/***************************************/
/* Code block in Editor */
/***************************************/
/* in-line block for editor */
.cm-s-obsidian span.cm-inline-code,
.cm-s-obsidian span.cm-inline-code.cm-hmd-indented-code,
.cm-s-obsidian span.cm-inline-code:not(.cm-formatting):not(.cm-hmd-indented-code)
{
background-color: var(--pre-code-bg);
color: var(--inline-code) !important;
bottom: 0px !important;
}
/* Editor CodeBlock TEXT Appearance */
.cm-s-obsidian pre.HyperMD-codeblock {
font-family: monaco !important;
font-size: var(--font-size-code) !important;
padding: 1px !important;
display: block;
color: var(--code-block) !important;
font-weight: 500;
text-indent: 0px !important;
}
/*remove the border of codeblock in editor */
.HyperMD-codeblock-bg{
border: 0px !important;
}
/*an active line highlight in vim normal mode
.cm-fat-cursor .CodeMirror-activeline .CodeMirror-linebackground{
background-color: var(--text-selection) !important;
} */
/* in-line block for preview */
code{
color: var(--inline-code) !important;
bottom: 0px !important;
}
/* graph css */
.theme-dark .graph-view.color-arrow {
color: #50fa7b;
}
.theme-dark .graph-view.color-fill-tag {
color: #ffb86c;
}
.theme-dark .graph-view.color-fill-attachment {
color: #ff5555;
}
.theme-dark .graph-view.color-fill-unresolved {
color: #6272a4;
}
.search-result-collapse-indicator {
position: absolute;
left: 0;
top: -3px;
color: var(--text-faint);
transition: transform 100ms ease-in-out;
padding: 0px !important;
}
@@ -0,0 +1,7 @@
{
"name": "Obsidianite",
"version": "2.0.2",
"minAppVersion": "1.1.0",
"author": "@bennyxguo",
"authorUrl": "https://github.com/bennyxguo"
}
File diff suppressed because it is too large Load Diff
+7
View File
@@ -0,0 +1,7 @@
{
"name": "Soloing",
"version": "1.1.0",
"minAppVersion": "1.1.0",
"author": "isax785",
"authorUrl": "https://github.com/isax785"
}

Some files were not shown because too many files have changed in this diff Show More