Initial commit.

This commit is contained in:
Simon Sarasova 2024-04-10 18:07:49 +00:00
commit c443ca91a2
No known key found for this signature in database
GPG key ID: 5E710636FDAA0C61
51 changed files with 2778 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
ExportedWebsite_Server
ExportedWebsite_IPFS

4
Changelog.md Normal file
View file

@ -0,0 +1,4 @@
# Changelog
This document attempts to describe the history of changes to the Seekia Website codebase.
Small and insignificant changes may not be included in this log.

7
Contributors.md Normal file
View file

@ -0,0 +1,7 @@
# Contributors
This document describes the contributors to the Seekia Website codebase.
Name | Date Of First Commit | Number Of Commits
--- | --- | ---
Simon Sarasova | April 10, 2024 | 1

13
License.md Normal file
View file

@ -0,0 +1,13 @@
# Unlicense
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.
In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.
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 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.
For more information, please refer to [unlicense.org](http://unlicense.org)

85
ReadMe.md Normal file
View file

@ -0,0 +1,85 @@
# Seekia
![Seekia Banner](./readmeImages/seekiaLogoWithSubtitle.jpg)
## Seekia Website
![Seekia Website Homepage](./readmeImages/seekiaWebsiteHomepage.jpg)
**This is the repository for Seekia's website.**
*Cure racial loneliness. Beautify the human species. Seekia: Be race aware.*
**Seekia is a race aware mate discovery network.**
Seekia is a mate discovery network where users can find a mate while having a deep awareness of each potential partner's race.
Users can share racial information in their profiles such as their eye, skin, and hair color; hair texture; genetic ancestry; haplogroups; and the alleles of their genes which effect physical traits.
Seekia enables users to browse and filter potential mates by their racial attributes. Seekia can also calculate the racial characteristics for prospective offspring between users. Seekia allows for users to predict and control the race of their offspring by selecting a mate who is the most capable and likely to produce offspring of their desired race.
Seekia aims to cure racial loneliness by helping users to find members of their own race to mate with.
Seekia also provides users with the ability to mate in a genetics aware manner.
Users can view information about the health and physical traits of their prospective offspring for each user.
Seekia aims to improve the genetic quality of humanity by making humans healthier, more beautiful, and more intelligent. Seekia aims to facilitate eugenic breeding by helping to create mate pairings which are the most likely to produce healthy, beautiful, and intelligent offspring.
Users can choose to mate with users with whom their offspring has a lower probability of having diseases and a higher probability of having certain traits.
The goal of Seekia is to accelerate the world's adoption of race and genetics aware mate discovery technology, and to help the world mate in a race and genetics aware manner.
### Learn More
Access Seekia's clearnet website at [Seekia.net](https://seekia.net).
Access Seekia's Ethereum IPFS ENS website at [Seekia.eth](ipns://seekia.eth). This site can be accessed through Brave Browser.
Access Seekia's Tor website at [seekia77v2rqfp4i4flavj425txtqjpn2yldadngdr45fjitr72fakid.onion](http://seekia77v2rqfp4i4flavj425txtqjpn2yldadngdr45fjitr72fakid.onion).
Read the whitepaper at `/resources/assets/Seekia.pdf`
## How To Build
To create the Seekia Website, you must first install Golang.
### Install Golang
Golang is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Install it by following the instructions on this website: [go.dev/doc/install](https://go.dev/doc/install)
### Build The Seekia Website
Open a terminal and navigate inside of the SeekiaWebsite folder.
Once there, run the following command:
`go run main.go`
The website will export into two folders: `ExportedWebsite_IPFS` and `ExportedWebsite_Server`
`ExportedWebsite_IPFS` contains the website that is deployed to the `Seekia.eth` IPFS domain.
`ExportedWebsite_Server` contains the website that is deployed to Seekia's clearnet and Tor domains.
## Contact
You can contact Seekia's creator and lead developer, Simon Sarasova.
His Seekia identity hash is: `simonx5yudleks5jhwhnck5s28m`
You can use the Seekia application to cryptographically verify Seekia memos are authored by Simon's identity hash. You can do this by downloading the Seekia app and navigating to Settings -> Tools -> Verify Memo.
Get Simon's contact information by visiting his website at [SimonSarasova.eth](ipns://SimonSarasova.eth)
You can use Brave browser to access a .eth IPFS website.
You can also use an IPFS gateway service if you do not have Brave Browser. These services are operated by third parties, so you should access his website from multiple gateways to make sure you are seeing an authentic version of his website:
[SimonSarasova.eth.limo](https://simonsarasova.eth.limo)
[SimonSarasova.eth.link](https://simonsarasova.eth.link)

5
go.mod Normal file
View file

@ -0,0 +1,5 @@
module SeekiaWebsite
replace SeekiaWebsite => ./
go 1.22

362
main.go Normal file
View file

@ -0,0 +1,362 @@
// This package exports 2 Seekia static sites into two folders: ExportedWebsite_IPFS and ExportedWebsite_Server
// ExportedWebsite_IPFS contains the website that is deployed to the Seekia.eth IPFS domain.
// ExportedWebsite_Server contains the website that is deployed to Seekia's clearnet (.net) and Tor (.onion) domains.
package main
import "SeekiaWebsite/translation"
import "bytes"
import "errors"
import "log"
import "os"
import "strings"
import "text/template"
import goFilepath "path/filepath"
// This is the current Seekia release .tgz filename
const currentReleaseFilename = "Seekia-v0.50.tgz"
// This is the IPFS base32 CID for the current Seekia release .tgz file
const currentReleaseIpfsCID = "bafybeie6nkmucrvo3i7bonmlf77dlna65tjogsq5zmrcpqke7pvdkiumhy"
func main(){
//Inputs:
// -string: The folderpath to export the website to
// -bool: Use this to control if we are exporting the Seekia.eth IPFS site or not
exportWebsite := func(websiteFolderpath string, siteIsIPFS bool)error{
err := os.RemoveAll(websiteFolderpath)
if (err != nil){ return err }
err = os.Mkdir(websiteFolderpath, os.ModePerm)
if (err != nil) { return err }
//TODO: Add more languages
//allLanguageCodesList := []string{"en", "es"}
allLanguageCodesList := []string{"en"}
// We create the style.css file
cssPageBytes, err := os.ReadFile("./resources/style.css")
if (err != nil) { return err }
cssPageString := string(cssPageBytes)
cssFilepath := goFilepath.Join(websiteFolderpath, "style.css")
err = createFile(cssFilepath, cssPageString)
if (err != nil) { return err }
// We copy various folders
copyFolder := func(folderName string)error{
sourceFolderPath := goFilepath.Join("./resources/", folderName)
destinationFolderPath := goFilepath.Join(websiteFolderpath, folderName)
err := copyFolderRecursively(sourceFolderPath, destinationFolderPath)
if (err != nil) { return err }
return nil
}
err = copyFolder("images")
if (err != nil) { return err }
err = copyFolder("assets")
if (err != nil) { return err }
err = copyFolder("memos")
if (err != nil) { return err }
err = copyFolder("signatures")
if (err != nil) { return err }
if (siteIsIPFS == false){
// For our IPFS site, we are using an IPFS link for the download
// For our non-IPFS site, we include the link on the same hosted site
// This is because when viewing an IPFS site, the user's browser downloads the entire website (usually?)
// This would take too long to download if we included the release with the site (several megabytes)
releaseFilepath := goFilepath.Join("./resources", "release", currentReleaseFilename)
releaseFileBytes, err := os.ReadFile(releaseFilepath)
if (err != nil) {
fileDoesNotExist := os.IsNotExist(err)
if (fileDoesNotExist == false){
return err
}
return errors.New("You must place the Seekia release .tgz file into the ./resources/release folder before exporting the website. This can be an empty file with the correct filename if you want. Error: " + err.Error())
}
releaseFileString := string(releaseFileBytes)
destinationFolderPath := goFilepath.Join(websiteFolderpath, "release")
err = os.Mkdir(destinationFolderPath, os.ModePerm)
if (err != nil) { return err }
destinationFilepath := goFilepath.Join(destinationFolderPath, currentReleaseFilename)
err = createFile(destinationFilepath, releaseFileString)
if (err != nil) { return err }
}
getTemplateDefinitionsMap := func(inputLanguageCode string)(map[string]string, error){
translationsMap, err := translation.GetTranslationsMap(inputLanguageCode)
if (err != nil){ return nil, err }
templateDefinitionsMap := translationsMap
// Now we add code snippets to the map
fileList, err := os.ReadDir("./resources/codeSnippets")
if (err != nil) { return nil, err }
for _, fileObject := range fileList{
fileName := fileObject.Name()
filePath := goFilepath.Join("./resources/codeSnippets/", fileName)
fileBytes, err := os.ReadFile(filePath)
if (err != nil) { return nil, err }
snippetString := string(fileBytes)
snippetName := strings.TrimSuffix(fileName, ".html")
codeSnippetKey := "CodeSnippet_" + snippetName
_, exists := templateDefinitionsMap[codeSnippetKey]
if (exists == true){
return nil, errors.New("Cannot export website: conflict found between translationsMap and codeSnippets")
}
templateDefinitionsMap[codeSnippetKey] = snippetString
}
// LanguageURLBase is empty for all files except /index.html
templateDefinitionsMap["LanguageURLBase"] = ""
return templateDefinitionsMap, nil
}
// We use this function to parse the .html files to replace the internal template values with actual values
// For example, {{.BeRaceAware}} will be replaced with "Be Race Aware", or the equivalent translated text in the website's current language version
// We have to parse twice for the web pages.
// Code snippets have fields that need to be parsed
// So to process the code snippets, we have to:
// 1. First parse the html page files to add the code snippets/replace any language fields
// 2. Then parse again to replace any language fields and instances of {{.LinkURLBase}} within the code snippets we just added
//
parseTemplateObjectToStringTwice := func(templateObject *template.Template, definitionsMap map[string]string)(string, error){
parseTemplateObjectToString := func(inputTemplateObject *template.Template)(string, error){
inputTemplateObject.Option("missingkey=error")
parsedTemplateBuffer := new(bytes.Buffer)
err = inputTemplateObject.Execute(parsedTemplateBuffer, definitionsMap)
if (err != nil){ return "", err }
parsedTemplateString := parsedTemplateBuffer.String()
return parsedTemplateString, nil
}
parsedTemplateString_Round1, err := parseTemplateObjectToString(templateObject)
if (err != nil) { return "", err }
templateObject2 := template.New("Round2")
_, err = templateObject2.Parse(parsedTemplateString_Round1)
if (err != nil) { return "", err }
parsedTemplateString_Round2, err := parseTemplateObjectToString(templateObject2)
if (err != nil) { return "", err }
return parsedTemplateString_Round2, nil
}
{
// First we create /index.html
// Using a language code is optional for the main index of the site
// It is always in English
// For example, Seekia.eth/index.html
templateObject, err := template.ParseFiles("./resources/pages/index.html")
if (err != nil){ return err }
templateDefinitionsMap, err := getTemplateDefinitionsMap("en")
if (err != nil) { return err }
templateDefinitionsMap["BaseURL"] = "."
templateDefinitionsMap["LanguageURLBase"] = "en/"
indexPageString, err := parseTemplateObjectToStringTwice(templateObject, templateDefinitionsMap)
if (err != nil) { return err }
indexFilepath := goFilepath.Join(websiteFolderpath, "index.html")
err = createFile(indexFilepath, indexPageString)
if (err != nil) { return err }
}
// Now we create the rest of the pages for each language
// These pages exist behind a language code
// For example:
// seekia.eth/en/index.html
// seekia.eth/es/download.html
getDownloadSeekiaLink := func()string{
if (siteIsIPFS == false){
result := "../release/" + currentReleaseFilename
return result
}
// The IPFS site does not contain the Seekia release .tgz file
// This is because users (sometimes?) download the entire IPFS site when viewing it,
// so downloading many megabytes would take too long
result := "https://ipfs.io/ipfs/" + currentReleaseIpfsCID
return result
}
downloadSeekiaLink := getDownloadSeekiaLink()
for _, languageCode := range allLanguageCodesList{
// We create the language subfolder
languageSubfolderPath := goFilepath.Join(websiteFolderpath, languageCode)
err = os.Mkdir(languageSubfolderPath, os.ModePerm)
if (err != nil) { return err }
templateDefinitionsMap, err := getTemplateDefinitionsMap(languageCode)
if (err != nil) { return err }
templateDefinitionsMap["BaseURL"] = "../"
templateDefinitionsMap["DownloadSeekiaLink"] = downloadSeekiaLink
createPage := func(pageFilename string)error{
pageTemplateFilepath := goFilepath.Join("./resources/pages/", pageFilename)
pageTemplateObject, err := template.ParseFiles(pageTemplateFilepath)
if (err != nil){ return err }
pageString, err := parseTemplateObjectToStringTwice(pageTemplateObject, templateDefinitionsMap)
if (err != nil) { return err }
pageFilepath := goFilepath.Join(languageSubfolderPath, pageFilename)
err = createFile(pageFilepath, pageString)
if (err != nil) { return err }
return nil
}
err = createPage("index.html")
if (err != nil){ return err }
//TODO: Add the Choose Language page and Choose Language banner bar
// err := createPage("chooseLanguage.html")
// if (err != nil){ return err }
err = createPage("download.html")
if (err != nil){ return err }
err = createPage("about.html")
if (err != nil){ return err }
err = createPage("contribute.html")
if (err != nil){ return err }
err = createPage("archive.html")
if (err != nil){ return err }
}
return nil
}
err := exportWebsite("./ExportedWebsite_IPFS/", true)
if (err != nil){
log.Println(err)
return
}
err = exportWebsite("./ExportedWebsite_Server/", false)
if (err != nil){
log.Println(err)
return
}
log.Println("Seekia's websites have been exported!")
}
// This function will copy a folder and its subfolders
func copyFolderRecursively(sourceFolderPath string, destinationFolderPath string)error{
err := os.Mkdir(destinationFolderPath, os.ModePerm)
if (err != nil) { return err }
filesystemPathsList, err := os.ReadDir(sourceFolderPath)
if (err != nil) { return err }
for _, filesystemObject := range filesystemPathsList{
pathName := filesystemObject.Name()
sourcePathName := goFilepath.Join(sourceFolderPath, pathName)
destinationPathName := goFilepath.Join(destinationFolderPath, pathName)
isDirectory := filesystemObject.IsDir()
if (isDirectory == true){
err := copyFolderRecursively(sourcePathName, destinationPathName)
if (err != nil) { return err }
} else {
fileBytes, err := os.ReadFile(sourcePathName)
if (err != nil) { return err }
fileString := string(fileBytes)
err = createFile(destinationPathName, fileString)
if (err != nil) { return err }
}
}
return nil
}
func createFile(filePath string, fileContents string)error{
newFile, err := os.Create(filePath)
_, err = newFile.WriteString(fileContents)
if (err != nil) { return err }
newFile.Close()
return nil
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

BIN
resources/assets/Seekia.pdf Normal file

Binary file not shown.

View file

@ -0,0 +1,57 @@
<!-- <div class = "languageBar">
<p class = "languageBarLabel"> {{.Language}}: </p>
<a class = "languageBarButton" href="{{.LanguageURLBase}}chooseLanguage.html">{{.CurrentLanguage}}</a>
</div>
-->
<header class = "pageHeader">
<div class = "logoAndTitleRow">
<img class = "seekiaLogo" src="{{.BaseURL}}/images/seekiaLogo.svg">
<div class = "seekiaTitle">Seekia</div>
</div>
<div class = "sloganText" >{{.BeRaceAware}}</div>
</header>
<hr class = "navigationBarSeparator">
<nav class = "navigationBar">
<div class = "navigationBarItem">
<img class = "navigationBarHeart" src="{{.BaseURL}}/images/heart.svg">
<a class = "navigationBarLink" href="{{.LanguageURLBase}}index.html">{{.Home}}</a>
<img class = "navigationBarHeart" src="{{.BaseURL}}/images/heart.svg">
</div>
<div class = "navigationBarItem">
<img class = "navigationBarHeart" src="{{.BaseURL}}/images/heart.svg">
<a class = "navigationBarLink" href="{{.LanguageURLBase}}about.html">{{.About}}</a>
<img class = "navigationBarHeart" src="{{.BaseURL}}/images/heart.svg">
</div>
<div class = "navigationBarItem">
<img class = "navigationBarHeart" src="{{.BaseURL}}/images/heart.svg">
<a class = "navigationBarLink" href="{{.LanguageURLBase}}download.html">{{.Download}}</a>
<img class = "navigationBarHeart" src="{{.BaseURL}}/images/heart.svg">
</div>
<div class = "navigationBarItem">
<img class = "navigationBarHeart" src="{{.BaseURL}}/images/heart.svg">
<a class = "navigationBarLink" href="{{.LanguageURLBase}}contribute.html">{{.Contribute}}</a>
<img class = "navigationBarHeart" src="{{.BaseURL}}/images/heart.svg">
</div>
</nav>
<hr class = "navigationBarSeparator">

View file

@ -0,0 +1 @@
<meta name="keywords" content="racial dating app, genetic dating app, 23andMe dating app, genetic matchmaking, ancestry dating app, eugenics dating app, selective breeding dating app"/>

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="16" height="16" viewBox="0 0 4.2333332 4.2333335" version="1.1" id="svg1468" sodipodi:docname="codeberg-logo_icon_blue.svg" inkscape:version="1.2-alpha1 (b6a15bb, 2022-02-23)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<title id="title16">Codeberg Logo</title>
<defs id="defs1462">
<linearGradient xlink:href="#linearGradient6924" id="linearGradient6918" x1="42519.285" y1="-7078.7891" x2="42575.336" y2="-6966.9307" gradientUnits="userSpaceOnUse"/>
<linearGradient id="linearGradient6924">
<stop style="stop-color:#2185d0;stop-opacity:0" offset="0" id="stop6920"/>
<stop id="stop6926" offset="0.49517274" style="stop-color:#2185d0;stop-opacity:0.48923996"/>
<stop style="stop-color:#2185d0;stop-opacity:0.63279623" offset="1" id="stop6922"/>
</linearGradient>
<linearGradient xlink:href="#linearGradient6924-6" id="linearGradient6918-3" x1="42519.285" y1="-7078.7891" x2="42575.336" y2="-6966.9307" gradientUnits="userSpaceOnUse"/>
<linearGradient id="linearGradient6924-6">
<stop style="stop-color:#2185d0;stop-opacity:0;" offset="0" id="stop6920-7"/>
<stop id="stop6926-5" offset="0.49517274" style="stop-color:#2185d0;stop-opacity:0.30000001;"/>
<stop style="stop-color:#2185d0;stop-opacity:0.30000001;" offset="1" id="stop6922-3"/>
</linearGradient>
</defs>
<sodipodi:namedview showborder="false" id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="22.627417" inkscape:cx="12.948893" inkscape:cy="12.661631" inkscape:document-units="px" inkscape:current-layer="svg1468" inkscape:document-rotation="0" showgrid="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" units="px" inkscape:snap-global="false" inkscape:snap-page="true" showguides="false" inkscape:window-width="1531" inkscape:window-height="873" inkscape:window-x="69" inkscape:window-y="27" inkscape:window-maximized="1" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1">
<inkscape:grid type="xygrid" id="grid2067"/>
</sodipodi:namedview>
<metadata id="metadata1465">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title>Codeberg Logo</dc:title>
<cc:license rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/"/>
<dc:creator>
<cc:Agent>
<dc:title>Robert Martinez</dc:title>
</cc:Agent>
</dc:creator>
<dc:rights>
<cc:Agent>
<dc:title>Codeberg and the Codeberg Logo are trademarks of Codeberg e.V.</dc:title>
</cc:Agent>
</dc:rights>
<dc:date>2020-04-09</dc:date>
<dc:publisher>
<cc:Agent>
<dc:title>Codeberg e.V.</dc:title>
</cc:Agent>
</dc:publisher>
<dc:source>codeberg.org</dc:source>
</cc:Work>
<cc:License rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
<cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
<cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
</cc:License>
</rdf:RDF>
</metadata>
<g id="g370484" inkscape:label="logo" transform="matrix(0.06551432,0,0,0.06551432,-2.232417,-1.431776)">
<path id="path6733-5" style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:url(#linearGradient6918-3);fill-opacity:1;stroke:none;stroke-width:3.67846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1" d="m 42519.285,-7078.7891 a 0.76086879,0.56791688 0 0 0 -0.738,0.6739 l 33.586,125.8886 a 87.182358,87.182358 0 0 0 39.381,-33.7636 l -71.565,-92.5196 a 0.76086879,0.56791688 0 0 0 -0.664,-0.2793 z" transform="matrix(0.37058478,0,0,0.37058478,-15690.065,2662.0533)" inkscape:label="berg"/>
<path id="path360787" style="opacity:1;fill:#2185d0;fill-opacity:1;stroke-width:17.0055;paint-order:markers fill stroke;stop-color:#000000" d="m 11249.461,-1883.6961 c -12.74,0 -23.067,10.3275 -23.067,23.0671 0,4.3335 1.22,8.5795 3.522,12.2514 l 19.232,-24.8636 c 0.138,-0.1796 0.486,-0.1796 0.624,0 l 19.233,24.8646 c 2.302,-3.6721 3.523,-7.9185 3.523,-12.2524 0,-12.7396 -10.327,-23.0671 -23.067,-23.0671 z" sodipodi:nodetypes="sccccccs" inkscape:label="sky" transform="matrix(1.4006354,0,0,1.4006354,-15690.065,2662.0533)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5 KiB

View file

@ -0,0 +1,14 @@
<svg id="emoji" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg">
<g id="color">
<rect x="27.5987" y="23.8185" rx="1.5627" width="37.5107" height="23.4538" fill="#d0cfce"/>
<path fill="#9b9b9a" d="M65.1522,24.5967V44.5922a4.1748,4.1748,0,0,1-.3759,1.729L56.282,38.5034l-.7517.0751-3.082-2.8565Z"/>
</g>
<g id="line">
<line x1="5.7967" x2="22.1067" y1="41.904" y2="41.904" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<line x1="9.2917" x2="22.1067" y1="34.914" y2="34.914" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<path fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M36.512,38.5785l-8.4192,7.7427a3.9028,3.9028,0,0,1-.451-1.729v-19.92"/>
<path fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M57.5383,39.399,64.83,46.11a3.5861,3.5861,0,0,0,.3226-1.4841V24.5967"/>
<path fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M55.4551,37.7517l9.2461,8.4943a1.6075,1.6075,0,0,1-1.3531.9772H29.3707a1.78,1.78,0,0,1-1.3531-.902l9.0957-8.344"/>
<path fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M65.1522,24.5967l-12.0274,11.05-3.3827,3.1572c-.15.15-.3759.3006-.5262.451a4.6338,4.6338,0,0,1-5.7882,0c-.15-.15-.3758-.3007-.5262-.451L39.5188,35.722l-11.877-11.05c0-.0752.0751-.0752.0751-.15A1.5333,1.5333,0,0,1,28.92,23.77H63.8743a1.6558,1.6558,0,0,1,1.2027.6766C65.077,24.5215,65.1522,24.5215,65.1522,24.5967Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -0,0 +1,39 @@
<svg id="emoji" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg">
<g id="color">
<rect x="22.1844" y="50.2336" width="2" height="6.8467" transform="translate(-31.1506 32.1096) rotate(-45)" fill="#92d3f5"/>
<rect x="17.3429" y="45.3919" width="2" height="6.8472" transform="translate(-29.1452 27.2681) rotate(-45)" fill="#ea5a47"/>
<rect x="30.1412" y="33.3138" width="2" height="6.2505" transform="translate(-16.6452 32.6929) rotate(-45)" fill="#92d3f5"/>
<rect x="34.5608" y="37.7336" width="2" height="6.25" transform="translate(-18.4759 37.1125) rotate(-45)" fill="#ea5a47"/>
<rect x="38.4468" y="33.9712" width="2" height="6.8467" transform="translate(-14.8882 38.8457) rotate(-45)" fill="#92d3f5"/>
<rect x="33.6053" y="29.1294" width="2" height="6.8472" transform="translate(-12.8828 34.0042) rotate(-45)" fill="#ea5a47"/>
<polygon fill="#92d3f5" points="41.7477 30.2523 40.0161 31.9839 37.1138 29.0815 38.1518 28.0435 41.7477 30.2523"/>
<polygon fill="#ea5a47" points="44.0376 33.767 42.9185 34.8862 40.0161 31.9839 41.7477 30.2523 44.0376 33.767"/>
<rect x="51.3518" y="20.9426" width="2" height="6.25" transform="translate(-1.6848 44.0676) rotate(-45)" fill="#92d3f5"/>
<rect x="46.9323" y="16.5227" width="2" height="6.2505" transform="translate(.1458 39.648) rotate(-45)" fill="#ea5a47"/>
<rect x="55.8358" y="16.5822" width="2" height="6.8467" transform="translate(2.5008 46.0485) rotate(-45)" fill="#92d3f5"/>
<rect x="50.9943" y="11.7404" width="2" height="6.8472" transform="translate(4.5062 41.207) rotate(-45)" fill="#ea5a47"/>
<rect x="17.8889" y="54.5291" width="2" height="6.8467" transform="translate(-35.4461 30.3303) rotate(-45)" fill="#92d3f5"/>
<rect x="13.0474" y="49.6873" width="2" height="6.8472" transform="translate(-33.4407 25.4888) rotate(-45)" fill="#ea5a47"/>
<path fill="#92d3f5" d="M48.8128,31.8422c.792,3.9598,.3747,8.4358-4.08,12.8905-4.4548,4.4548-8.9308,4.872-12.8905,4.08-2.1284-.4313-4.1154-1.2162-5.8761-1.9021-.2122-.0848-.4242-.1697-.6293-.2475-4.5891-1.7748-7.2407-2.4466-10.2459,.5586l-4.4407,4.4407c-1.0748,1.0748-2.8143,1.0748-3.8891,0s-1.0748-2.8143,0-3.8891l4.4407-4.4407c4.0446-4.0446,8.2024-4.1436,11.9854-3.1749,1.6829,.4101,3.2951,1.0465,4.7871,1.6334,.5586,.2192,1.0961,.4313,1.6122,.6223,4.5326,1.6758,7.5731,2.1142,11.2571-1.5698,3.684-3.684,3.2456-6.7245,1.5698-11.2571,.5162,.1909,1.0536,.4031,1.6122,.6223,1.4919,.5869,3.1042,1.2233,4.7871,1.6334Z"/>
<path fill="#92d3f5" d="M51.6624,6.7612c1.0748,1.0748,1.0748,2.8143,0,3.8891l-4.4407,4.4407c-3.0052,3.0052-2.3334,5.6568-.5586,10.2459-.2051-.0778-.4172-.1626-.6293-.2475-1.7607-.6859-3.7477-1.4708-5.8761-1.9021-.9687-3.783-.8697-7.9408,3.1749-11.9854l4.4407-4.4407c1.0748-1.0748,2.8143-1.0748,3.8891,0Z"/>
<path fill="#ea5a47" d="M25.9662,46.9107c1.7607,.6859,3.7477,1.4708,5.8761,1.9021,.9687,3.783,.8697,7.9408-3.1749,11.9854l-4.4407,4.4407c-1.0748,1.0748-2.8143,1.0748-3.8891,0s-1.0748-2.8143,0-3.8891l4.4407-4.4407c3.0052-3.0052,2.3334-5.6568,.5586-10.2459,.2051,.0778,.4172,.1626,.6293,.2475Z"/>
<path fill="#ea5a47" d="M65.2388,20.3376c1.0748,1.0748,1.0748,2.8143,0,3.8891l-4.4407,4.4407c-4.0446,4.0446-8.2024,4.1436-11.9854,3.1749-1.6829-.4101-3.2951-1.0465-4.7871-1.6334-.5586-.2192-1.0961-.4313-1.6122-.6223-4.5326-1.6758-7.5731-2.1142-11.2571,1.5698s-3.2456,6.7245-1.5698,11.2571c-.5162-.1909-1.0536-.4031-1.6122-.6223-1.4919-.5869-3.1042-1.2233-4.7871-1.6334-.792-3.9598-.3747-8.4358,4.08-12.8905s8.9308-4.872,12.8905-4.08c2.1284,.4313,4.1154,1.2162,5.8761,1.9021,.2122,.0848,.4242,.1697,.6293,.2475,4.5891,1.7748,7.2407,2.4466,10.2459-.5586l4.4407-4.4407c1.0748-1.0748,2.8143-1.0748,3.8891,0Z"/>
</g>
<g id="line">
<g>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M23.1932,40.1518c-.7944-3.9626-.3766-8.4301,4.076-12.8827,6.8508-6.8508,13.7371-4.1505,18.7646-2.1779,4.9843,1.9542,7.7305,2.8277,10.8738-.3156l4.4401-4.4401c1.0738-1.0738,2.8153-1.0738,3.8891,0s1.0738,2.8153,0,3.8891l-4.4401,4.4401c-5.835,5.835-11.8986,3.4575-16.7703,1.5468-5.469-2.1448-8.7629-3.1585-12.8681,.9467-3.684,3.684-3.2459,6.7149-1.5669,11.2503"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M31.8511,48.8057c.9568,3.7914,.8586,7.946-3.1864,11.991l-4.4401,4.4401c-1.0738,1.0738-2.8153,1.0738-3.8891,0s-1.0738-2.8153,0-3.8891l4.4401-4.4401c3.0081-3.0081,2.3373-5.6531,.5607-10.2439"/>
</g>
<g>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M40.1484,23.193c-.9565-3.7911-.8576-7.9453,3.1868-11.9897l4.4401-4.4401c1.0738-1.0738,2.8153-1.0738,3.8891,0s1.0738,2.8153,0,3.8891l-4.4401,4.4401c-3.0084,3.0084-2.337,5.6534-.5609,10.2443"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M48.8073,31.851c.7937,3.9617,.3748,8.4283-4.0766,12.8797-6.8508,6.8508-13.7371,4.1498-18.7649,2.1783-4.9836-1.9542-7.7305-2.8277-10.8735,.3152l-4.4401,4.4401c-1.0738,1.0738-2.8153,1.0738-3.8891,0s-1.0738-2.8153,0-3.8891l4.4401-4.4401c5.835-5.835,11.8982-3.4572,16.7707-1.5465,5.4683,2.1448,8.7625,3.1582,12.8678-.9471,3.6841-3.6841,3.2456-6.7147,1.5671-11.2501"/>
</g>
<line x1="50.9838" x2="60.6671" y1="11.3328" y2="21.0161" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<line x1="46.7124" x2="56.3471" y1="15.6527" y2="25.2875" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<line x1="35.2237" x2="43.423" y1="28.5769" y2="36.7762" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<line x1="30.7892" x2="40.459" y1="31.5409" y2="41.2106" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<line x1="28.3611" x2="35.4887" y1="36.5112" y2="43.6388" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<line x1="17.735" x2="26.5463" y1="45.4536" y2="54.2649" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<line x1="13.0033" x2="22.6867" y1="49.3132" y2="58.9966" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

View file

@ -0,0 +1,8 @@
<svg id="emoji" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg">
<g id="color">
<path fill="#ff0000" d="M59.5,25c0-6.9036-5.5964-12.5-12.5-12.5c-4.7533,0-8.8861,2.6536-11,6.5598 C33.8861,15.1536,29.7533,12.5,25,12.5c-6.9036,0-12.5,5.5964-12.5,12.5c0,2.9699,1.0403,5.6942,2.7703,7.8387l-0.0043,0.0034 L36,58.5397l20.7339-25.6975l-0.0043-0.0034C58.4597,30.6942,59.5,27.9699,59.5,25z"/>
</g>
<g id="line">
<path fill="none" stroke="#ff0000ff" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M59.5,25 c0-6.9036-5.5964-12.5-12.5-12.5c-4.7533,0-8.8861,2.6536-11,6.5598C33.8861,15.1536,29.7533,12.5,25,12.5 c-6.9036,0-12.5,5.5964-12.5,12.5c0,2.9699,1.0403,5.6942,2.7703,7.8387l-0.0043,0.0034L36,58.5397l20.7339-25.6975l-0.0043-0.0034 C58.4597,30.6942,59.5,27.9699,59.5,25z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 823 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.2 KiB

18
resources/images/mac.svg Normal file
View file

@ -0,0 +1,18 @@
<svg id="emoji" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg">
<g id="color">
<g>
<g>
<path fill="#5c9e31" fill-rule="evenodd" d="M42.1469 10.948L45.8482 10.948C45.8483 10.9734 45.8484 10.9987 45.8484 11.0241C45.8484 13.5842 44.9157 15.9746 43.0565 18.1871C40.8129 20.8173 38.0992 22.3372 35.1564 22.0973C35.1189 21.7902 35.0972 21.467 35.0972 21.1273C35.0972 18.6696 36.1641 16.0394 38.0589 13.8888C39.0048 12.7999 40.2079 11.8945 41.6669 11.1723C41.8279 11.0936 41.9879 11.0188 42.1469 10.948ZM15.1986 30.8554C15.3887 30.4582 15.5959 30.072 15.8199 29.6967C16.9836 27.7051 18.5318 26.134 20.4694 24.9807C22.407 23.8274 24.5006 23.2396 26.7552 23.202C27.9889 23.202 29.6067 23.5847 31.6171 24.3367C33.6218 25.0913 34.909 25.4739 35.4734 25.4739C35.8953 25.4739 37.3253 25.0265 39.7494 24.1345C42.0419 23.3073 43.9767 22.9647 45.5617 23.0997C49.8566 23.4472 53.0834 25.145 55.2293 28.2037C53.946 28.9834 52.8794 29.8674 52.0293 30.8554H15.1986Z" clip-rule="evenodd"/>
<path fill="#5c9e31" d="M42.1469 10.948V9.94797C42.0067 9.94797 41.868 9.97748 41.7398 10.0346L42.1469 10.948ZM45.8482 10.948L46.8481 10.9409C46.8442 10.3914 46.3977 9.94797 45.8482 9.94797V10.948ZM43.0565 18.1871L43.8174 18.8361L43.8221 18.8304L43.0565 18.1871ZM35.1564 22.0973L34.1638 22.2185C34.2213 22.6897 34.6021 23.0555 35.0752 23.094L35.1564 22.0973ZM38.0589 13.8888L38.8092 14.5499L38.8138 14.5446L38.0589 13.8888ZM41.6669 11.1723L41.2278 10.2738L41.2232 10.2761L41.6669 11.1723ZM15.1986 30.8554L14.2966 30.4236C14.1483 30.7334 14.1694 31.0977 14.3525 31.3884C14.5356 31.6791 14.8551 31.8554 15.1986 31.8554V30.8554ZM15.8199 29.6967L16.6785 30.2094L16.6834 30.2012L15.8199 29.6967ZM20.4694 24.9807L19.9579 24.1214L19.9579 24.1214L20.4694 24.9807ZM26.7552 23.202V22.202C26.7497 22.202 26.7441 22.2021 26.7386 22.2022L26.7552 23.202ZM31.6171 24.3367L31.9693 23.4008L31.9674 23.4001L31.6171 24.3367ZM39.7494 24.1345L39.41 23.1938L39.4041 23.196L39.7494 24.1345ZM45.5617 23.0997L45.4768 24.0961L45.481 24.0964L45.5617 23.0997ZM55.2293 28.2037L55.7485 29.0583C55.9849 28.9147 56.1513 28.6795 56.208 28.4088C56.2647 28.138 56.2068 27.8558 56.0479 27.6294L55.2293 28.2037ZM52.0293 30.8554V31.8554C52.3206 31.8554 52.5974 31.7284 52.7873 31.5076L52.0293 30.8554ZM42.1469 11.948H45.8482V9.94797H42.1469V11.948ZM44.8482 10.955C44.8483 10.978 44.8484 11.001 44.8484 11.0241H46.8484C46.8484 10.9964 46.8483 10.9687 46.8481 10.9409L44.8482 10.955ZM44.8484 11.0241C44.8484 13.3181 44.0197 15.4864 42.2909 17.5437L43.8221 18.8304C45.8117 16.4627 46.8484 13.8503 46.8484 11.0241H44.8484ZM42.2957 17.5381C40.1755 20.0237 37.7486 21.3053 35.2376 21.1006L35.0752 23.094C38.4498 23.3691 41.4504 21.6109 43.8173 18.836L42.2957 17.5381ZM36.149 21.9761C36.1161 21.7068 36.0972 21.4241 36.0972 21.1273H34.0972C34.0972 21.5098 34.1217 21.8736 34.1638 22.2185L36.149 21.9761ZM36.0972 21.1273C36.0972 18.9494 37.0495 16.5471 38.8092 14.5499L37.3086 13.2277C35.2787 15.5316 34.0972 18.3898 34.0972 21.1273H36.0972ZM38.8138 14.5446C39.6623 13.5679 40.7548 12.7396 42.1106 12.0685L41.2232 10.2761C39.6611 11.0494 38.3474 12.0319 37.304 13.233L38.8138 14.5446ZM42.106 12.0707C42.2567 11.9971 42.406 11.9273 42.554 11.8614L41.7398 10.0346C41.5697 10.1104 41.3991 10.1902 41.2278 10.2738L42.106 12.0707ZM16.1006 31.2872C16.2776 30.9174 16.4702 30.5582 16.6785 30.2094L14.9614 29.184C14.7215 29.5858 14.4999 29.999 14.2966 30.4236L16.1006 31.2872ZM16.6834 30.2012C17.7638 28.352 19.1924 26.9046 20.9809 25.84L19.9579 24.1214C17.8712 25.3635 16.2035 27.0582 14.9565 29.1922L16.6834 30.2012ZM20.9809 25.84C22.7668 24.777 24.6895 24.2366 26.7719 24.2019L26.7386 22.2022C24.3117 22.2427 22.0472 22.8778 19.9579 24.1214L20.9809 25.84ZM26.7552 24.202C27.8099 24.202 29.2945 24.5356 31.2667 25.2733L31.9674 23.4001C29.9189 22.6338 28.1679 22.202 26.7552 22.202V24.202ZM31.2648 25.2726C32.2777 25.6539 33.1261 25.9476 33.802 26.1473C34.4443 26.3371 35.0316 26.4739 35.4734 26.4739V24.4739C35.3508 24.4739 35.0123 24.4195 34.3688 24.2293C33.7588 24.0491 32.9611 23.7741 31.9693 23.4008L31.2648 25.2726ZM35.4734 26.4739C35.7078 26.4739 35.9768 26.4193 36.2135 26.3621C36.4748 26.299 36.7921 26.2081 37.1594 26.093C37.8955 25.8625 38.8766 25.5212 40.0948 25.073L39.4041 23.196C38.1982 23.6398 37.2522 23.9682 36.5617 24.1844C36.2158 24.2927 35.945 24.3694 35.7438 24.4181C35.5179 24.4726 35.45 24.4739 35.4734 24.4739V26.4739ZM40.0889 25.0751C42.3097 24.2737 44.0908 23.9781 45.4768 24.0961L45.6465 22.1033C43.8625 21.9514 41.7741 22.3408 39.41 23.1939L40.0889 25.0751ZM45.481 24.0964C49.5318 24.4242 52.4637 26.003 54.4106 28.778L56.0479 27.6294C53.703 24.2871 50.1814 22.4703 45.6423 22.1029L45.481 24.0964ZM54.71 27.3491C53.3503 28.1752 52.1993 29.1246 51.2713 30.2031L52.7873 31.5076C53.5595 30.6102 54.5417 29.7916 55.7485 29.0583L54.71 27.3491ZM52.0293 29.8554H15.1986V31.8554H52.0293V29.8554Z"/>
</g>
<path fill="#fcea2b" fill-rule="evenodd" d="M54.2597 29C51.6933 30.8323 50.1708 33.167 49.6909 36H13.7679C14.0628 33.7016 14.7466 31.6522 15.82 29.8547C15.9918 29.5607 16.172 29.2757 16.3606 29L54.2597 29Z" clip-rule="evenodd"/>
<path fill="#f4aa41" fill-rule="evenodd" d="M49.8679 35C49.6303 35.9408 49.5162 36.9408 49.5258 37.9997C49.5453 39.8415 49.9296 41.509 50.6773 43H13.9878C13.7294 41.4984 13.6 40.0204 13.6 38.5657C13.6 37.3142 13.6984 36.1255 13.8952 35H49.8679Z" clip-rule="evenodd"/>
<path fill="#ea5a47" fill-rule="evenodd" d="M50.0749 42C50.6387 43.7489 51.6357 45.2885 53.0645 46.6162C54.1169 47.6179 55.2923 48.3921 56.6 48.9419C56.5933 48.9613 56.5866 48.9806 56.58 49H15.4832C15.4012 48.7763 15.3208 48.5505 15.242 48.3225C14.5048 46.1694 14.0154 44.0621 13.7747 42H50.0749Z" clip-rule="evenodd"/>
<path fill="#8967aa" fill-rule="evenodd" d="M53.2427 56C54.1799 54.6035 54.9978 53.0968 55.6988 51.4729C56.017 50.7145 56.3164 49.9246 56.6 49.0998C56.5227 49.0673 56.4459 49.0341 56.3695 49L15.4257 49C16.376 51.6266 17.5555 53.9584 18.9641 56H53.2427Z" clip-rule="evenodd"/>
<path fill="#61b2e4" fill-rule="evenodd" d="M26.1387 62C25.0406 61.736 23.9448 61.0943 22.8504 60.0739C21.922 59.2619 20.7744 57.9039 19.4102 56L52.8061 56C51.4299 57.9501 50.2979 59.3081 49.4186 60.0739C48.2587 61.1435 47.0308 61.7844 45.7313 62H43.8273C42.8977 61.8646 41.8466 61.5576 40.6775 61.0755C39.0398 60.4057 37.5349 60.0739 36.1588 60.0739C34.7156 60.0739 33.1677 60.4057 31.5121 61.0755C30.3926 61.53 29.4199 61.8375 28.5919 62H26.1387Z" clip-rule="evenodd"/>
</g>
</g>
<g id="line">
<path id="path4" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M35.1564 22.0973C35.1189 21.7902 35.0972 21.467 35.0972 21.1273C35.0972 18.6696 36.1641 16.0394 38.0589 13.8888C39.0049 12.7999 40.208 11.8945 41.6669 11.1723C43.1227 10.4608 44.4998 10.0674 45.7949 10C45.8327 10.3422 45.8484 10.6845 45.8484 11.0241C45.8484 13.5842 44.9157 15.9746 43.0566 18.1871C42.2263 19.1604 41.3316 19.9817 40.3848 20.618M55.6988 50.8409C54.9268 52.6293 54.013 54.2756 52.9542 55.7892C51.511 57.8525 50.3293 59.2807 49.4186 60.0739C48.0069 61.3757 46.4944 62.0424 44.8747 62.0803C43.712 62.0803 42.3097 61.7486 40.6775 61.0755C39.0398 60.4056 37.5349 60.0739 36.1588 60.0739C34.7156 60.0739 33.1677 60.4056 31.5122 61.0755C29.854 61.7486 28.5183 62.0993 27.497 62.1341C25.9438 62.2004 24.3957 61.5147 22.8504 60.0739C21.8641 59.2112 20.6304 57.7324 19.1526 55.6375C17.5669 53.4003 16.2633 50.8061 15.242 47.8486C14.1483 44.654 13.6 41.5605 13.6 38.5657C13.6 35.1351 14.3393 32.1762 15.82 29.6967C16.9837 27.7051 18.5318 26.134 20.4694 24.9807C22.407 23.8274 24.5006 23.2396 26.7552 23.202C27.9889 23.202 29.6067 23.5847 31.6171 24.3367C33.6218 25.0913 34.9091 25.4739 35.4734 25.4739C35.8953 25.4739 37.3253 25.0265 39.7495 24.1345C42.0419 23.3073 43.9767 22.9647 45.5617 23.0997C49.8566 23.4472 53.0834 25.145 55.2293 28.2037C51.3881 30.5375 49.488 33.8064 49.5258 37.9997C49.5604 41.266 50.7421 43.9841 53.0645 46.1423C54.1169 47.1439 55.2923 47.9181 56.6 48.4679C56.3164 49.2926 56.0171 50.0825 55.6988 50.8409Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

View file

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="165.77837mm"
height="285.46588mm"
viewBox="0 0 165.77837 285.46588"
version="1.1"
id="svg657"
inkscape:version="1.2.1 (9c6d41e, 2022-07-14)"
sodipodi:docname="SeekiaLogo.svg"
inkscape:export-filename="logo.webp"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview659"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.20970395"
inkscape:cx="307.57647"
inkscape:cy="872.65881"
inkscape:window-width="1366"
inkscape:window-height="713"
inkscape:window-x="0"
inkscape:window-y="55"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
showguides="false"
inkscape:lockguides="true"><sodipodi:guide
position="82.525197,286.83014"
orientation="1,0"
id="guide1415"
inkscape:locked="true" /><sodipodi:guide
position="41.250196,285.76354"
orientation="1,0"
id="guide1326"
inkscape:locked="true" /><sodipodi:guide
position="124.1392,285.59818"
orientation="1,0"
id="guide1328"
inkscape:locked="true" /><inkscape:grid
type="xygrid"
id="grid1330" /><sodipodi:guide
position="-57.997489,220.35903"
orientation="0,-1"
id="guide1332"
inkscape:locked="true" /><sodipodi:guide
position="15.52836,247.67397"
orientation="0,-1"
id="guide1440"
inkscape:locked="true" /></sodipodi:namedview><defs
id="defs654" /><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-22.302021,-7.4340072)"><path
style="fill:#000000;stroke-width:0.264583"
d="m 40.205536,275.0123 -3.153981,-1.05132"
id="path661" /><path
style="fill:#e80000;fill-opacity:1;stroke-width:0.264583"
d="M 56.382832,279.60924 C 51.239382,239.7289 61.359957,231.50765 105.09394,203.40617 176.94698,149.4741 100.0466,118.02071 63.587738,77.51248 30.50685,47.619487 84.844455,-3.2350661 104.82729,45.875659 80.054192,21.086421 47.622662,51.345083 70.498505,70.777615 141.31858,130.93773 179.574,160.3989 104.87901,214.95282 78.56906,230.21561 67.335697,235.8662 56.382832,279.60924 Z"
id="path665"
sodipodi:nodetypes="ccccscc" /><path
style="fill:#e80000;stroke-width:0.264583;fill-opacity:1"
d="m 104.82902,45.874083 c 24.63135,-24.836446 57.13373,5.829466 32.28931,26.865705 -70.843685,59.984682 -106.487042,92.746582 -31.6668,142.667562 47.35445,24.30618 40.13744,46.22366 49.53158,64.99389 2.10117,-27.71541 6.16437,-49.12295 -50.055,-76.69169 C 36.002035,152.74193 90.867499,131.84578 146.33788,77.592488 181.78813,36.065231 116.41323,2.4893118 104.82902,45.874083 Z"
id="path667"
sodipodi:nodetypes="csccccc" /><path
style="fill:#b10000;stroke-width:0.364555;fill-opacity:1"
d="m 80.331861,147.85522 c 2.135365,-2.24147 43.716219,-3.49064 47.980419,-0.37026 1.37786,1.00827 3.4411,1.77362 2.83306,4.37448 -0.60803,2.60086 -51.155882,2.18262 -53.199401,1.33567 -2.043518,-0.84694 0.250558,-3.09843 2.385922,-5.33989 z"
id="path1285"
sodipodi:nodetypes="zszzz" /><path
style="fill:#b10000;stroke-width:0.274695;fill-opacity:1"
d="m 88.943888,132.17784 c 1.235349,-1.98835 27.776122,-3.09645 30.688362,-0.32844 0.94102,0.89441 2.30647,1.57333 2.06975,3.88049 -0.23671,2.30717 -32.61459,1.93615 -33.9722,1.18484 -1.35761,-0.75131 -0.02126,-2.74854 1.214088,-4.73689 z"
id="path1297"
sodipodi:nodetypes="zszzz" /><path
style="fill:#b10000;fill-opacity:1;stroke-width:0.367309"
d="m 78.348722,169.55786 c 2.35516,2.03256 47.524468,1.9908 52.103698,-1.0492 1.47966,-0.9823 2.38454,-2.28669 1.68192,-4.69951 -0.70262,-2.41283 -53.729121,-0.55212 -55.934183,0.29878 -2.20507,0.85089 -0.206585,3.41737 2.148565,5.44993 z"
id="path1299"
sodipodi:nodetypes="zszzz" /><path
style="fill:#b10000;fill-opacity:1;stroke-width:0.294599"
d="m 88.088867,185.98618 c 1.452238,2.08967 30.133193,2.64875 33.105323,-0.3688 0.96035,-0.97506 2.39134,-1.73043 1.99644,-4.18317 -0.39488,-2.45276 -35.279327,-1.29912 -36.69749,-0.4668 -1.418168,0.83231 0.143492,2.92909 1.595727,5.01877 z"
id="path1301"
sodipodi:nodetypes="zszzz" /><path
style="fill:#b10000;stroke-width:0.328612;fill-opacity:1"
d="m 83.098358,231.81561 c 1.767873,-1.98835 39.749592,-3.09645 43.917202,-0.32844 1.34668,0.89441 3.30072,1.57333 2.96198,3.88049 -0.33876,2.30717 -46.673789,1.93615 -48.616628,1.18484 -1.942837,-0.75131 -0.03044,-2.74854 1.737446,-4.73689 z"
id="path1303"
sodipodi:nodetypes="zszzz" /><path
style="fill:#b10000;stroke-width:0.426956;fill-opacity:1"
d="m 73.30728,246.81007 c 2.60647,-2.27662 58.60498,-3.54538 64.74952,-0.37606 1.98548,1.02409 4.86642,1.80144 4.367,4.44309 -0.49945,2.64167 -68.8137,2.21686 -71.678131,1.35662 -2.864431,-0.86023 -0.04489,-3.14702 2.561611,-5.42365 z"
id="path1305"
sodipodi:nodetypes="zszzz" /><path
style="fill:#b10000;stroke-width:0.377168;fill-opacity:1"
d="m 66.578876,262.5716 c 3.031174,-1.52769 69.902824,-3.09235 77.048554,-0.96561 2.309,0.6872 4.41034,2.87312 3.82954,4.64576 -0.58081,1.77266 -80.026324,1.48759 -83.357492,0.91035 -3.331166,-0.57725 -0.5518,-3.0628 2.479398,-4.5905 z"
id="path1307"
sodipodi:nodetypes="zszzz" /></g></svg>

After

Width:  |  Height:  |  Size: 5.9 KiB

View file

@ -0,0 +1,23 @@
<svg id="emoji" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg">
<g id="color">
<rect x="15.0229" y="16.2834" width="41.9541" height="40.9771" fill="#F4AA41" stroke="none"/>
<polyline fill="#E27022" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" points="16,55.7479 11,55.9479 11,60.9896 61,60.9896 61,53.9479 56,54.1479"/>
<polyline fill="#E27022" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" points="56,16.2834 61,16.0834 61,11.0417 11,11.0417 11,18.0834 16,17.8834"/>
</g>
<g id="hair"/>
<g id="skin"/>
<g id="skin-shadow"/>
<g id="line">
<polyline fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" points="16,55.7479 11,55.9479 11,60.9896 61,60.9896 61,53.9479 56,54.1479"/>
<polyline fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" points="56,16.2834 61,16.0834 61,11.0417 11,11.0417 11,18.0834 16,17.8834"/>
<polyline fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" points="56,16.2834 34.6258,17.1383 16,17.8834"/>
<line x1="16" x2="56" y1="55.7479" y2="54.1479" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
<line x1="16" x2="16" y1="22.0023" y2="50.0603" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
<line x1="56" x2="56" y1="22.0023" y2="50.0603" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
<line x1="20.8523" x2="31.8614" y1="24.9034" y2="24.9034" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
<line x1="20.8523" x2="52.019" y1="30.1515" y2="30.1515" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
<line x1="20.8523" x2="52.019" y1="35.3997" y2="35.3997" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
<line x1="20.8523" x2="52.019" y1="40.6479" y2="40.6479" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
<line x1="20.8523" x2="52.019" y1="45.896" y2="45.896" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -0,0 +1,8 @@
<svg id="emoji" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg">
<g id="color">
<path fill="#61b2e4" fill-rule="evenodd" d="M34 16.1628L15 19.2558V34H34V16.1628ZM15 38V52.7442L34 55.8372V38H15ZM38 56.4884L60 60.0698V38H38V56.4884ZM60 34H38V15.5116L60 11.9302V34Z" clip-rule="evenodd"/>
</g>
<g id="line">
<path fill="#000" d="M34 16.1628H35C35 15.8695 34.8713 15.591 34.6478 15.401C34.4244 15.211 34.1288 15.1287 33.8393 15.1758L34 16.1628ZM15 19.2558L14.8393 18.2688C14.3554 18.3476 14 18.7655 14 19.2558H15ZM15 34H14C14 34.5523 14.4477 35 15 35V34ZM34 34V35C34.5523 35 35 34.5523 35 34H34ZM15 38V37C14.4477 37 14 37.4477 14 38H15ZM15 52.7442H14C14 53.2344 14.3554 53.6524 14.8393 53.7312L15 52.7442ZM34 55.8372L33.8393 56.8242C34.1288 56.8713 34.4244 56.789 34.6478 56.599C34.8713 56.409 35 56.1305 35 55.8372H34ZM34 38H35C35 37.4477 34.5523 37 34 37V38ZM38 56.4884H37C37 56.9786 37.3554 57.3966 37.8393 57.4754L38 56.4884ZM60 60.0698L59.8393 61.0568C60.1288 61.1039 60.4244 61.0216 60.6478 60.8316C60.8712 60.6416 61 60.3631 61 60.0698H60ZM60 38H61C61 37.4477 60.5523 37 60 37V38ZM38 38V37C37.4477 37 37 37.4477 37 38H38ZM60 34V35C60.5523 35 61 34.5523 61 34H60ZM38 34H37C37 34.5523 37.4477 35 38 35V34ZM38 15.5116L37.8393 14.5246C37.3554 14.6034 37 15.0214 37 15.5116H38ZM60 11.9302H61C61 11.6369 60.8712 11.3584 60.6478 11.1684C60.4244 10.9784 60.1288 10.8961 59.8393 10.9432L60 11.9302ZM33.8393 15.1758L14.8393 18.2688L15.1607 20.2428L34.1607 17.1498L33.8393 15.1758ZM14 19.2558V34H16V19.2558H14ZM34 33H15V35H34V33ZM33 16.1628V34H35V16.1628H33ZM14 38V52.7442H16V38H14ZM14.8393 53.7312L33.8393 56.8242L34.1607 54.8502L15.1607 51.7572L14.8393 53.7312ZM33 38V55.8372H35V38H33ZM15 39H34V37H15V39ZM37.8393 57.4754L59.8393 61.0568L60.1607 59.0828L38.1607 55.5014L37.8393 57.4754ZM61 60.0698V38H59V60.0698H61ZM38 39H60V37H38V39ZM39 56.4884V38H37V56.4884H39ZM60 33H38V35H60V33ZM39 34V15.5116H37V34H39ZM59.8393 10.9432L37.8393 14.5246L38.1607 16.4986L60.1607 12.9172L59.8393 10.9432ZM61 34V11.9302H59V34H61Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -0,0 +1,97 @@
| «« Seekia Memo »»
|
|- Signature:
| 7KHjbsdLUOsNjBgs_iY8gfcC8tV9GQ
| X7xQGo6sQBxVgcKQvJJMxMILzLmiBq
| hfZWOzYJr_0XEhIGammETuNCAg==
|
|- Identity Key:
| f59a0bce855d6e48105612ae73ffabfc
| 4fac1349226433ff586e08b9b32ffd9d
|
|- Author:
| simonx5yudleks5jhwhnck5s28m
|
|- Memo:
|
| Ethereum Block Height:
| 17474835
|
| Ethereum Block Hash:
| 0x37699eda295c4803243d566cd84fb12e634bd1a8dcf91589566a6a6acb4d1a5a
|
| Date:
| June 13, 2023
|
| Greetings.
|
| My name is Simon Sarasova.
|
| I am deeply concerned about the state of our world.
| Earth's natural beauty is being destroyed as a consequence of humanity's use of technology.
|
| Race extinction is one example of this destruction which causes me anguish.
| Humanity has utilized technology to spread our species throughout the earth, resulting in increased gene flow and racial merging.
| The diverse beauty of the human species is being lost.
|
| There are now more human races on earth than ever before.
| Racial loneliness, which is the inability to find members of the same race to mate with, has become an epidemic.
| Global fertility rates are collapsing.
|
| I am astounded, mesmerized, and fully enamored with the beauty of the human species.
| I feel deep concern as I witness the decline of beautiful racial groups. I feel grief for the beauty that has already been lost.
| I have spent years thinking about these problems and working on a solution.
|
| I have realized that to prevent more race extinctions from occurring, we must encourage members of endangered racial groups to mate with each other.
| To cure racial loneliness, we must help people to find members of their own race to mate with.
|
| These are the reasons why I have created Seekia: A race aware mate discovery network.
|
| Seekia allows users to share their genome-derived race information in their profiles, and find users to mate with based on their race.
|
| Seekia is also genetics-aware.
| Seekia enables users to choose their mate in a way that reduces the probability of their offspring having diseases.
| Users can also choose their mate in such a way to increase the probability of their offspring having certain traits.
|
| The world desperately needs race aware mate discovery technology.
| Seekia's goal is to accelerate the world's adoption of race and genetics aware mate discovery technology.
| Join me in my mission to cure racial loneliness, prevent race extinction, and preserve the beauty of the human species.
|
| Thank you for reading this message.
| Please read the Seekia whitepaper to understand more about the motivations and design of Seekia.
|
| - Simon Sarasova
|
| « Seekia Version 0.1 »
|
| The first release of Seekia is version 0.1.
|
| It is provided in a zip file:
| Seekia-v0.1.zip
|
| Here is the SHA256 checksum of the zip file:
| c1024cc7ce1e4425d7fb450df98baa6c71f24691851665bd9bd94a9ce82a9d56
|
| « Identity Hashes »
|
| Here is my main Seekia identity hash:
| simonx5yudleks5jhwhnck5s28m
|
| Here is my backup identity hash:
| simon4avl22axtjzrlabos7ma8m
|
| My backup identity hash may be useful if my main identity hash is compromised.
|
| « GPG Key »
|
| This is my GPG Key:
| 112CCEE17CDEB7049EE568A2F85404520BA69D2C
|
| « Hash Based Recovery »
|
| This is my hash-based identity recovery method:
| 9417a37f0c22e6dca11c2e5c84c69e55bf828297e7a093e5cc94b59b76124e2b
|
| This can be used to recover my identity if the cryptography used for identity hashes is broken in the future.
|
| «« End Of Memo »»

View file

@ -0,0 +1,43 @@
| «« Seekia Memo »»
|
|- Signature:
| p_zELdp4SWay_8xSw4y-tSI7oZkyfk
| KeYvV8UNVPsXwEcN8dzYPtshxVgd9K
| uNmLxDAEuxGreq_qh1xJlt-DAw==
|
|- Identity Key:
| f59a0bce855d6e48105612ae73ffabfc
| 4fac1349226433ff586e08b9b32ffd9d
|
|- Author:
| simonx5yudleks5jhwhnck5s28m
|
|- Memo:
|
| Ethereum Block Height:
| 17519338
|
| Ethereum Block Hash:
| 0x8e7776808e2aa6ded347a3393ac05114292adbc840e2e1b7db09ecebd94d12c7
|
| Date:
| June 20, 2023
|
|
| This memo is an announcement of Seekia version 0.11.
|
| Filename:
| Seekia-v0.11.zip
|
| SHA256 Checksum:
| 1aeb1126d93359fe9d81c6f4a4042087ef20e56ab189a1db019179903b54a063
|
| Changelog:
|
| This release fixes a bug which resulted in the profileFormat attribute objects list being corrupted.
| This bug caused profiles to fail to be exported and verified.
|
|
| - Simon Sarasova
|
| «« End Of Memo »»

View file

@ -0,0 +1,52 @@
| «« Seekia Memo »»
|
|- Signature:
| XgDeime3IrC2EVdLJe4I2kG6Hxs13p
| PhDAth2uxp9xKjESh8qekAX20-jrsf
| NkxBWKYBmYVbfzA5M8z7u7DjAQ==
|
|- Identity Key:
| f59a0bce855d6e48105612ae73ffabfc
| 4fac1349226433ff586e08b9b32ffd9d
|
|- Author:
| simonx5yudleks5jhwhnck5s28m
|
|- Memo:
|
| Ethereum Block Height:
| 17589089
|
| Ethereum Block Hash:
| 0x478cfcdb9bb6c0e3f68eafa820b494ef84b8fbd3f3ec1a4f2102c51323f2a884
|
| Date:
| June 30, 2023
|
|
| This memo is an announcement of Seekia version 0.20.
|
| Filename:
| Seekia-v0.20.zip
|
| SHA256 Checksum:
| 67d9b7f351458918a54a1902c9ce98a5aa1a40676ab0262319076010da8dc8cd
|
| Changelog:
|
| - Added AppNetworkType to global settings, created package and GUI page to manage it. - Simon Sarasova
| - Fixed bug in GetFolderSizeInBytes which caused it to fail to read sub-folders. - Simon Sarasova
| - Upgraded from Fyne v2.3.4 to v2.3.5 - Simon Sarasova
| - Improved identity hash generation page code to be simpler, less buggy, and added a hashes per second tracker. - Simon Sarasova
| - Improved identity hash generation time estimation. - Simon Sarasova
| - Added editable Whitepaper.md file so improvements to the whitepaper can be made. - Simon Sarasova
| - Replaced unnecessary maps with functions when creating profileAttributeObjects list. - Simon Sarasova
| - Added Changelog. - Simon Sarasova
| - Renamed ProfileType to IdentityType where appropriate. - Simon Sarasova
| - Hid chat filters related to liking/ignoring for moderators. - Simon Sarasova
| - Hid like/ignore buttons for non-mate users. - Simon Sarasova
|
|
| - Simon Sarasova
|
| «« End Of Memo »»

View file

@ -0,0 +1,140 @@
| «« Seekia Memo »»
|
|- Signature:
| YFf5Ofl1E2vA3562HBvs2ubtm6VQLg
| Z1AYOS9F3KYiTJ6YKyq2e-NlN7mF3V
| jfMAOgHkJjdnfEj09ZPQ_mAEBA==
|
|- Identity Key:
| f59a0bce855d6e48105612ae73ffabfc
| 4fac1349226433ff586e08b9b32ffd9d
|
|- Author:
| simonx5yudleks5jhwhnck5s28m
|
|- Memo:
|
| Ethereum Block Height:
| 18527621
|
| Ethereum Block Hash:
| 0x43d6014d847b6c0bd54506b43a958f573c7530ffcfbf948073b700e03537bc73
|
| Date:
| November 8, 2023
|
| This memo is an announcement of Seekia version 0.30.
|
| This version is much closer to my ultimate vision for what Seekia should be. My thinking has evolved and I'm a lot happier with this version than with any previous version.
|
| Seekia now has a Racial Similarity calculator. Whitepaper Version 2 is much clearer and makes way more sense. Network Type switching functionality has been added. The code has been upgraded to utilize Golang version 1.21 features. Many important bug fixes and improvements have been implemented.
|
| Cheers!
|
| - Simon Sarasova
|
| ---
|
| Release Filename:
| Seekia-v0.30.zip
|
| Release SHA256 Checksum:
| eebf5ed39cc550a34f75d066776a2025e6874216844a7e4c22ecf17e63047d9c
|
|
| GPG Signature Filename:
| Seekia-v0.30.zip.asc
|
| GPG Signature SHA256 Checksum:
| 72e424eee3a2a5f38b50541f62016847cc650adaf4cbcd0f9a628d4c79eda6ad
|
|
| Version 0.30 Changelog:
|
| - Improved ReadMe.md. - Simon Sarasova
| - Improved Documentation.md and Future Plans.md. - Simon Sarasova
| - Improved the whitepaper and updated Whitepaper.pdf to version 2. - Simon Sarasova
| - Ran "go mod tidy" and updated some imported modules. - Simon Sarasova
| - Reduced message size by ~33 bytes by removing unnecessary covert public key from the outer message. - Simon Sarasova
| - Improved the GetProfileAttributeHashesMap function to be slightly faster. - Simon Sarasova
| - Added the NumberOfReviews calculated attribute. - Simon Sarasova
| - Improved the readProfiles package in various ways. - Simon Sarasova
| - Improved the ReadRawGenomeFile function. It now returns a genomeMap representing locus values as structs instead of strings. It also now avoids adding unknown locus values to the total loci count. - Simon Sarasova
| - Improved the ViewedModerators and ViewedContent generation progress bars by making them update more frequently. - Simon Sarasova
| - Added the TotalPolygenicDiseaseRiskScore and OffspringTotalPolygenicDiseaseRiskScore calculated attributes. - Simon Sarasova
| - Fixed bug which caused the chat conversations generation progress bar to jump backwards. - Simon Sarasova
| - Improved the SelectMyConversationsSortByAttribute page. - Simon Sarasova
| - Added progress updating to the myChatMessages generation portion of the myChatConversations generation process. - Simon Sarasova
| - Made various optimizations to get the Moderate Profiles page to load faster. It is still too slow. - Simon Sarasova
| - Added a wordLists test package. - Simon Sarasova
| - Improved the ReadProfile function. It now returns an unformatted raw profile map and does not calculate the profile's attribute hashes map. Created new functions to retrieve formatted profile attribute values and profile attribute hash maps. Reading profiles is faster now. - Simon Sarasova
| - Improved the whitepaper. - Simon Sarasova
| - Improved Future Plans.md. - Simon Sarasova
| - Improved the whitepaper. - Simon Sarasova
| - Upgraded msgpack to version 5.4.0. - Simon Sarasova
| - Upgraded Fyne to version 2.4.1. - Simon Sarasova
| - Improved the trait genetic similarity calculation. Each allele is now compared, so locus base pairs with only 1 common allele are counted as being 50% similar. - Simon Sarasova
| - Created a test for the attributeDisplay package. Also added missing attributes to the package. - Simon Sarasova
| - Added the Questionnaire attribute to the attributeDisplay package and the setViewNewProfileChanges page. - Simon Sarasova
| - Improved the whitepaper. - Simon Sarasova
| - Improved Specification.md. - Simon Sarasova
| - Improved the edwardsKeys and blake3 packages. - Simon Sarasova
| - Improved Future Plans.md. - Simon Sarasova
| - Renamed the ExportedProfiles folder to MyExportedProfiles. - Simon Sarasova
| - Content hashes are now created by hashing the entire content bytes. Thus, hashes now incorporate signatures. Content hashes have also been removed from within serialized content, reducing content size. - Simon Sarasova
| - Improved the whitepaper. It now describes how the racial similarity calculator works. - Simon Sarasova
| - Improved the ViewAllMyDesires page. - Simon Sarasova
| - Improved the myChosenAnalysis package and related GUI. - Simon Sarasova
| - A user's chosen genetic analysis is now read into memory. Thus, the analysis json file only has to be unmarshalled once, or whenever a new analysis is generated. - Simon Sarasova
| - Improved app theme colors and the theme selection GUI. Added the Ocean theme. - Simon Sarasova
| - Made various improvements to the View Profile and Desires pages. Added monogenic disease information to fake profiles. - Simon Sarasova
| - Added the Match Score Breakdown page. - Simon Sarasova
| - Added the timestamps folder and ReadMe. - Simon Sarasova
| - Improved the GUI in various ways. - Simon Sarasova
| - Renamed Diseases to Monogenic Diseases, renamed Ailments/Health Risks to Polygenic Diseases. - Simon Sarasova
| - Improved the SelectMyConversationsSortByAttribute page. - Simon Sarasova
| - Added Racial Similarity, Skin Color and Hair Texture profile attributes; added genetic analysis tests; made use of switch statements; and implemented various other improvements and bug fixes. - Simon Sarasova
| - Updated ReadMe.md images. - Simon Sarasova
| - Renamed "Location Composition" to "Ancestry Composition". - Simon Sarasova
| - Removed the navigation bar from all loading screens. The navigation bar was not usable during loading anyway. - Simon Sarasova
| - Improved the Ascending/Descending default for several matches sort by attributes. - Simon Sarasova
| - Updated Fyne to version 2.4.0. - Simon Sarasova
| - Added Contributors.md. - Simon Sarasova
| - Renamed alphabetRange package to byteRange. - Simon Sarasova
| - Renamed notarize to timestamp when referring to memo timestamping. - Simon Sarasova
| - Fixed bug which caused an unnecessary Unknown value item to be added to donut chart statistics items lists. - Simon Sarasova
| - Replaced usage of maps with structs in myChatFilterStatistics package. - Simon Sarasova
| - Added the IsIgnored desire. - Simon Sarasova
| - Replaced usage of maps with structs in myDesireStatistics package. - Simon Sarasova
| - Made use of the GetListOfMapKeys and GetListOfMapValues functions. - Simon Sarasova
| - Renamed Race to Ancestry when referencing ancestral locations. I was trying to equate race and ancestry but they are not the same. - Simon Sarasova
| - Improved chat GUI code to be faster at checking which messages are seen. - Simon Sarasova
| - Replaced all usage of sort package with slices package. - Simon Sarasova
| - Improved the helpers package in various ways. - Simon Sarasova
| - Added information to the GUI to teach the user that location composition and neanderthal variant predictions are averages which will not always match any conceived offspring exactly. - Simon Sarasova
| - Fixed bug on statistics data page which caused empty parentheses to be shown for nonexistent units. - Simon Sarasova
| - Replaced a few list functions in the helpers package with generic versions. - Simon Sarasova
| - Removed splitLists package, replaced its usage with a single generic function. - Simon Sarasova
| - Improved generate package. Fake profiles may now contain genome locus values. - Simon Sarasova
| - User profiles now share genome locus values for rsIDs, not locus identifiers. Thus, profiles are smaller because loci which are used for multiple traits/diseases/rules only require 1 entry. - Simon Sarasova
| - Removed sorting package and replaced its usage with the slices package. - Simon Sarasova
| - Updated badger database to version 4.2.0. - Simon Sarasova
| - Improved statistics functionality and code. Maps have been replaced with structs, simplifying and speeding up code. - Simon Sarasova
| - Upgraded to Golang version 1.21. Made use of new language features. - Simon Sarasova
| - Added NetworkType functionality. Also implemented many fixes and improvements. - Simon Sarasova
| - Moved locus metadata into seperate files for each chromosome. - Simon Sarasova
| - Moved company locus aliases to the locusMetadata package, and added many company aliases. 23andMe files now provide many more locations used in genetic analyses. - Simon Sarasova
| - Switched to using bufio Reader to read genome files for improved performance and better code readability. - Simon Sarasova
| - Added readRawGenomes package tests. - Simon Sarasova
| - Genome maps created from raw genome files now only include loci which are used in the genetic analysis, speeding up analysis time and raw genome file reading. - Simon Sarasova
| - Added seedPhrase package tests. - Simon Sarasova
| - Fixed CRITICAL bug which would rarely result in no randomness being used to generate various keys. Thankfully, seed phrases and identity keys were not affected, so my identity hashes and memos should still be secure. - Simon Sarasova
| - Added locusMetadata package, resulting in simpler code and a more accurate genetic analysis. Now rsID aliases are handled during genome combining. The locus metadata package adds locus position information, which will be necessary for predicting the effects of genetic linkage in probability estimates. - Simon Sarasova
| - Added separators to the genetic reference pages to improve readability. - Simon Sarasova
| - Fixed bug in genetic analysis which caused analysis to not account for multiple different monogenic disease variants on the same locus. - Simon Sarasova
| - Improved the genetic analysis so each locus has an IsPhased status, rather than per-genome. This should improve analysis accuracy for combined genomes. - Simon Sarasova
| - Removed GenomeStrand from the ReadRawGenome function outputs. The function itself will format all locus values to the Plus strand. - Simon Sarasova
| - Started using Int64 to represent RSIDs rather than strings, improved data structure to store genomes with metadata. - Simon Sarasova
|
|
| «« End Of Memo »»

View file

@ -0,0 +1,91 @@
| «« Seekia Memo »»
|
|- Signature:
| 0v2AeP1yLyqRLjlgpYF8_B7SsOJxdD
| YeKYeOG-11GNJI4GGnFB569nZW_KSe
| 5MfZZXh7_kGibUdEV7wmxcT3Dw==
|
|- Identity Key:
| f59a0bce855d6e48105612ae73ffabfc
| 4fac1349226433ff586e08b9b32ffd9d
|
|- Author:
| simonx5yudleks5jhwhnck5s28m
|
|- Memo:
|
| Cardano Block Height:
| 10030712
|
| Cardano Block Hash:
| fbb3b1832fb7620f58a95e5398b97925247100cadf63df6e5e93e43ab883e163
|
| Date:
| March 8, 2024
|
|
| This memo is an announcement of Seekia version 0.40.
|
| Version 0.40 has many improvements. The most important improvements are to the whitepaper, which is now much more logical and effective at explaining Seekia's benefits to humanity.
|
| Golang has been upgraded to version 1.22. Cardano functionality has been added. The memo format has been improved. Chat messages are now simpler and smaller. I added a neural-network based genetic trait prediction system using OpenSNP for training data. Unfortunately, I can't get the model to train, so I don't know how accurate its predictions will be using its current architecture. I also changed Seekia's branding from Prevent Race Extinction to Prevent Beauty Extinction to better explain Seekia's goal of preventing the world's most beautiful races from going extinct.
|
| Cheers!
|
| - Simon Sarasova
|
| ---
|
| Release Filename:
| Seekia-v0.40.zip
|
| Release SHA256 Checksum:
| e5dafd5df1813272a3e9431ff961194d36de1e2bb7a69fffee0c1569a9f4f4a8
|
|
| GPG Signature Filename:
| Seekia-v0.40.zip.asc
|
| GPG Signature SHA256 Checksum:
| baaf785aab14b943beae8c3f6ef56cea8a0451e049c1bf46272a7489ff491ba4
|
|
| Version 0.40 Changelog:
|
| - Improved Whitepaper.md and upgraded Whitepaper.pdf to version 4. - Simon Sarasova
| - Improved Documentation.md. - Simon Sarasova
| - Improved Whitepaper.md and upgraded Whitepaper.pdf to version 3. - Simon Sarasova
| - Improved ReadMe.md. - Simon Sarasova
| - Improved the readMemos_test package. - Simon Sarasova
| - Improved Whitepaper.md. - Simon Sarasova
| - Improved ReadMe.md, Documentation.md, and Future Plans.md. - Simon Sarasova
| - Upgraded the golang.org/x/crypto and golang.org/x/image modules. - Simon Sarasova
| - Improved the seedPhrase and seedPhrase_test packages. - Simon Sarasova
| - Fixed a bug which created empty database entries. - Simon Sarasova
| - Made use of slices.Concat(). - Simon Sarasova
| - Improved the goeffects and imageEffects packages. Created the imageEffects_test package. - Simon Sarasova
| - Upgraded Fyne to version 2.4.4. - Simon Sarasova
| - Replaced "Prevent Race Extinction" with "Prevent Beauty Extinction". - Simon Sarasova
| - Improved the My Data page. - Simon Sarasova
| - Fixed a bug which caused Seekia to fail to check for user identities before deleting an app user. - Simon Sarasova
| - Added Gorgonia to Imports.md and added its license. - Simon Sarasova
| - Upgraded to Golang version 1.22. Made use of new language features. - Simon Sarasova
| - Improved the memo format so empty lines do not contain unnecessary whitespace. Added the ability to view the unarmored content of memos. - Simon Sarasova
| - Improved the createMemos and createMemos_test packages. Created the readMemos_test package. - Simon Sarasova
| - Improved the seedPhrase and seedPhrase_test packages. - Simon Sarasova
| - Added the capacity parameter to calls to make() when creating slices for improved performance. - Simon Sarasova
| - Added Cardano functionality. - Simon Sarasova
| - Upgraded Circl to version 1.3.7. - Simon Sarasova
| - Updated Fyne to version 2.4.3. - Simon Sarasova
| - Implemented neural network training and prediction for genetic traits. Models do not train or predict accurately yet. - Simon Sarasova
| - Improved ReadMe.md. - Simon Sarasova
| - Improved Documentation.md. - Simon Sarasova
| - Improved message sorting so messages with the same TimeSent always sort in the same order. - Simon Sarasova
| - Simplified message construction and made messages smaller by removing the Covert Key and replacing its functionality with the additionalData field. - Simon Sarasova
| - Created the Create Genetic Models utility. Started to build the neural network genetic trait prediction functionality. - Simon Sarasova
| - Removed unnecessary sorted datastores from myMatches, myChatConversations, viewedModerators, viewedContent, and viewedHosts. - Simon Sarasova
| - Fixed bug which caused chat messages to never load if user identity did not exist. - Simon Sarasova
| - Improved Whitepaper.md. - Simon Sarasova
|
|
| «« End Of Memo »»

View file

@ -0,0 +1,90 @@
| «« Seekia Memo »»
|
|- Signature:
| cu_Hm29bxoQUJhK4SCFCh5XfEuevRV
| 74XqE13x_B9mFboonsSlX25Nq-JV-b
| Dx4LaPOVtj_3ZiB16LygAXSiAQ==
|
|- Identity Key:
| f59a0bce855d6e48105612ae73ffabfc
| 4fac1349226433ff586e08b9b32ffd9d
|
|- Author:
| simonx5yudleks5jhwhnck5s28m
|
|- Memo:
|
| Cardano Block Height:
| 10168773
|
| Cardano Block Hash:
| df2febc3ea2008560b44ae5190be496b25bf5d4814aae12efd95a6f8dab8a7df
|
| Date:
| April 10, 2024
|
|
| This memo is an announcement of Seekia version 0.50.
|
| Version 0.50 contains significant improvements to Seekia's branding, documentation, and whitepaper.
|
| Cheers!
|
| - Simon Sarasova
|
| ---
|
| The file "Seekia-v0.50.tgz" contains the current Seekia source code.
|
| The file "SeekiaGitHistory-v0.50.bundle" contains Seekia's Git commit history.
|
| ---
|
| Release Filename:
| Seekia-v0.50.tgz
|
| Release SHA256 Checksum:
| 163afee5b3fa85f0600a1b651b64780482f72fd58096796a4bea4c01c6c22b5a
|
|
| Release GPG Signature Filename:
| Seekia-v0.50.tgz.asc
|
| Release GPG Signature SHA256 Checksum:
| ce6d9eb7a6b016b386dcddd1c6fda87c7c43f8cb3a1197ba367a428c449d4537
|
|
|
| Release Git History Filename:
| SeekiaGitHistory-v0.50.bundle
|
| Release Git History SHA256 Checksum:
| 91edbccf32d90abe9670aeb5aed800d21c3c1ec94f0791df2a9f443ff6b85f17
|
|
| Release Git History GPG Signature Filename:
| SeekiaGitHistory-v0.50.bundle.asc
|
| Release Git History GPG Signature SHA256 Checksum:
| 8c36a33ab7c0111801e4b73ca25a280753ed7201686d72054c0d571b57d4cfb9
|
| ---
|
| Version 0.50 Changelog:
|
| - Improved Whitepaper.md and upgraded Whitepaper.pdf to Version 5. - Simon Sarasova
| - Improved Whitepaper.md. - Simon Sarasova
| - Upgraded the golang.org/x/crypto module to version 0.21.0. - Simon Sarasova
| - Improved Whitepaper.md and Future Plans.md. - Simon Sarasova
| - Improved Whitepaper.md. - Simon Sarasova
| - Fixed a bug in the View Profile GUI which caused the View Trait Rules page to fail to load. - Simon Sarasova
| - Added all calculated attributes to the attributeDisplay package. Improved the currencies package. - Simon Sarasova
| - Added folders for each release in timestamps/Releases to accommodate releases with multiple files. - Simon Sarasova
| - Updated the worldCities.messagepack file to version 2.2 of the locations database. Made the file smaller by storing city identifiers instead of names. - Simon Sarasova
| - Improved the generate and createMemos_test packages. - Simon Sarasova
| - Replaced "Facilitate eugenic breeding" with "Beautify the human species" in some places. - Simon Sarasova
| - Improved Documentation.md. - Simon Sarasova
| - Replaced "Prevent Beauty Extinction" with "Facilitate Eugenic Breeding" - Simon Sarasova
|
|
| «« End Of Memo »»

127
resources/pages/about.html Normal file
View file

@ -0,0 +1,127 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Seekia - {{.About}}</title>
<link rel="stylesheet" type="text/css" href="../style.css">
{{.CodeSnippet_MetaTags}}
</head>
<body>
<div class = "pageDiv">
{{.CodeSnippet_Header}}
<h2 class = "pageHeading">About</h2>
<hr class = "separator">
<p><b>Seekia aims to accelerate humanity's adoption of race and genetics aware mate discovery technology.</b></p>
<p><b>Seekia aims to bring genetic order to humanity's breeding patterns.</b></p>
<hr class = "separator">
<div class = "aboutPageDescriptionSection">
<p><b><i>Be Race Aware</i></b></p>
<div class = "thinlinebreak"></div>
<p>Seekia is a mate discovery network where users can find a mate while having a deep awareness of each potential partner's race.</p>
<div class = "thinlinebreak"></div>
<p>Users can share racial information in their profiles such as their eye, skin, and hair color; hair texture; genetic ancestry; haplogroups; and the alleles of their genes which effect physical traits.</p>
<div class = "thinlinebreak"></div>
<p>Seekia enables users to browse and filter potential mates by their racial attributes.</p>
<div class = "thinlinebreak"></div>
<p>Seekia can also calculate the racial characteristics for prospective offspring between users.</p>
<div class = "thinlinebreak"></div>
<p>Seekia allows for users to predict and choose the race of their offspring by selecting a mate who is the most capable and likely to produce offspring of their desired race. <p>
<div class = "thinlinebreak"></div>
<p><b><i>Curing Racial Loneliness</i></b></p>
<div class = "thinlinebreak"></div>
<p>Seekia aims to cure racial loneliness by helping people to find members of their own race to mate with.</p>
<p>Seekia aims to help users to produce offspring who resemble them.</p>
<div class = "thinlinebreak"></div>
<p><b><i>Facilitating Eugenic Breeding</i></b></p>
<div class = "thinlinebreak"></div>
<p>Seekia aims to improve humanity's genetics by making humans more beautiful, healthy, and intelligent.</p>
<div class = "thinlinebreak"></div>
<p>Users can filter and sort users by their genetic disease and trait information.</p>
<div class = "thinlinebreak"></div>
<p>Users can analyze their genomes using the Seekia app to learn about monogenic disease risks, polygenic disease risks, and traits.</p>
<div class = "thinlinebreak"></div>
<p>Users can share their disease and trait information in their profiles.</p>
<div class = "thinlinebreak"></div>
<p>Seekia allows users to choose their mate in such a way to reduce the probability of their offspring having diseases and increase the probability of their offspring having certain traits.</p>
<div class = "thinlinebreak"></div>
<p>Seekia users will choose mates who are the most likely to produce beautiful, healthy, and intelligent offspring.</p>
</div>
<hr class = "separator">
<br class = "linebreak">
<p><b>Learn more by reading the Seekia whitepaper.</b></p>
<br class = "linebreak">
<div class = "readTheWhitepaperRow">
<img class = "whitepaperIcon" src = "../images/whitepaper.svg"></img>
<a class = "readTheWhitepaperLink" href ="../assets/Seekia.pdf" target=”_blank”>Read the Whitepaper</a>
</div>
<hr class = "separator">
<h2>Websites</h2>
<p>Below are the official Seekia websites.</p>
<p>These sites should be nearly identical to the website you are currently viewing.</p>
<div class = "aboutWebsiteBox">
<p><b>Clearnet Site:</b></p>
<a href = "https://seekia.net" target = "_blank">Seekia.net</a>
</div>
<div class = "aboutWebsiteBox">
<p><b>Ethereum IPFS Site:</b></p>
<a href = "ipns://seekia.eth" target = "_blank">Seekia.eth</a>
</div>
<div class = "aboutWebsiteBox">
<p><b>Tor Site:</b></p>
<a href = "http://seekia77v2rqfp4i4flavj425txtqjpn2yldadngdr45fjitr72fakid.onion" target = "_blank">seekia77v2rqfp4i4flavj425txtqjpn2yldadngdr45fjitr72fakid.onion</a>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,283 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Seekia - {{.Archive}}</title>
<link rel="stylesheet" type="text/css" href="../style.css">
{{.CodeSnippet_MetaTags}}
</head>
<body>
<div class = "pageDiv">
{{.CodeSnippet_Header}}
<h2 class = "pageHeading">Archive</h2>
<hr class = "separator">
<p><b>This page contains links to download all historical Seekia releases.</b></p>
<p>These releases are hosted on IPFS.</p>
<p>IPFS is a decentralized network where content can be hosted on multiple machines.</p>
<p>Each release has 2 download methods: IPFS and Gateway.</p>
<p>IPFS links require using software that can download content from the IPFS network, such as the Brave Browser.</p>
<p>Gateway links allow you to download from a third-party website using any browser.</p>
<p>You should verify the SHA256 checksum for each file you download.</p>
<div class = "archiveReleaseBox">
<h2>Version 0.50</h2>
<hr class = "archiveReleaseBoxSeparator">
<p>Date:</p>
<p><b>April 10, 2024</b></p>
<hr class = "archiveReleaseBoxSeparator">
<p>Memo Announcement:</p>
<a href = "../memos/Version0.50.txt" target = "_blank">Version0.50.txt</a>
<hr class = "archiveReleaseBoxSeparator">
<p>Release Filenames:</p>
<p><b>Seekia-v0.50.tgz</b></p>
<p><b>SeekiaGitHistory-v0.50.bundle</b></p>
<hr class = "archiveReleaseBoxSeparator">
<p>Download via IPFS:</p>
<a href = "ipfs:bafybeie6nkmucrvo3i7bonmlf77dlna65tjogsq5zmrcpqke7pvdkiumhy" target = "_blank">Seekia-v0.50.tgz</a>
<a href = "ipfs:bafybeiass5adiqiw65i67ox3jt3rx3r54h5rhvwrepd2rbjp2ybftww6ci" target = "_blank">SeekiaGitHistory-v0.50.bundle</a>
<hr class = "archiveReleaseBoxSeparator">
<p>Download via IPFS Gateway:</p>
<a href = "https://ipfs.io/ipfs/bafybeie6nkmucrvo3i7bonmlf77dlna65tjogsq5zmrcpqke7pvdkiumhy" target = "_blank">Seekia-v0.50.tgz</a>
<a href = "https://ipfs.io/ipfs/bafybeiass5adiqiw65i67ox3jt3rx3r54h5rhvwrepd2rbjp2ybftww6ci" target = "_blank">SeekiaGitHistory-v0.50.bundle</a>
<hr class = "archiveReleaseBoxSeparator">
<p>SHA256 Checksums:</p>
<p><i>Seekia-v0.50.tgz:</i></p>
<p><b>163afee5b3fa85f0600a1b651b64780482f72fd58096796a4bea4c01c6c22b5a</b></p>
<p><i>SeekiaGitHistory-v0.50.bundle:</i></p>
<p><b>91edbccf32d90abe9670aeb5aed800d21c3c1ec94f0791df2a9f443ff6b85f17</b></p>
<hr class = "archiveReleaseBoxSeparator">
<p>PGP Signatures:</p>
<a href = "../signatures/Seekia-v0.50.tgz.asc" target = "_blank">Seekia-v0.50.tgz.asc</a>
<a href = "../signatures/SeekiaGitHistory-v0.50.bundle.asc" target = "_blank">SeekiaGitHistory-v0.50.bundle.asc</a>
</div>
<div class = "archiveReleaseBox">
<h2>Version 0.40</h2>
<hr class = "archiveReleaseBoxSeparator">
<p>Date:</p>
<p><b>March 8, 2024</b></p>
<hr class = "archiveReleaseBoxSeparator">
<p>Memo Announcement:</p>
<a href = "../memos/Version0.40.txt" target = "_blank">Version0.40.txt</a>
<hr class = "archiveReleaseBoxSeparator">
<p>Filename:</p>
<p><b>Seekia-v0.40.zip</b></p>
<hr class = "archiveReleaseBoxSeparator">
<a href = "ipfs:bafybeiebbk2d63tr6dueqtb7av4kbxhl665tks5bh4sooawfgpegv7yceq" target = "_blank">Download via IPFS</a>
<a href = "https://ipfs.io/ipfs/bafybeiebbk2d63tr6dueqtb7av4kbxhl665tks5bh4sooawfgpegv7yceq" target = "_blank">Download via IPFS Gateway</a>
<hr class = "archiveReleaseBoxSeparator">
<p>SHA256 Checksum:</p>
<p><b>e5dafd5df1813272a3e9431ff961194d36de1e2bb7a69fffee0c1569a9f4f4a8</b></p>
<hr class = "archiveReleaseBoxSeparator">
<p>PGP Signature:</p>
<a href = "../signatures/Seekia-v0.40.zip.asc" target = "_blank">Seekia-v0.40.zip.asc</a>
</div>
<div class = "archiveReleaseBox">
<h2>Version 0.30</h2>
<hr class = "archiveReleaseBoxSeparator">
<p>Date:</p>
<p><b>November 8, 2023</b></p>
<hr class = "archiveReleaseBoxSeparator">
<p>Memo Announcement:</p>
<a href = "../memos/Version0.30.txt" target = "_blank">Version0.30.txt</a>
<hr class = "archiveReleaseBoxSeparator">
<p>Filename:</p>
<p><b>Seekia-v0.30.zip</b></p>
<hr class = "archiveReleaseBoxSeparator">
<a href = "ipfs:bafybeigvap6jbcw6opwiwyxtcp54th5kwsrwwmmo6cmxnqlekgqonmnkcu" target = "_blank">Download via IPFS</a>
<a href = "https://ipfs.io/ipfs/bafybeigvap6jbcw6opwiwyxtcp54th5kwsrwwmmo6cmxnqlekgqonmnkcu" target = "_blank">Download via IPFS Gateway</a>
<hr class = "archiveReleaseBoxSeparator">
<p>SHA256 Checksum:</p>
<p><b>eebf5ed39cc550a34f75d066776a2025e6874216844a7e4c22ecf17e63047d9c</b></p>
<hr class = "archiveReleaseBoxSeparator">
<p>PGP Signature:</p>
<a href = "../signatures/Seekia-v0.30.zip.asc" target = "_blank">Seekia-v0.30.zip.asc</a>
</div>
<div class = "archiveReleaseBox">
<h2>Version 0.20</h2>
<hr class = "archiveReleaseBoxSeparator">
<p>Date:</p>
<p><b>June 30, 2023</b></p>
<hr class = "archiveReleaseBoxSeparator">
<p>Memo Announcement:</p>
<a href = "../memos/Version0.20.txt" target = "_blank">Version0.20.txt</a>
<hr class = "archiveReleaseBoxSeparator">
<p>Filename:</p>
<p><b>Seekia-v0.20.zip</b></p>
<hr class = "archiveReleaseBoxSeparator">
<a href = "ipfs:bafybeihd4zqr7i7rpfa2q7yqgw3dwen2bzkkel3gp6olyfnsd2c6ctshke" target = "_blank">Download via IPFS</a>
<a href = "https://ipfs.io/ipfs/bafybeihd4zqr7i7rpfa2q7yqgw3dwen2bzkkel3gp6olyfnsd2c6ctshke" target = "_blank">Download via IPFS Gateway</a>
<hr class = "archiveReleaseBoxSeparator">
<p>SHA256 Checksum:</p>
<p><b>67d9b7f351458918a54a1902c9ce98a5aa1a40676ab0262319076010da8dc8cd</b></p>
<hr class = "archiveReleaseBoxSeparator">
<p>PGP Signature:</p>
<a href = "../signatures/Seekia-v0.20.zip.asc" target = "_blank">Seekia-v0.20.zip.asc</a>
</div>
<div class = "archiveReleaseBox">
<h2>Version 0.11</h2>
<hr class = "archiveReleaseBoxSeparator">
<p>Date:</p>
<p><b>June 20, 2023</b></p>
<hr class = "archiveReleaseBoxSeparator">
<p>Memo Announcement:</p>
<a href = "../memos/Version0.11.txt" target = "_blank">Version0.11.txt</a>
<hr class = "archiveReleaseBoxSeparator">
<p>Filename:</p>
<p><b>Seekia-v0.11.zip</b></p>
<hr class = "archiveReleaseBoxSeparator">
<a href = "ipfs:bafybeibg2ejb5pnktcfrlbo7m22vbznheg6lbov56zo3q77abqotpldlfm" target = "_blank">Download via IPFS</a>
<a href = "https://ipfs.io/ipfs/bafybeibg2ejb5pnktcfrlbo7m22vbznheg6lbov56zo3q77abqotpldlfm" target = "_blank">Download via IPFS Gateway</a>
<hr class = "archiveReleaseBoxSeparator">
<p>SHA256 Checksum:</p>
<p><b>1aeb1126d93359fe9d81c6f4a4042087ef20e56ab189a1db019179903b54a063</b></p>
<hr class = "archiveReleaseBoxSeparator">
<p>PGP Signature:</p>
<a href = "../signatures/Seekia-v0.11.zip.asc" target = "_blank">Seekia-v0.11.zip.asc</a>
</div>
<div class = "archiveReleaseBox">
<h2>Version 0.1</h2>
<hr class = "archiveReleaseBoxSeparator">
<p>Date:</p>
<p><b>June 13, 2023</b></p>
<hr class = "archiveReleaseBoxSeparator">
<p>Memo Announcement:</p>
<a href = "../memos/HelloWorld.txt" target = "_blank">HelloWorld.txt</a>
<hr class = "archiveReleaseBoxSeparator">
<p>Filename:</p>
<p><b>Seekia-v0.1.zip</b></p>
<hr class = "archiveReleaseBoxSeparator">
<a href = "ipfs:bafybeiaqoclxqgsapqnns7yg2zzxzqwxxeca637znqi22ui6puvjqfsake" target = "_blank">Download via IPFS</a>
<a href = "https://ipfs.io/ipfs/bafybeiaqoclxqgsapqnns7yg2zzxzqwxxeca637znqi22ui6puvjqfsake" target = "_blank">Download via IPFS Gateway</a>
<hr class = "archiveReleaseBoxSeparator">
<p>SHA256 Checksum:</p>
<p><b>c1024cc7ce1e4425d7fb450df98baa6c71f24691851665bd9bd94a9ce82a9d56</b></p>
<hr class = "archiveReleaseBoxSeparator">
<p>PGP Signature:</p>
<a href = "../signatures/Seekia-v0.1.zip.asc" target = "_blank">Seekia-v0.1.zip.asc</a>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Seekia - {{.ChooseLanguage}}</title>
<link rel="stylesheet" type="text/css" href="../style.css">
{{.CodeSnippet_MetaTags}}
</head>
<body>
<div class = "pageDiv">
{{.CodeSnippet_Header}}
<h2 class = "pageHeading"> {{.ChooseLanguage}}: </h2>
<div class = "chooseLanguageButtonsDiv">
<a class = "chooseLanguageButton" href="../en/index.html">English</a>
<a class = "chooseLanguageButton" href="../es/index.html">Español</a>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,61 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Seekia - {{.Contribute}}</title>
<link rel="stylesheet" type="text/css" href="../style.css">
{{.CodeSnippet_MetaTags}}
</head>
<body>
<div class = "pageDiv">
{{.CodeSnippet_Header}}
<h2 class = "pageHeading">Contribute</h2>
<hr class = "separator">
<p><b>Join us in our goal of curing racial loneliness and facilitating eugenic breeding.</b></p>
<hr class = "separator">
<h2>Git Repository</h2>
<img class = "codebergLogo" src="../images/codebergLogo.svg">
<p>Visit the Git repository to contribute to the source code of Seekia.</p>
<a href = "https://codeberg.org/sarasova/seekia" target = "_blank"><b>Codeberg.org/sarasova/seekia</b></a>
<hr class = "separator">
<h2>Contact</h2>
<img class = "contactIcon" src="../images/contact.svg">
<p>Contact Seekia's creator and lead maintainer, Simon Sarasova.</p>
<p>Visit his website for his contact information:</p>
<a href = "ipns://SimonSarasova.eth/contact.html" target = "_blank"><b>SimonSarasova.eth/contact.html</b> </a>
<p>To access a .eth website, you can use Brave browser.</p>
<hr class = "separator">
<p>You can also use a trusted gateway to access his website.</p>
<p>You should visit his site from multiple gateways to ensure you are seeing an authentic version of his site.</p>
<a href="https://SimonSarasova.eth.limo/contact.html" target=”_blank”>SimonSarasova.eth.limo/contact.html</a>
<a href="https://SimonSarasova.eth.link/contact.html" target=”_blank”>SimonSarasova.eth.link/contact.html</a>
</div>
</body>
</html>

View file

@ -0,0 +1,137 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Seekia - {{.Download}}</title>
<link rel="stylesheet" type="text/css" href="../style.css">
{{.CodeSnippet_MetaTags}}
</head>
<body>
<div class = "pageDiv">
{{.CodeSnippet_Header}}
<h2 class = "pageHeading">Download</h2>
<hr class = "separator">
<p><b>Seekia is unfinished software. It does not connect to the internet or download profiles.</b></p>
<p>You must compile it yourself to run it. The instructions are included in the download.</p>
<hr class = "separator">
<h2>Download Seekia Version 0.50</h2>
<p>File Name: <b>Seekia-v0.50.tgz</b></p>
<a class = "blueDownloadButton" href="{{.DownloadSeekiaLink}}" target=”_blank”>{{.Download}}</a>
<hr class = "separator">
<h2>Verify File Integrity</h2>
<p>You should verify the file downloaded correctly by verifying the file's SHA256 checksum.</p>
<hr class = "separator">
<p>Seekia v0.50 SHA256 Checksum:</p>
<p><i>163afee5b3fa85f0600a1b651b64780482f72fd58096796a4bea4c01c6c22b5a</i></p>
<hr class = "separator">
<p>Use the command for your operating system to compute the file's checksum.</p>
<p>The result from the command should match the above checksum.</p>
<div class = "operatingSystemBox">
<img class = "operatingSystemLogo" src = "../images/linux.svg"></img>
<b class = "operatingSystemName">Linux</b>
<code class = "codeblock" > sha256sum Seekia-v0.50.tgz</code>
</div>
<div class = "operatingSystemBox">
<img class = "operatingSystemLogo" src = "../images/mac.svg"></img>
<b class = "operatingSystemName">Mac</b>
<code class = "codeblock" > shasum -a 256 Seekia-v0.50.tgz</code>
</div>
<div class = "operatingSystemBox">
<img class = "operatingSystemLogo" src = "../images/windows.svg"></img>
<b class = "operatingSystemName">Windows</b>
<code class = "codeblock"> Get-FileHash Seekia-v0.50.tgz</code>
</div>
<hr class = "separator">
<h2>Verify File Authenticity</h2>
<p> You should verify the downloaded file is authentic by verifying its PGP signature.</p>
<hr class = "separator">
<h3>Download v0.50 PGP Signature:</h3>
<a href="../signatures/Seekia-v0.50.tgz.asc" target=”_blank”>Seekia-v0.50.tgz.asc</a>
<hr class = "separator">
<p>You must verify the signature and retrieve the PGP key which signed the release.</p>
<p>You can use GnuPG, a library for verifying PGP signatures.</p>
<p>Below are the instructions for each operating system.</p>
<hr class = "separator">
<div class = "operatingSystemBox">
<img class = "operatingSystemLogo" src = "../images/linux.svg"></img>
<b class = "operatingSystemName">Linux</b>
<p>Use this command to get the signing key.</p>
<code class = "codeblock"> gpg --verify Seekia-v0.50.tgz.asc Seekia-v0.50.tgz</code>
</div>
<div class = "operatingSystemBox">
<div>
<img class = "operatingSystemLogo" src = "../images/mac.svg"></img>
<img class = "operatingSystemLogo" src = "../images/windows.svg"></img>
</div>
<b class = "operatingSystemName">Windows/Mac</b>
<p>Use a search engine to learn how to verify PGP signatures.</p>
</div>
<hr class = "separator">
<p>You must verify the signing key belongs to the author, Simon Sarasova.</p>
<hr class = "separator">
<p>Simon Sarasova's GPG signing key:</p>
<p><i>112CCEE17CDEB7049EE568A2F85404520BA69D2C</i></p>
<hr class = "separator">
<p>Simon's signing key is also located on his website:</p>
<a href = "ipns://SimonSarasova.eth/keys.html" target = "_blank"><b>SimonSarasova.eth/keys.html</b> </a>
<p>To access a .eth website, you can use Brave browser.</p>
<hr class = "separator">
<p>You can also use a trusted gateway to access his website.</p>
<p>You should visit his site from multiple gateways to ensure you are seeing an authentic version of his site.</p>
<a href="https://SimonSarasova.eth.limo/keys.html" target=”_blank”>SimonSarasova.eth.limo/keys.html</a>
<a href="https://SimonSarasova.eth.link/keys.html" target=”_blank”>SimonSarasova.eth.link/keys.html</a>
<hr class = "separator">
<br class = "linebreak">
<a href = "{{.LanguageURLBase}}archive.html"><b>Download Archived Versions</b></a>
</div>
</body>
</html>

View file

@ -0,0 +1,90 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Seekia - {{.BeRaceAware}}</title>
<link rel="stylesheet" type="text/css" href="{{.BaseURL}}/style.css">
<meta name="description" content="Seekia is a race and genetics aware mate discovery network.">
{{.CodeSnippet_MetaTags}}
</head>
<body>
<div class = "pageDiv">
{{.CodeSnippet_Header}}
<h2 class = "seekiaIsHeading">{{.SeekiaIsDescription}}</h2>
<p>The goal of Seekia is to help humanity mate in a race and genetics aware manner.</p>
<img class = "homePageScreenshot" src = "{{.BaseURL}}/images/applicationScreenshots/en/homePage.webp"></img>
<hr class = "separator">
<h2>{{.BeRaceAware}}</h2>
<p>Find members of the race which you desire.</p>
<p>View racial information about users such as eye, skin, and hair color; genetic ancestry; haplogroups; and more. </p>
<p>View the calculated ancestry of your prospective offspring with each user.</p>
<img class = "ancestryCompositionScreenshot" src = "{{.BaseURL}}/images/applicationScreenshots/en/ancestryComposition.webp"></img>
<hr class = "separator">
<h2>{{.TheCureToRacialLoneliness}}</h2>
<p>Sort your matches by their racial similarity to yourself.</p>
<p>Find matches who look like you, and produce offspring who resemble you.</p>
<img class = "racialSimilarityScreenshot" src = "{{.BaseURL}}/images/applicationScreenshots/en/racialSimilarity.webp"></img>
<hr class = "separator">
<h2>{{.BeGeneticsAware}}</h2>
<p>Understand your offspring's genetic disease risk and trait scores.</p>
<p>Filter your matches based on a calculated genetic analysis for your offspring.</p>
<p>Maximize the probability of a healthy offspring who has the traits which you desire.</p>
<img class = "offspringDiseaseProbabilitiesScreenshot" src = "{{.BaseURL}}/images/applicationScreenshots/en/offspringDiseaseProbabilities.webp"></img>
<hr class = "separator">
<h2>{{.BreedInAEugenicManner}}</h2>
<p>Seekia aims to facilitate eugenic breeding by encouraging humans to breed more beautiful, healthy, and intelligent offspring.</p>
<p>Seekia aims to help members of the world's most beautiful races to meet and have children.</p>
<img class = "totalDiseaseRiskScreenshot" src = "{{.BaseURL}}/images/applicationScreenshots/en/totalDiseaseRisk.webp"></img>
<hr class = "separator">
<h2>{{.BrowseForFree}}</h2>
<p>Browse user profiles for free.</p>
<p>Broadcasting a profile and chatting costs money.</p>
<img class = "browseMatchesScreenshot" src = "{{.BaseURL}}/images/applicationScreenshots/en/browseMatches.webp"></img>
<hr class = "separator">
<h2>{{.OpenSource}}</h2>
<p>The Seekia application source code is released into the public domain.</p>
<br class = "linebreak">
<a class = "blueDownloadButton" href="{{.LanguageURLBase}}download.html">{{.Download}}</a>
</div>
</body>
</html>

1
resources/release/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
*.tgz

View file

@ -0,0 +1,8 @@
## Read Me
This is the folder where you must place the Seekia release .tgz file.
You can use an empty file if you want, but it must be named the correct filename.
The current release filename is stored in `main.go` in the `currentReleaseFilename` variable.

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIkBAAWCgHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmSOPGzA7SYAmDMEZH98
qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0
H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8
3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW
AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm
GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/
fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV
bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD
wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE
LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad
LJNDAP9vIHmvGse5DZKG+jXQqOqdHqpjpU8Bawt0drX8mJxxiQEAs6TUsAC66+NM
XVEglnSCDKMtqo7KnGcBcyj1ozZIggI=
=flkF
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIkBAAWCgHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmSRTtDA7SYAmDMEZH98
qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0
H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8
3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW
AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm
GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/
fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV
bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD
wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE
LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad
LDLZAPwOECaD5UzQ5m79zDzTxJ0/ZhCwqrYmVSwT5xyr5mbscgD7ByNq3AIhw50Q
oFZ5h/plZRXoF+IPyicxezxbJ/gA/Ac=
=U0jq
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIkBAAWCgHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmSeQl7A7SYAmDMEZH98
qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0
H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8
3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW
AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm
GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/
fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV
bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD
wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE
LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad
LFXAAQDE+5EFzshzWJ4T9HgduK7g0p1haXEvMatSNUjjJZu94wD/aS+aaVD2sSer
DOOA1qXNXAiN2PLheArlFzzrR+ZwAQg=
=DEre
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIkBAAWCgHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmVLUq3A7SYAmDMEZH98
qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0
H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8
3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW
AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm
GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/
fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV
bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD
wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE
LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad
LNs+AP4sZa4YebJ04u4vlbt1yspginT4NMnubK/7Aia/9AkrswD7Bh3AtHNeZHgO
5jnpcI7tkzQPvcLE4AcUZRIQ349rjQI=
=J9wv
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIkBAAWCAHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmXrYzvA7SYAmDMEZH98
qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0
H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8
3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW
AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm
GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/
fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV
bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD
wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE
LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad
LAOMAP9hxdCvZKK7Lz6Va4xc31HvfdxxRRRn2czDS17UR8vIDwD/ZGPCCTBFNA1B
6BJMbyzLAoq2eKlCx2bNToKwX4gZ6wQ=
=PSL2
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIkBAAWCAHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmYWd1XA7SYAmDMEZH98
qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0
H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8
3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW
AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm
GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/
fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV
bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD
wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE
LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad
LDxJAP0RGqEc3nPHu5V2n3hrWgbnYRYASA/cfY+yhw1YBNIt2AEA9RI09pYlJnPc
CpaW9vW5yYE5gyNV8nlkCjwInnZhjQo=
=FbtU
-----END PGP SIGNATURE-----

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIkBAAWCAHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmYWeWfA7SYAmDMEZH98
qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0
H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8
3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW
AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm
GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/
fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV
bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD
wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE
LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad
LAUXAQDTeq5kX5amMHgVh0sbW03iub7P9Dx3hPxHk2mOCsIm/wD+IqGhvUWmfSMP
j8LTstfvqJ4YleEaNCXidI3JuVheTAI=
=74o/
-----END PGP SIGNATURE-----

477
resources/style.css Normal file
View file

@ -0,0 +1,477 @@
body{
background-image: url(./images/genome.svg);
background-size:7em;
background-color:cornflowerblue;
display:flex;
flex-direction:column;
justify-content:center;
align-items:center;
padding-top:0em;
padding-bottom:0em;
margin-top:0em;
margin-bottom:0em;
font-family:"Helvetica", serif;
}
h1{
margin-bottom:0.6em;
}
p{
font-size:1.2em;
margin-top:.5em;
margin-bottom:.5em;
}
a{
color:black;
font-size:1.2em;
text-decoration:underline;
margin-top:0.5em;
margin-bottom:0.5em;
}
a:hover{
color:red;
cursor: pointer;
}
.pageDiv{
display:flex;
flex-direction:column;
justify-content:center;
align-items:center;
background-color:lightsteelblue;
border-radius:1em;
width:63vw;
padding-top:0em;
padding-bottom:4em;
padding-left:3em;
padding-right:3em;
margin-top:1em;
margin-bottom:3em;
box-shadow:rgba(0, 0, 0, 0.2) 0em 0em 4em 1em;
}
.pageHeader{
display: flex;
flex-direction:column;
align-items: center;
justify-content: center;
width:100%;
}
.languageBar{
display:flex;
flex-direction:row;
align-items:center;
justify-content:center;
width: 100vw;
background-color:blue;
}
.languageBarLabel{
color:white;
}
.languageBarButton{
color:white;
padding:.8em;
text-decoration: none;
font-weight:bold;
}
.logoAndTitleRow{
display: flex;
flex-direction:row;
align-items:center;
justify-content:center;
height:8em;
width:100%;
margin-top:2.5em;
margin-bottom:.5em;
padding-right:1em;
}
.seekiaLogo{
height:100%;
}
.seekiaTitle{
font-family:"Helvetica", sans-serif;
font-size:5em;
font-weight:bold;
padding-top:.2em;
}
.sloganText{
font-size:1.4em;
font-style:italic;
font-weight:200;
margin-top:.3em;
margin-bottom:1.3em;
letter-spacing: .2em;
}
.navigationBarSeparator{
width:90%;
border-bottom:.8px solid #272727;
margin-top:0em;
margin-bottom:0em;
}
.navigationBar{
display:flex;
flex-direction:row;
justify-content:center;
align-items:center;
flex-wrap:wrap;
margin-top:.3em;
margin-bottom:.3em;
width:90%;
}
.navigationBarItem{
display:flex;
flex-direction:row;
justify-content:center;
align-items:center;
}
.navigationBarLink{
color:black;
font-weight:800;
font-size:1.2em;
text-decoration:none;
padding-top:.2em;
padding-left:1em;
padding-right:1em;
padding-bottom:.2em;
width:100%;
text-align:center;
}
.navigationBarLink:hover{
text-decoration:none;
cursor: pointer;
}
.navigationBarHeart{
width:1.5em;
flex-grow:1;
font-size:.9em;
}
.chooseLanguageButtonsDiv{
display:flex;
flex-direction:row;
flex-wrap:wrap;
justify-content:center;
align-content: flex-start;
width:70%;
}
.seekiaIsHeading{
margin-top:1.8em;
margin-bottom:1.2em;
padding-top:0em;
padding-bottom:0em;
}
.pageHeading{
font-size:1.8em;
margin-top:1.5em;
margin-bottom:.8em;
padding-top:0em;
padding-bottom:0em;
}
.chooseLanguageButton{
color:white;
text-decoration:none;
font-weight:bold;
margin:.5em;
padding:1em;
background-color:blue;
border-radius:.5em;
}
.blueDownloadButton{
color:white;
text-decoration:none;
font-weight:bold;
padding-top: 1em;
padding-bottom: 1em;
padding-left: 1em;
padding-right: 1em;
background-color: blue;
border-radius:1em;
}
.separator{
color: black;
width: 70%;
border-style:solid;
border-color:black;
border-top:0em;
border-bottom:1px solid black;
border-left:0em;
border-right:0em;
}
.linebreak{
margin-top:0.5em;
}
.thinlinebreak{
margin-top:1.5em;
margin-bottom:1em;
}
.homePageScreenshot{
width:60%;
border:solid 0.15em;
margin:1.5em;
}
.ancestryCompositionScreenshot{
width:50%;
border:solid 0.15em;
margin:1.5em;
}
.racialSimilarityScreenshot{
width:50%;
border:solid 0.15em;
margin:1.5em;
}
.offspringDiseaseProbabilitiesScreenshot{
width:60%;
border:solid 0.15em;
margin:1.5em;
}
.totalDiseaseRiskScreenshot{
width:60%;
border:solid 0.15em;
margin:1.5em;
}
.browseMatchesScreenshot{
width:25%;
border:solid 0.15em;
margin:1.5em;
}
.operatingSystemBox{
display:flex;
flex-direction:column;
justify-content:center;
align-content:center;
align-items:center;
width:50%;
margin-top:.8em;
margin-bottom:.8em;
border-radius:0.5em;
padding-top:1.5em;
padding-bottom:1em;
padding-left:0.5em;
padding-right:0.5em;
background-color:gainsboro;
text-align:center;
}
.operatingSystemName{
font-size:1.2em;
margin-top:1em;
margin-bottom:1em;
}
.operatingSystemLogo{
width:3em;
}
.codeblock{
padding-top:0.5em;
padding-bottom:0.5em;
padding-left:0.5em;
padding-right:0.5em;
font-size:1.3em;
margin-top:0.5em;
margin-bottom:0.5em;
background-color:lightgray;
}
.readTheWhitepaperRow{
display:flex;
flex-direction:row;
justify-content:center;
align-content:center;
align-items:center;
text-decoration:none;
border-radius:2em;
padding-top:1em;
padding-bottom:1em;
padding-left:3em;
padding-right:3em;
background-color:gainsboro;
}
.whitepaperIcon{
width:4em;
}
.readTheWhitepaperLink{
font-style:italic;
}
.aboutPageDescriptionSection{
width:70%;
text-align:center;
}
.aboutWebsiteBox{
display:flex;
flex-direction:column;
justify-content:center;
align-content:center;
align-items:center;
background-color:gainsboro;
width:60%;
border-radius:1em;
padding-top:1em;
padding-bottom:0.6em;
margin-top:.5em;
margin-bottom:.5em;
}
.archiveReleaseBox{
display:flex;
flex-direction:column;
justify-content:center;
align-content:center;
align-items:center;
background-color:gainsboro;
margin-top:1em;
margin-bottom:1em;
padding-top:1em;
padding-bottom:1.5em;
border-radius:1em;
width:80%;
}
.archiveReleaseBoxSeparator{
width:80%;
}
.codebergLogo{
width:5em;
margin-bottom:1em;
}
.contactIcon{
width:5em;
margin-bottom:1em;
}

59
timestamps/ReadMe.md Normal file
View file

@ -0,0 +1,59 @@
# Timestamps
OpenTimestamps is used to timestamp SeekiaWebsite commits.
Visit [OpenTimestamps.org](https://www.opentimestamps.org) to learn more.
Timestamps are useful to provide evidence that a commit was authored by a specific person.
Timestamps can defend against patent trolls by proving that the patent troll was not the first inventor of an idea.
Timestamps can also protect developers from wrongful accusations of plagiarism.
Timestamping commits is optional.
When someone timestamps a commit on a branch in which your commit has already been merged, your commit will be timestamped as well.
## How to Timestamp Commits
##### 1. Install the OpenTimestamps client.
Link: [Github.com/opentimestamps/opentimestamps-client](https://github.com/opentimestamps/opentimestamps-client)
##### 2. Create a file containing the hex encoded commit hash.
The name of this file should be the commit hash.
Example: 34169c1384cd725d8ab580b6569fcd7276cb93e8.txt
You can view recent commit hashes with the command `git log`.
##### 3. Timestamp the file
Use the command `ots stamp filename.txt`.
##### 4. Wait for the timestamp to be included in the Bitcoin blockchain.
This usually takes several hours.
##### 5. Upgrade the timestamp
Use the command `ots upgrade filename.txt.ots`.
This command upgrades the timestamp to be locally verifiable.
This command will tell you if the timestamp has been confirmed in the Bitcoin blockchain.
##### 6. Push your commit to the SeekiaWebsite repository.
You don't have to wait for the timestamp to confirm before committing unless you are paranoid about bad actors.
##### 7. Push another commit which adds your .txt and .txt.ots file to the timestamps/Commits folder.
You can do this at a later date. You can upload timestamps in batches.
Both files should be in their own folder named after the commit hash.
## How To Verify Commit Timestamps
*TODO*

View file

@ -0,0 +1,62 @@
package translation
import "errors"
// English == en
// Spanish == es
func GetTranslationsMap(languageCode string)(map[string]string, error){
switch languageCode{
case "en":{
languageMap := map[string]string{
"BeRaceAware": "Be Race Aware",
"SeekiaIsDescription": "Seekia is a race aware mate discovery network.",
"Language": "Language",
"CurrentLanguage": "English",
"ChooseLanguage": "Choose Language",
"Download": "Download",
"Home": "Home",
"About": "About",
"Contribute": "Contribute",
"Archive": "Archive",
"TheCureToRacialLoneliness": "The Cure To Racial Loneliness",
"BeGeneticsAware": "Be Genetics Aware",
"BreedInAEugenicManner": "Breed In A Eugenic Manner",
"BrowseForFree": "Browse For Free",
"OpenSource": "Open Source",
}
return languageMap, nil
}
case "es":{
languageMap := map[string]string{
"BeRaceAware": "TODO",
"SeekiaIsDescription": "TODO",
"Language": "Lengua",
"CurrentLanguage": "Español",
"ChooseLanguage": "TODO",
"Download": "TODO",
"Home": "TODO",
"About": "TODO",
"Contribute": "TODO",
"Archive": "TODO",
"TheCureToRacialLoneliness": "TODO",
"BeGeneticsAware": "TODO",
"BreedInAEugenicManner": "TODO",
"BrowseForFree": "TODO",
"OpenSource": "TODO",
}
return languageMap, nil
}
}
return nil, errors.New("GetLanguageMap called with invalid languageCode: " + languageCode)
}