Compare commits
10 commits
2758f7657a
...
11c897713a
Author | SHA1 | Date | |
---|---|---|---|
11c897713a | |||
120d91e751 | |||
cf2fd8e388 | |||
192553f6ae | |||
27d9cc2d33 | |||
1e1f2d95a4 | |||
c2ecdba5e0 | |||
85b6cbc291 | |||
f9ba9f9787 | |||
512f3bc78e |
2
.github/workflows/check-flake-files.yml
vendored
2
.github/workflows/check-flake-files.yml
vendored
|
@ -37,7 +37,7 @@ jobs:
|
|||
do
|
||||
echo "::group::Group \"$(basename $flake_group .toml)\""
|
||||
|
||||
nix run --accept-flake-config .#flake-info -- group "$flake_group" "$(basename "$flake_group" .toml)" --report
|
||||
nix run --accept-flake-config .#flake-info -- --json group "$flake_group" "$(basename "$flake_group" .toml)" --report
|
||||
|
||||
if [[ -f "./report.txt" ]]
|
||||
then
|
||||
|
|
2
.github/workflows/update-flake-lock.yml
vendored
2
.github/workflows/update-flake-lock.yml
vendored
|
@ -16,4 +16,4 @@ jobs:
|
|||
extra_nix_config: |
|
||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Update flake.lock
|
||||
uses: DeterminateSystems/update-flake-lock@v21
|
||||
uses: DeterminateSystems/update-flake-lock@v22
|
||||
|
|
|
@ -127,7 +127,7 @@ An example `targets.json` file can look like the following
|
|||
```
|
||||
|
||||
```
|
||||
$ flake-info group ./targets.json small-group
|
||||
$ flake-info --json group ./targets.json small-group
|
||||
```
|
||||
|
||||
### Elasticsearch
|
||||
|
|
12
flake.lock
12
flake.lock
|
@ -21,11 +21,11 @@
|
|||
"nixos-infra": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1717180249,
|
||||
"narHash": "sha256-IyJByGp98daSXBeCUOJrWTQAVF2m7/IUvL43NGaXGgw=",
|
||||
"lastModified": 1717510161,
|
||||
"narHash": "sha256-BiZudUcdFCpW9d8IXiPHXhKP1vTVqcDrQRtd/dLr7n0=",
|
||||
"owner": "NixOS",
|
||||
"repo": "infra",
|
||||
"rev": "4a9d6e1444c48c4c7a8257a0a25768dee6962850",
|
||||
"rev": "5e2b57f9a5bc43b9fd3eb822caaa7ddf0448b2b3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -36,11 +36,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1716948383,
|
||||
"narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=",
|
||||
"lastModified": 1717786204,
|
||||
"narHash": "sha256-4q0s6m0GUcN7q+Y2DqD27iLvbcd1G50T2lv08kKxkSI=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ad57eef4ef0659193044870c731987a6df5cf56b",
|
||||
"rev": "051f920625ab5aabe37c920346e3e69d7d34400e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
@ -8,11 +8,6 @@ type = "github"
|
|||
owner = "ngi-nix"
|
||||
repo = "offen"
|
||||
|
||||
[[sources]]
|
||||
type = "github"
|
||||
owner = "ngi-nix"
|
||||
repo = "pixelfed"
|
||||
|
||||
[[sources]]
|
||||
type = "github"
|
||||
owner = "ngi-nix"
|
||||
|
@ -43,16 +38,6 @@ type = "gitlab"
|
|||
owner = "pi-lar"
|
||||
repo = "neuropil"
|
||||
|
||||
[[sources]]
|
||||
type = "github"
|
||||
owner = "tweag"
|
||||
repo = "nickel"
|
||||
|
||||
[[sources]]
|
||||
type = "github"
|
||||
owner = "pinpox"
|
||||
repo = "nixos"
|
||||
|
||||
[[sources]]
|
||||
type = "github"
|
||||
owner = "Mic92"
|
||||
|
@ -78,11 +63,6 @@ type = "github"
|
|||
owner = "yusdacra"
|
||||
repo = "rust-nix-templater"
|
||||
|
||||
[[sources]]
|
||||
type = "github"
|
||||
owner = "srid"
|
||||
repo = "emanote"
|
||||
|
||||
[[sources]]
|
||||
type = "git"
|
||||
url = "git+https://git.sr.ht/~kerstin/sway-timetracker?ref=main"
|
||||
|
@ -92,15 +72,6 @@ type = "github"
|
|||
owner = "PrismLauncher"
|
||||
repo = "PrismLauncher"
|
||||
|
||||
[[sources]]
|
||||
type = "gitlab"
|
||||
owner = "simple-nixos-mailserver"
|
||||
repo = "nixos-mailserver"
|
||||
|
||||
[[sources]]
|
||||
type = "git"
|
||||
url = "git+https://codeberg.org/wolfangaukang/stream-alert-bot?ref=main"
|
||||
|
||||
[[sources]]
|
||||
type = "git"
|
||||
url = "git+https://codeberg.org/wolfangaukang/python-trovo?ref=main"
|
||||
|
@ -114,11 +85,6 @@ type = "github"
|
|||
owner = "juliosueiras-nix"
|
||||
repo = "nix-security"
|
||||
|
||||
[[sources]]
|
||||
type = "github"
|
||||
owner = "astro"
|
||||
repo = "microvm.nix"
|
||||
|
||||
[[sources]]
|
||||
type = "github"
|
||||
owner = "lnbits"
|
||||
|
|
|
@ -17,14 +17,13 @@ const dev = {
|
|||
stats: "errors-only"
|
||||
},
|
||||
historyApiFallback: true,
|
||||
// feel free to delete this section if you don't need anything like this
|
||||
onBeforeSetupMiddleware: function (devServer) {
|
||||
// on port 3000
|
||||
devServer.app.get("/test", function (req, res) {
|
||||
res.json({result: "You reached the dev server"});
|
||||
});
|
||||
|
||||
}
|
||||
proxy: {
|
||||
'/backend': {
|
||||
target: 'https://nixos-search-7-1733963800.us-east-1.bonsaisearch.net/',
|
||||
pathRewrite: {'^/backend' : ''},
|
||||
changeOrigin: true
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -1,27 +1,7 @@
|
|||
{
|
||||
|
||||
"krisajenkins/remotedata" = {
|
||||
sha256 = "0m5bk0qhsjv14vajqrkph386696pnhj5rn51kgma8lwyvvx9ihw1";
|
||||
version = "6.0.1";
|
||||
};
|
||||
|
||||
"elm/json" = {
|
||||
sha256 = "0kjwrz195z84kwywaxhhlnpl3p251qlbm5iz6byd6jky2crmyqyh";
|
||||
version = "1.1.3";
|
||||
};
|
||||
|
||||
"truqu/elm-base64" = {
|
||||
sha256 = "12w68b4idbs2vn0gm0lj354pm745jb7n0fj69408mpvh5r1z4m1b";
|
||||
version = "2.0.4";
|
||||
};
|
||||
|
||||
"elm/regex" = {
|
||||
sha256 = "0lijsp50w7n1n57mjg6clpn9phly8vvs07h0qh2rqcs0f1jqvsa2";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
"elm/html" = {
|
||||
sha256 = "1n3gpzmpqqdsldys4ipgyl1zacn0kbpc3g4v3hdpiyfjlgh8bf3k";
|
||||
"NoRedInk/elm-json-decode-pipeline" = {
|
||||
sha256 = "0y25xn0yx1q2xlg1yx1i0hg4xq1yxx6yfa99g272z8162si75hnl";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
|
@ -35,8 +15,8 @@
|
|||
version = "1.0.4";
|
||||
};
|
||||
|
||||
"elm/url" = {
|
||||
sha256 = "0av8x5syid40sgpl5vd7pry2rq0q4pga28b4yykn9gd9v12rs3l4";
|
||||
"elm/html" = {
|
||||
sha256 = "1n3gpzmpqqdsldys4ipgyl1zacn0kbpc3g4v3hdpiyfjlgh8bf3k";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
|
@ -45,8 +25,18 @@
|
|||
version = "2.0.0";
|
||||
};
|
||||
|
||||
"NoRedInk/elm-json-decode-pipeline" = {
|
||||
sha256 = "0y25xn0yx1q2xlg1yx1i0hg4xq1yxx6yfa99g272z8162si75hnl";
|
||||
"elm/json" = {
|
||||
sha256 = "0kjwrz195z84kwywaxhhlnpl3p251qlbm5iz6byd6jky2crmyqyh";
|
||||
version = "1.1.3";
|
||||
};
|
||||
|
||||
"elm/regex" = {
|
||||
sha256 = "0lijsp50w7n1n57mjg6clpn9phly8vvs07h0qh2rqcs0f1jqvsa2";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
"elm/url" = {
|
||||
sha256 = "0av8x5syid40sgpl5vd7pry2rq0q4pga28b4yykn9gd9v12rs3l4";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
|
@ -55,6 +45,36 @@
|
|||
version = "2.3.4";
|
||||
};
|
||||
|
||||
"krisajenkins/remotedata" = {
|
||||
sha256 = "0m5bk0qhsjv14vajqrkph386696pnhj5rn51kgma8lwyvvx9ihw1";
|
||||
version = "6.0.1";
|
||||
};
|
||||
|
||||
"leojpod/elm-keyboard-shortcut" = {
|
||||
sha256 = "0p4m06ycimbiaffqzqzmwjlpcwsld82m9z4m6r52j6cswfy5rmdl";
|
||||
version = "1.0.1";
|
||||
};
|
||||
|
||||
"truqu/elm-base64" = {
|
||||
sha256 = "12w68b4idbs2vn0gm0lj354pm745jb7n0fj69408mpvh5r1z4m1b";
|
||||
version = "2.0.4";
|
||||
};
|
||||
|
||||
"elm-community/json-extra" = {
|
||||
sha256 = "10phb49jhfb2764zni5aivz59a06mjbggxlpqqza2iwn212h6m6j";
|
||||
version = "4.3.0";
|
||||
};
|
||||
|
||||
"elm-community/list-extra" = {
|
||||
sha256 = "02grd0p5hc2gvdy4n723d1s28pm1grn95jrzic6jcgb26qh16vcc";
|
||||
version = "8.7.0";
|
||||
};
|
||||
|
||||
"elm-community/maybe-extra" = {
|
||||
sha256 = "185jy9jxx3bqf0xl3rmdxfqqmxzcr084llf32glr6hgl5agshywk";
|
||||
version = "5.3.0";
|
||||
};
|
||||
|
||||
"elm/bytes" = {
|
||||
sha256 = "02ywbf52akvxclpxwj9n04jydajcbsbcbsnjs53yjc5lwck3abwj";
|
||||
version = "1.0.8";
|
||||
|
@ -65,11 +85,6 @@
|
|||
version = "1.0.5";
|
||||
};
|
||||
|
||||
"rtfeldman/elm-hex" = {
|
||||
sha256 = "1y0aa16asvwdqmgbskh5iba6psp43lkcjjw9mgzj3gsrg33lp00d";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
"elm/parser" = {
|
||||
sha256 = "0a3cxrvbm7mwg9ykynhp7vjid58zsw03r63qxipxp3z09qks7512";
|
||||
version = "1.1.0";
|
||||
|
@ -85,18 +100,28 @@
|
|||
version = "1.0.2";
|
||||
};
|
||||
|
||||
"rtfeldman/elm-hex" = {
|
||||
sha256 = "1y0aa16asvwdqmgbskh5iba6psp43lkcjjw9mgzj3gsrg33lp00d";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
"rtfeldman/elm-iso8601-date-strings" = {
|
||||
sha256 = "1ah491kgyicgvy1c9myylqvhzb7ya9kgmn0hcsv23ymvqgaf6b1a";
|
||||
version = "1.1.4";
|
||||
};
|
||||
|
||||
"elm-explorations/test" = {
|
||||
sha256 = "1fsd7bajm7qa93r5pn3mdafqh3blpzya601jbs9l238p0hmvh576";
|
||||
version = "1.2.2";
|
||||
};
|
||||
|
||||
"elm/svg" = {
|
||||
sha256 = "1cwcj73p61q45wqwgqvrvz3aypjyy3fw732xyxdyj6s256hwkn0k";
|
||||
version = "1.0.1";
|
||||
};
|
||||
|
||||
"elm/random" = {
|
||||
sha256 = "138n2455wdjwa657w6sjq18wx2r0k60ibpc4frhbqr50sncxrfdl";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
"elm/svg" = {
|
||||
sha256 = "1cwcj73p61q45wqwgqvrvz3aypjyy3fw732xyxdyj6s256hwkn0k";
|
||||
version = "1.0.1";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
"elm/url": "1.0.0",
|
||||
"hecrj/html-parser": "2.3.4",
|
||||
"krisajenkins/remotedata": "6.0.1",
|
||||
"leojpod/elm-keyboard-shortcut": "1.0.1",
|
||||
"truqu/elm-base64": "2.0.4"
|
||||
},
|
||||
"indirect": {
|
||||
|
@ -24,7 +25,11 @@
|
|||
"elm/parser": "1.1.0",
|
||||
"elm/time": "1.0.0",
|
||||
"elm/virtual-dom": "1.0.2",
|
||||
"rtfeldman/elm-hex": "1.0.0"
|
||||
"elm-community/json-extra": "4.3.0",
|
||||
"elm-community/list-extra": "8.7.0",
|
||||
"elm-community/maybe-extra": "5.3.0",
|
||||
"rtfeldman/elm-hex": "1.0.0",
|
||||
"rtfeldman/elm-iso8601-date-strings": "1.1.4"
|
||||
}
|
||||
},
|
||||
"test-dependencies": {
|
||||
|
|
9268
frontend/package-lock.json
generated
9268
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -53,5 +53,8 @@
|
|||
},
|
||||
"prettier": {
|
||||
"tabWidth": 4
|
||||
},
|
||||
"dependencies": {
|
||||
"elm-keyboard-shortcut": "^1.0.1"
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -1,6 +1,7 @@
|
|||
module Main exposing (main)
|
||||
|
||||
import Browser
|
||||
import Browser.Dom
|
||||
import Browser.Navigation
|
||||
import Html
|
||||
exposing
|
||||
|
@ -38,6 +39,8 @@ import Search
|
|||
, decodeNixOSChannels
|
||||
, defaultFlakeId
|
||||
)
|
||||
import Shortcut
|
||||
import Task
|
||||
import Url
|
||||
|
||||
|
||||
|
@ -113,6 +116,8 @@ type Msg
|
|||
| PackagesMsg Page.Packages.Msg
|
||||
| OptionsMsg Page.Options.Msg
|
||||
| FlakesMsg Page.Flakes.Msg
|
||||
| CtrlKRegistered
|
||||
| SearchFocusResult (Result Browser.Dom.Error ())
|
||||
|
||||
|
||||
updateWith :
|
||||
|
@ -326,6 +331,9 @@ update msg model =
|
|||
Page.Flakes.update model.navKey subMsg subModel model.nixosChannels
|
||||
|> updateWith Flakes FlakesMsg model
|
||||
|
||||
( CtrlKRegistered, _ ) ->
|
||||
( model, Browser.Dom.focus "search-query-input" |> Task.attempt SearchFocusResult )
|
||||
|
||||
_ ->
|
||||
-- Disregard messages that arrived for the wrong page.
|
||||
( model, Cmd.none )
|
||||
|
@ -379,6 +387,18 @@ view model =
|
|||
in
|
||||
{ title = title
|
||||
, body =
|
||||
[ Shortcut.shortcutElement
|
||||
[ { msg = CtrlKRegistered
|
||||
, keyCombination =
|
||||
{ baseKey = Shortcut.Regular "K"
|
||||
, shift = Nothing
|
||||
, alt = Nothing
|
||||
, meta = Nothing
|
||||
, ctrl = Just True
|
||||
}
|
||||
},
|
||||
Shortcut.simpleShortcut (Shortcut.Regular "/") <| CtrlKRegistered ]
|
||||
[]
|
||||
[ div []
|
||||
[ header []
|
||||
[ div [ class "navbar navbar-static-top" ]
|
||||
|
@ -417,6 +437,7 @@ view model =
|
|||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -652,7 +652,9 @@ viewResultItem nixosChannels channel showInstallDetails show item =
|
|||
, id "package-details-nixpkgs"
|
||||
]
|
||||
[ pre [ class "code-block shell-command" ]
|
||||
[ text "nix-env -iA nixpkgs."
|
||||
[ text "# without flakes:\nnix-env -iA nixpkgs."
|
||||
, strong [] [ text item.source.attr_name ]
|
||||
, text "# with flakes:\nnix profile install nixpkgs#"
|
||||
, strong [] [ text item.source.attr_name ]
|
||||
]
|
||||
]
|
||||
|
@ -718,7 +720,7 @@ viewResultItem nixosChannels channel showInstallDetails show item =
|
|||
]
|
||||
]
|
||||
[ pre [ class "code-block shell-command" ]
|
||||
[ text "nix build "
|
||||
[ text "nix profile install "
|
||||
, strong [] [ text url ]
|
||||
, text "#"
|
||||
, em [] [ text item.source.attr_name ]
|
||||
|
|
|
@ -31,6 +31,7 @@ module Search exposing
|
|||
, viewSearchInput
|
||||
)
|
||||
|
||||
import Array
|
||||
import Base64
|
||||
import Browser.Dom
|
||||
import Browser.Navigation
|
||||
|
@ -39,6 +40,7 @@ import Html
|
|||
( Html
|
||||
, a
|
||||
, button
|
||||
, code
|
||||
, div
|
||||
, form
|
||||
, h1
|
||||
|
@ -1039,8 +1041,10 @@ viewResults nixosChannels model result viewSuccess _ outMsg categoryName =
|
|||
|
||||
total =
|
||||
String.fromInt result.hits.total.value
|
||||
|
||||
in
|
||||
[ div []
|
||||
(List.append
|
||||
[ Html.map outMsg <| viewSortSelection model
|
||||
, h2 []
|
||||
(List.append
|
||||
|
@ -1066,6 +1070,20 @@ viewResults nixosChannels model result viewSuccess _ outMsg categoryName =
|
|||
)
|
||||
)
|
||||
]
|
||||
(case List.head result.hits.hits of
|
||||
Nothing -> []
|
||||
Just elem ->
|
||||
case Array.get 3 (Array.fromList (String.split "-" elem.index)) of
|
||||
Nothing -> []
|
||||
Just commit ->
|
||||
[
|
||||
text "Data from nixpkgs "
|
||||
, a [ href ("https://github.com/NixOS/nixpkgs/commit/" ++ commit) ]
|
||||
[ (code [] [ text (String.slice 0 8 commit) ]) ]
|
||||
, text "."
|
||||
]
|
||||
)
|
||||
)
|
||||
, viewSuccess nixosChannels model.channel model.showInstallDetails model.show result.hits.hits
|
||||
, Html.map outMsg <| viewPager model result.hits.total.value
|
||||
]
|
||||
|
|
2
frontend/src/assets/bootstrap.min.css
vendored
2
frontend/src/assets/bootstrap.min.css
vendored
File diff suppressed because one or more lines are too long
|
@ -4,7 +4,7 @@
|
|||
<ShortName>NixOS options</ShortName>
|
||||
<Description>Search NixOS options by name or description.</Description>
|
||||
<InputEncoding>UTF-8</InputEncoding>
|
||||
<Image width="16" height="16" type="image/png">https://nixos.org/favicon.png</Image>
|
||||
<Image width="16" height="16" type="image/png">/favicon.png</Image>
|
||||
<Url type="text/html" template="https://search.nixos.org/options?query={searchTerms}"/>
|
||||
<moz:SearchForm>https://search.nixos.org/options</moz:SearchForm>
|
||||
</OpenSearchDescription>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<ShortName>NixOS packages</ShortName>
|
||||
<Description>Search NixOS packages by name or description.</Description>
|
||||
<InputEncoding>UTF-8</InputEncoding>
|
||||
<Image width="16" height="16" type="image/png">https://nixos.org/favicon.png</Image>
|
||||
<Image width="16" height="16" type="image/png">/favicon.png</Image>
|
||||
<Url type="text/html" template="https://search.nixos.org/packages?query={searchTerms}"/>
|
||||
<moz:SearchForm>https://search.nixos.org/packages</moz:SearchForm>
|
||||
</OpenSearchDescription>
|
||||
|
|
BIN
frontend/src/assets/favicon.png
Normal file
BIN
frontend/src/assets/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
BIN
frontend/src/assets/images/glyphicons-halflings-white.png
Normal file
BIN
frontend/src/assets/images/glyphicons-halflings-white.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.6 KiB |
BIN
frontend/src/assets/images/glyphicons-halflings.png
Normal file
BIN
frontend/src/assets/images/glyphicons-halflings.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
|
@ -2,15 +2,15 @@
|
|||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>NixOS Search</title>
|
||||
|
||||
<link rel="stylesheet" href="/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="/bootstrap.min.css" />
|
||||
|
||||
<link rel="stylesheet" href="/bootstrap-responsive.min.css"/>
|
||||
<link rel="stylesheet" href="/bootstrap-responsive.min.css" />
|
||||
|
||||
<link rel="shortcut icon" type="image/png" href="https://nixos.org/favicon.png"/>
|
||||
<link rel="shortcut icon" type="image/png" href="/favicon.png" />
|
||||
|
||||
<link rel="search" type="application/opensearchdescription+xml" title="NixOS packages"
|
||||
href="/desc-search-packages.xml">
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
'use strict';
|
||||
|
||||
require("./index.scss");
|
||||
require("elm-keyboard-shortcut")
|
||||
|
||||
const {Elm} = require('./Main');
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import Test.Html.Query as Query
|
|||
import Test.Html.Selector exposing (tag, text)
|
||||
|
||||
|
||||
{-| See <https://github.com/elm-community/elm-test>
|
||||
{-| See <https://github.com/elm-explorations/test>
|
||||
-}
|
||||
unitTest : Test
|
||||
unitTest =
|
||||
|
@ -21,7 +21,7 @@ unitTest =
|
|||
]
|
||||
|
||||
|
||||
{-| See <https://github.com/elm-community/elm-test>
|
||||
{-| See <https://github.com/elm-explorations/test>
|
||||
-}
|
||||
fuzzTest : Test
|
||||
fuzzTest =
|
||||
|
|
Loading…
Reference in a new issue