All Analyzed Sites - 26.6M

Just a moment...
theopract.gitlab.io
119 days ago
GOLDFUND - Blockchain and Cryptocurrency Investment to fund Precious Metals Mining
exchange.goldfund.io
119 days ago
Golioth Firmware SDK: Golioth Firmware SDK
firmware-sdk-docs.golioth.io
119 days ago
gluino.io
gluino.io
AI assistant
119 days ago
([^ log.error('Failed to download chat:', err) }) } ] ) // Prefix icon to title const modalTitle = shareChatModal.querySelector('h2'), titleIcon = icons.create({ key: 'speechBalloons' }) titleIcon.style.cssText = 'height: 23px ; width: 23px ; position: relative ; top: 5px ; right: 8px ;' + `fill: ${ env.ui.app.scheme == 'dark' ? 'white' : 'black' }` modalTitle.prepend(titleIcon) // Hide Dismiss button, localize other labels const modalBtns = shareChatModal.querySelectorAll('button') modalBtns[0].style.display = 'none' // hide Dismiss button if (!env.browser.language.startsWith('en')) // localize button labels modalBtns.forEach(btn => { if (/copy/i.test(btn.textContent)) btn.textContent = `${app.msgs.tooltip_copy} URL` else if (/visit/i.test(btn.textContent)) btn.textContent = app.msgs.btnLabel_visitPage else if (/download/i.test(btn.textContent)) btn.textContent = `${app.msgs.btnLabel_download} ${log.toTitleCase(app.msgs.btnLabel_convo)}` }) // Style elements shareChatModal.style.wordBreak = 'break-all' // since URL really long shareChatModal.querySelector('h2').style.justifySelf = 'center' shareChatModal.querySelector('p').style.cssText = 'text-align: center ; margin: 10px 0 -22px' shareChatModal.querySelector('.modal-buttons').style.cssText = 'justify-content: center' return shareChatModal }, stylize() { if (!this.styles) do***ent.head.append(this.styles = dom.create.elem('style')) this.styles.textContent = ( // Vars `:root { --modal-btn-***m: scale(1.055) ; --modal-btn-transition: transform 0.15s ease ; --settings-li-transition: transform 0.1s ease ; /* for Settings entry hover-***m */ --fg-transition: opacity 0.65s cubic-bezier(0.165,0.84,0.44,1), /* fade-in */ transform 0.55s cubic-bezier(0.165,0.84,0.44,1) !important ; /* move-in */ --bg-transition: background-color 0.25s ease !important } /* dim */` // Main modal styles + '@keyframes modal-***m-fade-out {' + '0% { opacity: 1 } 50% { opacity: 0.25 ; transform: scale(1.05) }' + '100% { opacity: 0 ; transform: scale(1.35) }}' + '.chatgpt-modal > div {' + 'padding: 17px 20px 24px 20px !important ;' // increase alert padding + 'background-color: white ; color: #202124 }' + '.chatgpt-modal p { margin: 14px 0 -29px 4px ; font-size: 1.28em ; line-height: 1.57 }' // pos/size modal msg + '.modal-buttons {' + `margin: 42px 4px ${ env.browser.isMobile ? '2px 4px' : '-3px -4px' } !important ; width: 100% }` + '.chatgpt-modal button {' // this.alert() buttons + `min-width: 113px ; padding: ${ env.browser.isMobile ? '5px' : '4px 15px' } !important ;` + 'cursor: pointer ; border-radius: 0 !important ; height: 39px ;' + 'border: 1px solid ' + ( env.ui.app.scheme == 'dark' ? 'white' : 'black' ) + ' !important }' + '.primary-modal-btn { background: black !important ; color: white !important }' + '.chatgpt-modal button:hover { background-color: #9cdaff !important ; color: black !important }' + ( env.ui.app.scheme == 'dark' ? // darkmode chatgpt.alert() styles ( '.chatgpt-modal > div, .chatgpt-modal button:not(.primary-modal-btn) {' + 'color: white !important }' + '.primary-modal-btn { background: hsl(186 100% 69%) !important ; color: black !important }' + '.chatgpt-modal a { color: #00cfff !important }' + '.chatgpt-modal button:hover {' + 'background-color: #00cfff !important ; color: black !important }' ) : '' ) + `.${modals.class} { display: grid ; place-items: center }` // for centered icon/logo + '[class*=modal-close-btn] {' + 'position: absolute !important ; float: right ; top: 14px !important ; right: 16px !important ;' + 'cursor: pointer ; width: 33px ; height: 33px ; border-radius: 20px }' + `[class*=modal-close-btn] path {${ env.ui.app.scheme == 'dark' ? 'stroke: white ; fill: white' : 'stroke: #9f9f9f ; fill: #9f9f9f' }}` + ( env.ui.app.scheme == 'dark' ? // invert dark mode hover paths '[class*=modal-close-btn]:hover path { stroke: black ; fill: black }' : '' ) + '[class*=modal-close-btn]:hover { background-color: #f2f2f2 }' // hover underlay + '[class*=modal-close-btn] svg { margin: 11.5px }' // center SVG for hover underlay + '[class*=-modal] h2 {' + 'font-size: 1.65rem ; line-height: 32px ; padding: 0 ; margin: 9px 0 -3px !important ;' + `${ env.browser.isMobile ? 'text-align: center' // center on mobile : 'justify-self: start' }}` // left-align on desktop + '[class*=-modal] p { justify-self: start ; font-size: 20px }' + `[class*=-modal] button { color: ${ env.ui.app.scheme == 'dark' ? 'white' : 'black' }; font-size: 12px !important ; background: none }` + '[class*=-modal-bg] {' + 'pointer-events: auto ;' // override any disabling from site modals + 'position: fixed ; top: 0 ; left: 0 ; width: 100% ; height: 100% ;' // expand to full view-port + 'display: flex ; justify-content: center ; align-items: center ; z-index: 9999 ;' // align + `transition: var(--bg-transition) ; /* dim */ -webkit-transition: var(--bg-transition) ; -moz-transition: var(--bg-transition) ; -o-transition: var(--bg-transition) ; -ms-transition: var(--bg-transition) }` + '[class*=-modal-bg].animated > div {' + 'z-index: 13456 ; opacity: 0.98 ; transform: trans***(0) translateY(0) }' + '[class$=-modal] {' // native modals + chatgpt.alert()s + 'position: absolute ;' // to be click-draggable + 'opacity: 0 ;' // to fade-in + `background-image: linear-gradient(180deg, ${ env.ui.app.scheme == 'dark' ? '#99a8a6 -200px, black 200px' : '#b6ebff -296px, white 171px' }) ;` + `border: 1px solid ${ env.ui.app.scheme == 'dark' ? 'white' : '#b5b5b5' } !important ;` + `color: ${ env.ui.app.scheme == 'dark' ? 'white' : 'black' };` + 'transform: trans***(-3px) translateY(7px) ;' // offset to move-in from + `transition: var(--fg-transition) ; /* fade-in + move-in */ -webkit-transition: var(--fg-transition) ; -moz-transition: var(--fg-transition) ; -o-transition: var(--fg-transition) ; -ms-transition: var(--fg-transition) } ${ env.browser.isMobile ? '' : `[class$=-modal] button:hover { transform: var(--modal-btn-***m) }`} ${ config.fgAnimationsDisabled ? '' : `[class$=-modal] button { ${ env.browser.isMobile ? '' : 'will-change: transform ;' } transition: var(--modal-btn-transition) ; -webkit-transition: var(--modal-btn-transition) ; -moz-transition: var(--modal-btn-transition) ; -o-transition: var(--modal-btn-transition) ; -ms-transition: var(--modal-btn-transition) }`}` // Settings modal + `#${app.slug}-settings { min-width: ${ env.browser.isPortrait ? 288 : 698 }px ; max-width: 75vw ; word-wrap: break-word ; margin: 12px 23px ; border-radius: 15px ; ${ env.ui.app.scheme == 'dark' ? 'stroke: white ; fill: white' : 'stroke: black ; fill: black' }; --shadow: 0 30px 60px rgba(0,0,0,0.12) ; box-shadow: var(--shadow) ; -webkit-box-shadow: var(--shadow) ; -moz-box-shadow: var(--shadow) }` + `#${app.slug}-settings-title {` + 'font-weight: bold ; line-height: 19px ; text-align: center ;' + `margin: 0 -6px ${ env.browser.isPortrait ? 2 : -15 }px 0 }` + `#${app.slug}-settings-title h4 {` + `font-size: ${ env.browser.isPortrait ? 22 : 29 }px ; font-weight: bold ;` + `margin: 0 0 ${ env.browser.isPortrait ? 9 : 27 }px }` + `#${app.slug}-settings ul {` + 'list-style: none ; padding: 0 ; margin-bottom: 2px ;' // hide bullets, close bottom gap + `width: ${ env.browser.isPortrait ? 100 : 50 }% }` // set width based on column cnt + ( env.browser.isPhone ? '' : ( `#${app.slug}-settings ul:first-of-type {` // color desktop middle separator + `border-right: 1px dotted ${ env.ui.app.scheme == 'dark' ? 'white' : 'black' }}` )) + `#${app.slug}-settings li {` + `color: ${ env.ui.app.scheme == 'dark' ? 'rgb(255,255,255,0.65)' : 'rgba(0,0,0,0.45)' };` // for text + `fill: ${ env.ui.app.scheme == 'dark' ? 'rgb(255,255,255,0.65)' : 'rgba(0,0,0,0.45)' };` // for icons + `stroke: ${ env.ui.app.scheme == 'dark' ? 'rgb(255,255,255,0.65)' : 'rgba(0,0,0,0.45)' };` // for icons + 'height: 24px ; padding: 6px 10px ; font-size: 13.5px ;' + `border-bottom: 1px dotted ${ env.ui.app.scheme == 'dark' ? 'white' : 'black' };` // add separators + 'border-radius: 3px ;' // slightly round highlight strip + `${ config.fgAnimationsDisabled || env.browser.isMobile ? '' : `transition: var(--settings-li-transition) ; -webkit-transition: var(--settings-li-transition) ; -moz-transition: var(--settings-li-transition) ; -o-transition: var(--settings-li-transition) ; -ms-transition: var(--settings-li-transition)` }}` + `#${app.slug}-settings li.active {` + `color: ${ env.ui.app.scheme == 'dark' ? 'rgb(255,255,255)' : 'rgba(0,0,0)' };` // for text + `fill: ${ env.ui.app.scheme == 'dark' ? 'rgb(255,255,255)' : 'rgba(0,0,0)' };` // for icons + `stroke: ${ env.ui.app.scheme == 'dark' ? 'rgb(255,255,255)' : 'rgba(0,0,0)' }}` // for icons + `#${app.slug}-settings li label { padding-right: 20px }` // right-pad labels so toggles don't hug + `#${app.slug}-settings li:last-of-type { border-bottom: none }` // remove last bottom-border + `#${app.slug}-settings li, #${app.slug}-settings li label { cursor: pointer }` // add finger on hover + `#${app.slug}-settings li:hover {` + 'background: rgba(100,149,237,0.88) ; color: white ; fill: white ; stroke: white ;' + `${ env.browser.isMobile ? '' : 'transform: scale(1.15)' }}` + `#${app.slug}-settings li > input { float: right } /* pos toggles */ #${app.slug}-settings li > .track { position: relative ; left: -1px ; bottom: -5.5px ; float: right ; background-color: #ccc ; width: 26px ; height: 13px ; border-radius: 28px ; ${ config.fgAnimationsDisabled ? '' : `transition: 0.4s ; -webkit-transition: 0.4s ; -moz-transition: 0.4s ; -o-transition: 0.4s ; -ms-transition: 0.4s` }} #${app.slug}-settings li .*** { position: absolute ; left: 1px ; bottom: 1px ; content: "" ; background-color: white ; width: 11px ; height: 11px ; border-radius: 28px ; ${ config.fgAnimationsDisabled ? '' : `transition: 0.2s ; -webkit-transition: 0.2s ; -moz-transition: 0.2s ; -o-transition: 0.2s ; -ms-transition: 0.2s` }}` + '#scheme-settings-entry > span { margin: 3px -2px 0 }' // align Scheme status + '#scheme-settings-entry > span > svg {' // v-align/left-pad Scheme status icon + 'position: relative ; top: 2px ; margin-left: 4px }' + ( config.fgAnimationsDisabled ? '' // spin cycle arrows icon when scheme is Auto : ( '#scheme-settings-entry svg[class*=arrowsCyclic],' + '.chatgpt-notif svg[class*=arrowsCyclic] { animation: rotate 5s linear infinite }' )) + `#about-settings-entry span { color: ${ env.ui.app.scheme == 'dark' ? '#28ee28' : 'green' }}` + '#about-settings-entry > span {' // outer About status span + `width: ${ env.browser.isPortrait ? '15vw' : '95px' }; height: 20px ; overflow: hidden ;` + `${ env.browser.isPortrait ? 'position: relative ; bottom: 3px ;' : '' }` // v-align + `${ config.fgAnimationsDisabled ? '' : ( // fade edges 'mask-image: linear-gradient(' + 'to right, transparent, black 20%, black 89%, transparent) ;' + '-webkit-mask-image: linear-gradient(' + 'to right, transparent, black 20%, black 89%, transparent)' )}}` + '#about-settings-entry > span > div {' + `text-wrap: nowrap ; ${ config.fgAnimationsDisabled ? '' : 'animation: ticker linear 75s infinite' }}` + '@keyframes ticker { 0% { transform: trans***(100%) } 100% { transform: trans***(-2000%) }}' + `.about-em { color: ${ env.ui.app.scheme == 'dark' ? 'white' : 'green' } !important }` ) }, update: { width: 377, available() { // Show modal const updateAvailModal = modals.alert(`🚀 ${app.msgs.alert_updateAvail}!`, // title `${app.msgs.alert_newerVer} ${app.name} ` // msg + `(v${app.latestVer}) ${app.msgs.alert_isAvail}! ` + '${app.msgs.link_viewChanges}`, function update() { // button modals.safeWinOpen(`${app.urls.update.gm}?t=${Date.now()}`) }, '', modals.update.width ) // Localize button labels if needed if (!env.browser.language.startsWith('en')) { const updateBtns = updateAvailModal.querySelectorAll('button') updateBtns[1].textContent = app.msgs.btnLabel_update updateBtns[0].textContent = app.msgs.btnLabel_dismiss } return updateAvailModal }, unavailable() { return modals.alert(`${app.msgs.alert_upToDate}!`, // title `${app.name} (v${app.version}) ${app.msgs.alert_isUpToDate}!`, // msg '', '', modals.update.width ) } } } // Run MAIN routine menus.toolbar.register() if (/udm=2(?:&|$)/.test(location.search)) return log.debug('Exited from Google Images') // Init UI props env.ui = { app: { scheme: config.scheme || ui.getScheme() }, site: { hasSidebar: !!do***ent.querySelector('[class*=kp-]'), scheme: ui.getScheme() } } // Create/ID/classify/listenerize/stylize APP container app.div = dom.create.elem('div', { id: app.slug, class: 'fade-in' }) themes.apply(config.theme) ; ui.addListeners.appDiv() ;['anc***d', 'expanded', 'sticky', 'wider'].forEach(mode => (config[mode] || config[`${mode}Sidebar`]) && app.div.classList.add(mode)) update.appStyle() ;['rpg', 'rpw'].forEach(cssType => // rising particles do***ent.head.append(dom.create.style(GM_getResourceText(`${cssType}CSS`)))) // Hide GF alert on GitHub if found if (location.host == 'github.com') { const gfAlert = [...do***ent.querySelectorAll('.markdown-alert')] .find(alert => alert.textContent.includes('Greasy Fork')) return !gfAlert ? undefined : gfAlert.style.display = 'none' } // APPEND to Google app.centerCol = do***ent.querySelector('#center_col') || do***ent.querySelector('#main') const appDivParent = env.browser.isMobile ? app.centerCol : do***ent.getElementById('rhs') // sidebar container if side snippets exist || (() => { // create new one if no side snippets exist const appDivParent = dom.create.elem('div') app.centerCol.insertAdjacentElement('afterend', appDivParent) return appDivParent })() appDivParent.prepend(app.div) setTimeout(() => app.div.classList.add('active'), 100) // fade in // ANCHOR GoogleGPT in Google AI Mode if (/udm=50(?:&|$)/.test(location.search)) { toggle.anchorMode('on') if (!env.browser.isMobile) { // hide Pin button + Anchor Mode setting dom.get.loadedElem(`#${app.slug}-pin-btn`).then(btn => btn.style.display = 'none') do***ent.head.append(dom.create.style('li#anc***d-settings-entry { display: none }')) } // Strip Google TRACKING } else do***ent.addEventListener(inputEvents.down, event => { let a = event.target ; while (a && !a.href) a = a.parentElement ; if (!a) return // find closest ancestor href a.removeAttribute('ping') // prevent pingback on link click if (a.getAttribute('onmousedown')?.includes('rwt(')) { a.removeAttribute('onmousedown') if (env.browser.isChrome) event.stopImmediatePropagation() // since inline listener still runs } let realURL = getRealURL(a) if (realURL) { a.href = realURL realURL = getRealURL(a) ; if (realURL) a.href = realURL // do again for old mobile UA } function getRealURL(a) { if (!a.protocol.startsWith('http')) return let url if ((a.hostname.startsWith('www.google.') || a.hostname == location.hostname) && ['/url', // mobile: /url?q= '/local_url', // Maps/Dito: /local_url?q= '/searchurl/rr.html', '/linkredirect'].includes(a.pathname)) { url = /[?&](?:q|url|dest)=((?:https?|ftp)[%:][^&]+)/.exec(a.search) // HTTP/FTP URLs if (url) return decodeURIComponent(url[1]) url = /[?&](?:q|url)=((?:%2[Ff]|\/)[^&]+)/.exec(a.search) // help pages, e.g. safe browsing (/url?...&q=%2Fsupport%2Fanswer...) if (url) return a.origin + decodeURIComponent(url[1]) url = /[#&]url=(https?[:%][^&]+)/.exec(a.hash) // Android intents (/searchurl/rr.html#...&url=...) if (url) return decodeURIComponent(url[1]) } if (a.hostname == 'googleweblight.com' && a.pathname == '/fp') { // Google Search w/ old mobile UA (e.g. Firefox 41) url = /[?&]u=((?:https?|ftp)[%:][^&]+)/.exec(a.search) if (url) return decodeURIComponent(url[1]) } } }, true) // invoke during capturing phase // REFERRALIZE links to support author setTimeout(() => do***ent.querySelectorAll('a[href^="https://www.amazon."]').forEach(anchor => { const url = new URL(anchor.href) ; url.searchParams.set('tag', 'kudo-ai-20') anchor.href = url.toString() }), 1500) // Init footer CTA to share feedback app.footerContent = dom.create.anchor(app.urls.discuss, app.msgs.link_shareFeedback) // AUTO-GEN reply or show STANDBY mode app.msgChain = [] ; const searchQuery = new URL(location.href).searchParams.get('q') if (config.autoGet || config.autoSummarize // Auto-Gen on || (config.prefixEnabled || config.suffixEnabled) // or Manual-Gen on && [config.prefixEnabled && location.href.includes('q=%2F'), // prefix required/present config.suffixEnabled // suffix required/present && /q=.*?(?:%3F|?|%EF%BC%9F)(?:&|$)/.test(location.href) ].filter(Boolean).length == (config.prefixEnabled + config.suffixEnabled) // validate both Manual-Gen modes ) { // auto-gen reply app.msgChain.push({ time: Date.now(), role: 'user', content: config.autoSummarize ? prompts.create('summarizeResults') : searchQuery }) get.reply({ msgs: app.msgChain, src: 'query' }) } else { // show Standby mode show.reply({ standby: true }) if (!config.rqDisabled) get.related(searchQuery) .then(queries => show.related(queries)) .catch(err => { log.error(err.message) ; api.tryNew(get.related) }) } // Observe DOM for new sidebar div#rhs created by other extensions to INSERT GoogleGPT to visually co-exist const sidebarObserver = new MutationObserver(() => { const newSidebar = do***ent.getElementById('rhs') if (newSidebar) { newSidebar.prepend(app.div) ; sidebarObserver.disconnect() } }) sidebarObserver.observe(do***ent.body, { subtree: true, childList: true }) setTimeout(() => sidebarObserver.disconnect(), 5000) // don't observe forever })()
greasyfork.googlegpt.io
119 days ago
HOME | SWANFALL ART
swanfall.art
SWANFALL ART | Experience art, from imagination to creation, fantasy to reality, mind to mind
119 days ago
github.googlegpt.io
119 days ago
GrantShares
docs.grantshares.io
119 days ago
Rishi Goutam—Data Scientist & Software Engineer | goutam.io
goutam.io
My projects, blog, resume…
119 days ago
Go screencasts | free Golang videos
goscreencasts.io
Explorez Go (Golang) avec Kafka et Redis pour créer des microservices robustes. Découvrez patterns d'architecture, API, et systèmes distribués performants.
119 days ago
greghale.io - Home
blog.greghale.io
119 days ago
ART UP MI
artupmionline.tilda.ws
119 days ago
Greppo
docs.greppo.io
119 days ago
Green Donut
greendonut.io
a port of facebook's dataloader utility, written in c# for .net core and .net framework.
119 days ago
Kevin Glover
glover.io
Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your do***ent head meta (for Google search results) and in your feed.xml site description.
119 days ago
Greg Virtucio
gvirtuc.io
I am Greg Virtucio. Also known as GV or gvirtucio.
119 days ago
Welcome to the HashLips Lab - HashLips Lab
lab.hashlips.io
119 days ago
halprin
halprin.io
119 days ago
hdoc: the modern C++ do***entation tool
docs.hdoc.io
Autogenerated API do***entation. Integrated Markdown pages. Instant search. Create great C++ do***entation, painlessly.
119 days ago
Hamel’s Blog
hamel.io
A collection of technical blogs and talks on machine learning and data science.
119 days ago
HanLu
hanlu.io
A resume template for Jekyll and GitHub Pages sites.
119 days ago
Heapy
heapy.io
Free and Open-Source software
119 days ago
Heikki Stark
heke.io
My portfolio page
119 days ago
Hiew homepage
hiew.io
119 days ago
Hiten
hiten.io
Hiten Chowdhary's Portfolio
119 days ago
Jakob Holderbaum
holderbaum.io
Ich schreibe über Company Building, Mindful Leadership und Personal Productivity.
119 days ago
homebrew.io
afternic is a one-stop site to buy domains, sell domains, and park domains. experience the world's premiere domain marketplace and exchange reseller today.
119 days ago
Welcome! | hREA Developer Do***entation
docs.hrea.io
119 days ago
Hoo Logic : React + TypeScript
hoologic.io
Hoo Logic : React + TypeScript
119 days ago
Dr Micah Wilson
michael.humanfactors.io
119 days ago
IBAX Do***entation
docs.ibax.io
A Decentralized Commercial Cross-Chain infrastructure Network
119 days ago
GitHub - Hotmoka/hotmoka: The Hotmoka project
hotmoka.io
The Hotmoka project. Contribute to Hotmoka/hotmoka development by creating an account on GitHub.
119 days ago
Hyunsu (Philip) Cho
hyunsu-cho.io
Hyunsu Cho's website
119 days ago
B.Lynnity - B.Lynnity
fxa77-fiaaa-aaaae-aaana-cai.raw.icp0.io
119 days ago
ImAdam.io • Home
imadam.io
Hey I'm Adam I like to make cool web stuff. Come take a look!
119 days ago
immudb webconsole
demo.immudb.io
119 days ago
iLhub - Professional Elixir and Erlang development team | Intellectual Lads Hub
ilhub.io
High Traffic Systems, Distributed or Clustered Systems, Real Time Apps & Push Notifications, High Availability & Zero Downtime, Bots & Intelligent Systems, Large Enterprise Applications. We Are Intellectual Lads And we know how to make your software work great!
119 days ago
Services - Kotzilla
support.insert-koin.io
Kotzilla Products: Koin, Official plugin for Koin DI, Console, Koin SDK
119 days ago
Just a moment...
demo.instantcms.io
demo open source content management system
119 days ago
Inventaire Query Service
query.inventaire.io
you know, for SPARQL queries and stuff
119 days ago
InvadingOctopus · GitHub
invadingoctopus.io
InvadingOctopus has 8 repositories available. Follow their code on GitHub.
119 days ago
andxet - itch.io
andxet.itch.io
119 days ago
www.isobit.io
isobit.io
119 days ago
Ícaro Harry
icaro.io
Ícaro Harry's developer portfolio
119 days ago
Chiphead64 - itch.io
chiphead64.itch.io
119 days ago
claby2 - itch.io
claby2.itch.io
119 days ago
codewalker - itch.io
codewalker.itch.io
119 days ago
Destiny Knight - itch.io
destiny-knight.itch.io
119 days ago
Laourino - itch.io
laourino.itch.io
119 days ago
[Imagedit.io] | We make working with images easy!
imagedit.io
simple and fast - no need to install additional libraries.
119 days ago