init
This commit is contained in:
commit
d883daa41c
16 changed files with 2492 additions and 0 deletions
7
.editorconfig
Normal file
7
.editorconfig
Normal file
|
@ -0,0 +1,7 @@
|
|||
[*.html]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.nix]
|
||||
indent_style = space
|
||||
indent_size = 2
|
1
.envrc
Normal file
1
.envrc
Normal file
|
@ -0,0 +1 @@
|
|||
use flake
|
17
.forgejo/workflows/deploy-front.yaml
Normal file
17
.forgejo/workflows/deploy-front.yaml
Normal file
|
@ -0,0 +1,17 @@
|
|||
name: Deploy website
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths:
|
||||
- 'front/**'
|
||||
- '.forgejo/workflows/deploy-front.yaml'
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: native
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- run: |
|
||||
nix build -L .#site -o /srv/web/nixwebr.ing
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
result
|
||||
.direnv
|
80
flake.lock
Normal file
80
flake.lock
Normal file
|
@ -0,0 +1,80 @@
|
|||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1717602782,
|
||||
"narHash": "sha256-pL9jeus5QpX5R+9rsp3hhZ+uplVHscNJh8n8VpqscM0=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e8057b67ebf307f01bdcc8fba94d94f75039d1f6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nte": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1726242453,
|
||||
"narHash": "sha256-VTHc10y2gI1CVmCayzzswPQPZ4S/QIi28VKpyfS+K1M=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "b1f9ff4ed5fe38973c5c16db7b8c1f6100c52a5e",
|
||||
"revCount": 51,
|
||||
"type": "git",
|
||||
"url": "https://git.jacekpoz.pl/jacekpoz/nte"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jacekpoz.pl/jacekpoz/nte"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nte": "nte",
|
||||
"systems": "systems_2"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
46
flake.nix
Normal file
46
flake.nix
Normal file
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
description = "the ring";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
nte = {
|
||||
url = "git+https://git.jacekpoz.pl/jacekpoz/nte";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
systems.url = "github:nix-systems/default";
|
||||
};
|
||||
|
||||
outputs = { nixpkgs, nte, self, systems, ... }: let
|
||||
forEachSystem = nixpkgs.lib.genAttrs (import systems);
|
||||
pkgsForEach = nixpkgs.legacyPackages;
|
||||
in {
|
||||
packages = forEachSystem (
|
||||
system: let
|
||||
pkgs = pkgsForEach.${system};
|
||||
in {
|
||||
site = import ./site/default.nix {
|
||||
inherit pkgs;
|
||||
inherit (pkgs) jetbrains-mono lib;
|
||||
inherit (nte.functions.${system}) mkNteDerivation;
|
||||
};
|
||||
server = import ./server/default.nix {
|
||||
inherit pkgs;
|
||||
inherit (pkgs) rustPlatform;
|
||||
};
|
||||
}
|
||||
);
|
||||
devShells = forEachSystem (
|
||||
system: let
|
||||
pkgs = pkgsForEach.${system};
|
||||
shell = pkgs.mkShell {
|
||||
name = "nixwebr.ing";
|
||||
|
||||
inputsFrom = [ self.packages.${system}.server ];
|
||||
};
|
||||
in {
|
||||
"nixwebr.ing" = shell;
|
||||
default = shell;
|
||||
}
|
||||
);
|
||||
};
|
||||
}
|
1
server/.gitignore
vendored
Normal file
1
server/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
target/
|
1932
server/Cargo.lock
generated
Normal file
1932
server/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
10
server/Cargo.toml
Normal file
10
server/Cargo.toml
Normal file
|
@ -0,0 +1,10 @@
|
|||
[package]
|
||||
name = "nix-webring-server"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
env_logger = "0.11.3"
|
||||
ntex = { version = "2.0.0", features = [ "tokio", "rustls" ] }
|
||||
ntex-files = "2.0.0"
|
||||
rand = "0.8.5"
|
9
server/default.nix
Normal file
9
server/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{rustPlatform, ...}:
|
||||
rustPlatform.buildRustPackage {
|
||||
pname = "nix-webring-server";
|
||||
version = "0.1.0";
|
||||
|
||||
src = ./.;
|
||||
|
||||
cargoHash = "sha256-O+rhWIjIBQdemTsFc1TV/lpKZpGE/IL7uPs3TP8KVu0=";
|
||||
}
|
83
server/src/main.rs
Normal file
83
server/src/main.rs
Normal file
|
@ -0,0 +1,83 @@
|
|||
mod members;
|
||||
|
||||
use members::WEBRING_MEMBERS;
|
||||
use ntex::{http::{header, Response}, web::{self, middleware}};
|
||||
use ntex_files as nfs;
|
||||
use ::rand::{thread_rng, Rng};
|
||||
|
||||
#[web::get("/next/{name}")]
|
||||
async fn next(name: web::types::Path<String>) -> impl web::Responder {
|
||||
if let Some((i, _)) = WEBRING_MEMBERS.iter().enumerate().find(|(_, member)| member.name == *name) {
|
||||
let next_index = (i + 1) % WEBRING_MEMBERS.len();
|
||||
let next_domain = WEBRING_MEMBERS[next_index].domain;
|
||||
let next_url = format!("https://{next_domain}/");
|
||||
|
||||
return Response::PermanentRedirect()
|
||||
.header(header::LOCATION, next_url)
|
||||
.take();
|
||||
}
|
||||
|
||||
Response::TemporaryRedirect()
|
||||
.header(header::LOCATION, "https://nixwebr.ing/")
|
||||
.take()
|
||||
}
|
||||
|
||||
#[web::get("/prev/{name}")]
|
||||
async fn prev(name: web::types::Path<String>) -> impl web::Responder {
|
||||
if let Some((i, _)) = WEBRING_MEMBERS.iter().enumerate().find(|(_, member)| member.name == *name) {
|
||||
let prev_index = if i == 0 { WEBRING_MEMBERS.len() - 1 } else { i - 1 };
|
||||
let prev_domain = WEBRING_MEMBERS[prev_index].domain;
|
||||
let prev_url = format!("https://{prev_domain}/");
|
||||
|
||||
return Response::PermanentRedirect()
|
||||
.header(header::LOCATION, prev_url)
|
||||
.take();
|
||||
}
|
||||
|
||||
Response::TemporaryRedirect()
|
||||
.header(header::LOCATION, "https://nixwebr.ing/")
|
||||
.take()
|
||||
}
|
||||
|
||||
#[web::get("/rand")]
|
||||
async fn rand() -> impl web::Responder {
|
||||
let rand_index = thread_rng().gen_range(0..WEBRING_MEMBERS.len());
|
||||
let rand_domain = WEBRING_MEMBERS[rand_index].domain;
|
||||
let rand_url = format!("https://{rand_domain}/");
|
||||
|
||||
Response::PermanentRedirect()
|
||||
.header(header::LOCATION, rand_url)
|
||||
.take()
|
||||
}
|
||||
|
||||
#[ntex::main]
|
||||
async fn main() -> std::io::Result<()> {
|
||||
env_logger::init();
|
||||
|
||||
let nix_webring_dir = std::env::var("NIX_WEBRING_DIR")
|
||||
.expect("NIX_WEBRING_DIR not found");
|
||||
|
||||
let nix_webring_port = std::env::var("NIX_WEBRING_PORT")
|
||||
.expect("NIX_WEBRING_PORT not found")
|
||||
.parse::<u16>()
|
||||
.expect("NIX_WEBRING_PORT has to be u16");
|
||||
|
||||
web::server(move || {
|
||||
web::App::new()
|
||||
.wrap(middleware::Logger::default())
|
||||
.service(
|
||||
web::scope("/")
|
||||
.service(next)
|
||||
.service(prev)
|
||||
.service(rand)
|
||||
.service(
|
||||
nfs::Files::new("/", nix_webring_dir.clone())
|
||||
.index_file("index.html")
|
||||
.redirect_to_slash_directory()
|
||||
)
|
||||
)
|
||||
})
|
||||
.bind(("127.0.0.1", nix_webring_port))?
|
||||
.run()
|
||||
.await
|
||||
}
|
16
server/src/members.rs
Normal file
16
server/src/members.rs
Normal file
|
@ -0,0 +1,16 @@
|
|||
// this is hilariously bad but I'm too lazy to do anything about it right now
|
||||
pub struct WebringMember {
|
||||
pub name: &'static str,
|
||||
pub domain: &'static str,
|
||||
}
|
||||
|
||||
pub const WEBRING_MEMBERS: &'static [WebringMember] = &[
|
||||
WebringMember {
|
||||
name: "poz",
|
||||
domain: "jacekpoz.pl",
|
||||
},
|
||||
WebringMember {
|
||||
name: "krizej",
|
||||
domain: "krizej.codeberg.page",
|
||||
},
|
||||
];
|
39
site/default.nix
Normal file
39
site/default.nix
Normal file
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
jetbrains-mono,
|
||||
lib,
|
||||
mkNteDerivation,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.attrsets) listToAttrs;
|
||||
inherit (lib.lists) map;
|
||||
inherit (lib.strings) replaceStrings toLower;
|
||||
|
||||
h = n: content: let
|
||||
id = replaceStrings [" " ";"] ["-" "-"] (toLower content);
|
||||
in /*html*/''
|
||||
<h${toString n} id="${id}"><a href="#${id}">#</a> ${content}</h${toString n}>
|
||||
'';
|
||||
in mkNteDerivation {
|
||||
name = "nix-webring-site";
|
||||
version = "0.1.0";
|
||||
src = ./.;
|
||||
|
||||
extraArgs = {
|
||||
inherit h;
|
||||
}
|
||||
// listToAttrs (map (n: {
|
||||
name = "h${toString n}";
|
||||
value = text: h n text;
|
||||
}) [ 1 2 3 4 5 6 ]
|
||||
);
|
||||
|
||||
entries = [
|
||||
./index.nix
|
||||
];
|
||||
|
||||
extraFiles = [
|
||||
{ source = "./index.css"; destination = "/"; }
|
||||
{ source = "./nix-webring.svg"; destination = "/"; }
|
||||
{ source = "${jetbrains-mono}/share/fonts/truetype/JetBrainsMono-Regular.ttf"; destination = "/"; }
|
||||
];
|
||||
}
|
21
site/index.css
Normal file
21
site/index.css
Normal file
|
@ -0,0 +1,21 @@
|
|||
@font-face {
|
||||
font-family: "JetBrains Mono";
|
||||
src: url(/JetBrainsMono-Regular.ttf) format("truetype");
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #111111;
|
||||
color: #DDDDDD;
|
||||
font-family: "JetBrains Mono";
|
||||
font-size: 1.15rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
}
|
21
site/index.nix
Normal file
21
site/index.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
_: {
|
||||
template = "passthrough";
|
||||
format = "html";
|
||||
|
||||
output = /*html*/''
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>nix webring</title>
|
||||
<link rel="icon" type="image/svg" href="/nix-webring.svg">
|
||||
<link rel="stylesheet" href="/index.css">
|
||||
<meta property="og:title" content="nix webring">
|
||||
<meta property="og:image" content="https://jacekpoz.pl/nix-webring.svg">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://nixwebr.ing">
|
||||
</head>
|
||||
<body>
|
||||
<p>work in progress</p>
|
||||
</body>
|
||||
</html>
|
||||
'';
|
||||
}
|
207
site/nix-webring.svg
Normal file
207
site/nix-webring.svg
Normal file
|
@ -0,0 +1,207 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="535"
|
||||
height="535"
|
||||
viewBox="0 0 501.56251 501.56249"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
sodipodi:docname="nix-webring.svg"
|
||||
inkscape:export-filename="nix-webring.png"
|
||||
inkscape:export-xdpi="107.66355"
|
||||
inkscape:export-ydpi="107.66355"
|
||||
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/">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5562">
|
||||
<stop
|
||||
style="stop-color:#699ad7;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop5564" />
|
||||
<stop
|
||||
id="stop5566"
|
||||
offset="0.24345198"
|
||||
style="stop-color:#7eb1dd;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#7ebae4;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop5568" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5053">
|
||||
<stop
|
||||
style="stop-color:#415e9a;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop5055" />
|
||||
<stop
|
||||
id="stop5057"
|
||||
offset="0.23168644"
|
||||
style="stop-color:#4a6baf;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#5277c3;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop5059" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5053"
|
||||
id="linearGradient4330"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(864.69589,-1491.3405)"
|
||||
x1="-584.19934"
|
||||
y1="782.33563"
|
||||
x2="-496.29703"
|
||||
y2="937.71399" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5562"
|
||||
id="linearGradient1"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="rotate(60,1285.574,-127.0267)"
|
||||
x1="200.59668"
|
||||
y1="351.41116"
|
||||
x2="290.08701"
|
||||
y2="506.18814" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5562"
|
||||
id="linearGradient2"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="rotate(-60,-541.80106,-249.3096)"
|
||||
x1="200.59668"
|
||||
y1="351.41116"
|
||||
x2="290.08701"
|
||||
y2="506.18814" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5562"
|
||||
id="linearGradient3"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="rotate(180,372.09351,-188.18095)"
|
||||
x1="200.59668"
|
||||
y1="351.41116"
|
||||
x2="290.08701"
|
||||
y2="506.18814" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5053"
|
||||
id="linearGradient4"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="rotate(120,405.50413,279.20289)"
|
||||
x1="-584.19934"
|
||||
y1="782.33563"
|
||||
x2="-496.29703"
|
||||
y2="937.71399" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5053"
|
||||
id="linearGradient5"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="rotate(-120,-455.57263,-219.8159)"
|
||||
x1="-584.19934"
|
||||
y1="782.33563"
|
||||
x2="-496.29703"
|
||||
y2="937.71399" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.70710678"
|
||||
inkscape:cx="428.50671"
|
||||
inkscape:cy="330.92597"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g2"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1404"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="true"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="gradient-logo"
|
||||
style="display:inline;opacity:1"
|
||||
transform="translate(-156.41121,933.30685)">
|
||||
<g
|
||||
id="g2"
|
||||
transform="matrix(0.99994059,0,0,0.99994059,-0.06321798,33.188377)"
|
||||
style="stroke-width:1.00006">
|
||||
<g
|
||||
id="g5"
|
||||
transform="matrix(1.5923554,0,0,1.5923554,-241.25483,424.14882)">
|
||||
<path
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="use3439-6"
|
||||
d="m 353.65459,-797.57947 -75.33983,131.03333 -28.53475,-48.37004 14.05181,-24.82625 33.4638,-57.69041 z"
|
||||
style="fill:url(#linearGradient1);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.00018;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="use3445-0"
|
||||
d="m 363.03058,-628.3791 150.65887,0.012 -27.6223,48.89684 -28.03684,-0.0386 -66.69326,-0.1353 z"
|
||||
style="fill:url(#linearGradient2);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.00018;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="use3449-5"
|
||||
d="m 505.28844,-721.12473 -75.88193,-131.23275 56.15706,-0.5268 14.54791,25.05223 33.22946,57.8257 z"
|
||||
style="fill:url(#linearGradient3);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.00018;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4330);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.00018;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 309.54892,-710.38827 75.60056,130.67022 -56.15706,0.5268 -14.26654,-24.4897 -33.22946,-57.8256 z"
|
||||
id="path4260-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.00018;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 451.30201,-803.62004 -150.65887,-0.012 27.62231,-48.89684 28.03683,0.0386 66.69317,0.13525 z"
|
||||
id="use4354-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient5);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.00018;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 460.90516,-633.96606 75.33983,-131.03333 28.53475,48.37004 -14.05181,24.82625 -33.46371,57.69035 z"
|
||||
id="use4362-2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 8.7 KiB |
Loading…
Reference in a new issue