Allow well-formed bread.command events on the emit bus
Docs already said any module or app could publish bread.command.<app>.<verb>, but command is reserved so both unsourced bread-emit and sourced App emit rejected the whole namespace. Keep command unclaimable as an app id; accept bread.command.<known-app>.<verb> (and let an app command another known app). Also ship bread-emit and bread-module-host, and give udev enumerate the same classification fields as a live add so boot-time devices are not all unknown.
This commit is contained in:
parent
a6973360bd
commit
d3517d1433
52 changed files with 26405 additions and 6811 deletions
|
|
@ -1,252 +1,327 @@
|
|||
{
|
||||
"bread-cli/src/hooks_git.rs": {
|
||||
"mtime": 1784781158.0572724,
|
||||
"mtime": 1786800467.7200727,
|
||||
"ast_hash": "7a29b5d5d90170f0aef9cececc7d8656",
|
||||
"semantic_hash": "7a29b5d5d90170f0aef9cececc7d8656"
|
||||
},
|
||||
"bread-cli/src/hooks_shell.rs": {
|
||||
"mtime": 1784781158.0582726,
|
||||
"mtime": 1786800467.7201686,
|
||||
"ast_hash": "c5d5b8922fcff79954ddb00496721603",
|
||||
"semantic_hash": "c5d5b8922fcff79954ddb00496721603"
|
||||
},
|
||||
"bread-cli/src/lib.rs": {
|
||||
"mtime": 1778512393.4941568,
|
||||
"mtime": 1786800467.7201686,
|
||||
"ast_hash": "d1bf6e1c239498521c42418f672bc400",
|
||||
"semantic_hash": "d1bf6e1c239498521c42418f672bc400"
|
||||
},
|
||||
"bread-cli/src/main.rs": {
|
||||
"mtime": 1784781158.0592725,
|
||||
"ast_hash": "db407455fee59858b369f8b8955de3d7",
|
||||
"semantic_hash": "db407455fee59858b369f8b8955de3d7"
|
||||
"mtime": 1786800467.7201686,
|
||||
"ast_hash": "e1fbe63ea3b10e0887072ab7133d0508",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"bread-cli/src/modules_mgmt.rs": {
|
||||
"mtime": 1784781158.0592725,
|
||||
"ast_hash": "ecef9a05ab9c0396ed7a27404b46334d",
|
||||
"semantic_hash": "ecef9a05ab9c0396ed7a27404b46334d"
|
||||
"mtime": 1786801244.1263742,
|
||||
"ast_hash": "1cb6f3e4fa26108f81215ab57bb02b91",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"bread-cli/tests/modules.rs": {
|
||||
"mtime": 1784781158.0602725,
|
||||
"mtime": 1786801244.1297076,
|
||||
"ast_hash": "84fca8f87dc915b1cb523f8199e78521",
|
||||
"semantic_hash": "84fca8f87dc915b1cb523f8199e78521"
|
||||
},
|
||||
"bread-emit/src/main.rs": {
|
||||
"mtime": 1784781158.0616376,
|
||||
"mtime": 1786800467.7206197,
|
||||
"ast_hash": "350cefbf697cfd93f7df7b7bcc45a101",
|
||||
"semantic_hash": "350cefbf697cfd93f7df7b7bcc45a101"
|
||||
},
|
||||
"bread-shared/src/apps.rs": {
|
||||
"mtime": 1785479966.7981513,
|
||||
"ast_hash": "78da874557a45d9b06a9d0622c72dc5a",
|
||||
"semantic_hash": "78da874557a45d9b06a9d0622c72dc5a"
|
||||
"mtime": 1786801218.1467261,
|
||||
"ast_hash": "e8419571e7a322019d71c89559fb02fb",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"bread-shared/src/glob.rs": {
|
||||
"mtime": 1784781158.0616376,
|
||||
"mtime": 1786800467.7210522,
|
||||
"ast_hash": "0594a313cb1909d1cca5fd5b8f241b68",
|
||||
"semantic_hash": "0594a313cb1909d1cca5fd5b8f241b68"
|
||||
},
|
||||
"bread-shared/src/lib.rs": {
|
||||
"mtime": 1784781173.9236407,
|
||||
"ast_hash": "8fabca4623d00ddfc131dea8d8c207c1",
|
||||
"semantic_hash": "8fabca4623d00ddfc131dea8d8c207c1"
|
||||
"mtime": 1786801244.1297076,
|
||||
"ast_hash": "236b73bad29f1544a28fbf3ee1ccc795",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"bread-shared/src/widget.rs": {
|
||||
"mtime": 1784781173.9236407,
|
||||
"mtime": 1786801244.1297076,
|
||||
"ast_hash": "33272eb38c7fffbfa180cef7c5a286fc",
|
||||
"semantic_hash": "33272eb38c7fffbfa180cef7c5a286fc"
|
||||
},
|
||||
"breadd/src/adapters/bluetooth.rs": {
|
||||
"mtime": 1778843727.5135255,
|
||||
"mtime": 1786800467.7214499,
|
||||
"ast_hash": "4d1df67347d5b7c9cdbcb12921a6ae28",
|
||||
"semantic_hash": "4d1df67347d5b7c9cdbcb12921a6ae28"
|
||||
},
|
||||
"breadd/src/adapters/filesystem.rs": {
|
||||
"mtime": 1784781158.0616376,
|
||||
"mtime": 1786800467.7215972,
|
||||
"ast_hash": "8ec9dcd8de13f30922cfbe9b4a3fff56",
|
||||
"semantic_hash": "8ec9dcd8de13f30922cfbe9b4a3fff56"
|
||||
},
|
||||
"breadd/src/adapters/git.rs": {
|
||||
"mtime": 1784781158.0616376,
|
||||
"mtime": 1786800467.7215972,
|
||||
"ast_hash": "6e6ff6ca318e28cd94690c30d41b520b",
|
||||
"semantic_hash": "6e6ff6ca318e28cd94690c30d41b520b"
|
||||
},
|
||||
"breadd/src/adapters/hyprland.rs": {
|
||||
"mtime": 1784774788.7034824,
|
||||
"mtime": 1786800467.7215972,
|
||||
"ast_hash": "71537dbd86b413d94476f8022054f1f4",
|
||||
"semantic_hash": "71537dbd86b413d94476f8022054f1f4"
|
||||
},
|
||||
"breadd/src/adapters/mod.rs": {
|
||||
"mtime": 1784781158.0616376,
|
||||
"mtime": 1786800467.7215972,
|
||||
"ast_hash": "63885887c2fc3ea2314d7fe095e5df61",
|
||||
"semantic_hash": "63885887c2fc3ea2314d7fe095e5df61"
|
||||
},
|
||||
"breadd/src/adapters/network.rs": {
|
||||
"mtime": 1778470615.8460202,
|
||||
"mtime": 1786800467.7215972,
|
||||
"ast_hash": "8706dc546b7e08d5aa084ca58c48559c",
|
||||
"semantic_hash": "8706dc546b7e08d5aa084ca58c48559c"
|
||||
},
|
||||
"breadd/src/adapters/network_rtnetlink.rs": {
|
||||
"mtime": 1784781158.0616376,
|
||||
"mtime": 1786800467.7215972,
|
||||
"ast_hash": "0c9d0bb2693bc46b11807f6b8ebb7c4c",
|
||||
"semantic_hash": "0c9d0bb2693bc46b11807f6b8ebb7c4c"
|
||||
},
|
||||
"breadd/src/adapters/podman.rs": {
|
||||
"mtime": 1784781158.0622723,
|
||||
"mtime": 1786800467.7215972,
|
||||
"ast_hash": "97c08551c0fe53b0a5888d98730d35db",
|
||||
"semantic_hash": "97c08551c0fe53b0a5888d98730d35db"
|
||||
},
|
||||
"breadd/src/adapters/power.rs": {
|
||||
"mtime": 1778470615.838569,
|
||||
"mtime": 1786800467.7215972,
|
||||
"ast_hash": "987d202ec0d30ec26b1d747a6e320ed7",
|
||||
"semantic_hash": "987d202ec0d30ec26b1d747a6e320ed7"
|
||||
},
|
||||
"breadd/src/adapters/power_upower.rs": {
|
||||
"mtime": 1784781158.0622723,
|
||||
"mtime": 1786800467.7215972,
|
||||
"ast_hash": "fc0a36ca76d340c8be77644f63e462bf",
|
||||
"semantic_hash": "fc0a36ca76d340c8be77644f63e462bf"
|
||||
},
|
||||
"breadd/src/adapters/systemd.rs": {
|
||||
"mtime": 1784781158.0622723,
|
||||
"mtime": 1786800467.7215972,
|
||||
"ast_hash": "b3884dbecd39acc38abdf67589a8b954",
|
||||
"semantic_hash": "b3884dbecd39acc38abdf67589a8b954"
|
||||
},
|
||||
"breadd/src/adapters/udev.rs": {
|
||||
"mtime": 1778680581.3648126,
|
||||
"ast_hash": "653a424baee8c436b2adb608c92c9fd2",
|
||||
"semantic_hash": "653a424baee8c436b2adb608c92c9fd2"
|
||||
"mtime": 1786800978.7399695,
|
||||
"ast_hash": "568993c8c2dd218879eec57aee50a6b9",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"breadd/src/core/config.rs": {
|
||||
"mtime": 1784781158.0632722,
|
||||
"ast_hash": "0bc6dd90a2398b22f5fdbf1d647b4c7d",
|
||||
"semantic_hash": "0bc6dd90a2398b22f5fdbf1d647b4c7d"
|
||||
"mtime": 1786800467.7215972,
|
||||
"ast_hash": "7f479bfb51647e6131c14f0c2f153d95",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"breadd/src/core/mod.rs": {
|
||||
"mtime": 1778471738.0735896,
|
||||
"ast_hash": "3df83a958dd6ee5d09712b7cc03e15c9",
|
||||
"semantic_hash": "3df83a958dd6ee5d09712b7cc03e15c9"
|
||||
"mtime": 1786800467.7223108,
|
||||
"ast_hash": "e38bfdb894eabd208941bd3ffb1ef464",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"breadd/src/core/normalizer.rs": {
|
||||
"mtime": 1784781158.0632722,
|
||||
"ast_hash": "5e918ed12395767b6d0c315d804f1215",
|
||||
"semantic_hash": "5e918ed12395767b6d0c315d804f1215"
|
||||
"mtime": 1786801218.2233918,
|
||||
"ast_hash": "1596f60df5049ff8715f66f64bee9f8a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"breadd/src/core/state_engine.rs": {
|
||||
"mtime": 1784781173.9246407,
|
||||
"ast_hash": "162df9607c8a733a7060bb732fdcf783",
|
||||
"semantic_hash": "162df9607c8a733a7060bb732fdcf783"
|
||||
"mtime": 1786800467.7223108,
|
||||
"ast_hash": "84a35ee78f3881261a3ce378ea3c03a0",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"breadd/src/core/subscriptions.rs": {
|
||||
"mtime": 1784781158.0632722,
|
||||
"mtime": 1786800467.7223108,
|
||||
"ast_hash": "8735d4717b74523c787dab9ea2b0bbd8",
|
||||
"semantic_hash": "8735d4717b74523c787dab9ea2b0bbd8"
|
||||
},
|
||||
"breadd/src/core/supervisor.rs": {
|
||||
"mtime": 1778680581.3778126,
|
||||
"mtime": 1786800467.7223108,
|
||||
"ast_hash": "403f7ba1807c71f9b89d81bfeff2681a",
|
||||
"semantic_hash": "403f7ba1807c71f9b89d81bfeff2681a"
|
||||
},
|
||||
"breadd/src/core/types.rs": {
|
||||
"mtime": 1784781173.9246407,
|
||||
"ast_hash": "830da3a3b75e0cad06f07f971950bbbb",
|
||||
"semantic_hash": "830da3a3b75e0cad06f07f971950bbbb"
|
||||
"mtime": 1786800467.7223108,
|
||||
"ast_hash": "8bd070d4c09725d8717749a79aa42a92",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"breadd/src/ipc/mod.rs": {
|
||||
"mtime": 1784781173.9246407,
|
||||
"ast_hash": "c26947d0a253ab5bec356049bb63d7e5",
|
||||
"semantic_hash": "c26947d0a253ab5bec356049bb63d7e5"
|
||||
"mtime": 1786800912.9916558,
|
||||
"ast_hash": "54af229257e555313f7d4b59d57ff8d3",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"breadd/src/lua/mod.rs": {
|
||||
"mtime": 1784781173.9246407,
|
||||
"ast_hash": "6816dd3c14657467a4e537328d6edb59",
|
||||
"semantic_hash": "6816dd3c14657467a4e537328d6edb59"
|
||||
"mtime": 1786801244.1297076,
|
||||
"ast_hash": "ed13e2495399d532625653a22a4fee14",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"breadd/src/main.rs": {
|
||||
"mtime": 1784781158.0642722,
|
||||
"ast_hash": "b59d4e025c652b074a87638d99823418",
|
||||
"semantic_hash": "b59d4e025c652b074a87638d99823418"
|
||||
"mtime": 1786800467.722855,
|
||||
"ast_hash": "4b31888cc9e76210df0c7cff3a8b1e42",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"breadd/tests/ipc_integration.rs": {
|
||||
"mtime": 1784781158.0642722,
|
||||
"ast_hash": "116f390ea369b67ddefa95b8519de3b7",
|
||||
"semantic_hash": "116f390ea369b67ddefa95b8519de3b7"
|
||||
"mtime": 1786801218.36339,
|
||||
"ast_hash": "2b5bade2cc2e189a3af9c692232be258",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"examples/modules/active-window-widget.lua": {
|
||||
"mtime": 1784781173.9256406,
|
||||
"mtime": 1786800467.7243168,
|
||||
"ast_hash": "a5f6fb2c54775a49ddaf29674f86571d",
|
||||
"semantic_hash": "a5f6fb2c54775a49ddaf29674f86571d"
|
||||
},
|
||||
"examples/modules/bluetooth-toggle-widget.lua": {
|
||||
"mtime": 1784781173.9256406,
|
||||
"mtime": 1786800467.7243168,
|
||||
"ast_hash": "c8529dc45862adf4f63db48674a28277",
|
||||
"semantic_hash": "c8529dc45862adf4f63db48674a28277"
|
||||
},
|
||||
"examples/modules/cpu-temp-widget.lua": {
|
||||
"mtime": 1784781173.9256406,
|
||||
"ast_hash": "c214e573fa1338b9e5e56ce38a1a36e3",
|
||||
"semantic_hash": "c214e573fa1338b9e5e56ce38a1a36e3"
|
||||
},
|
||||
"examples/modules/dock-monitors.lua": {
|
||||
"mtime": 1784781158.0663679,
|
||||
"mtime": 1786800467.724451,
|
||||
"ast_hash": "4abe51f19614d2bf117ac35e95324801",
|
||||
"semantic_hash": "4abe51f19614d2bf117ac35e95324801"
|
||||
},
|
||||
"examples/modules/dock-workflow.lua": {
|
||||
"mtime": 1784781158.0663679,
|
||||
"ast_hash": "7ea9293195fdcb839acaa52bc0d040b3",
|
||||
"semantic_hash": "7ea9293195fdcb839acaa52bc0d040b3"
|
||||
"mtime": 1786800467.724451,
|
||||
"ast_hash": "84cf81cfb7780e89a46e96a6ccfbad15",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"examples/modules/focus-mode-widget.lua": {
|
||||
"mtime": 1784781173.9256406,
|
||||
"mtime": 1786800467.724451,
|
||||
"ast_hash": "f62c366c2c85cfbe59eef663fc607230",
|
||||
"semantic_hash": "f62c366c2c85cfbe59eef663fc607230"
|
||||
},
|
||||
"examples/modules/git-branch-widget.lua": {
|
||||
"mtime": 1784781173.9256406,
|
||||
"ast_hash": "25ae6c6190547d7ca7ad649bc288eac1",
|
||||
"semantic_hash": "25ae6c6190547d7ca7ad649bc288eac1"
|
||||
"mtime": 1786800467.724451,
|
||||
"ast_hash": "ebeeaebab5b5b29619f3db65c1df57d8",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"examples/modules/low-battery-warning.lua": {
|
||||
"mtime": 1784781158.0663679,
|
||||
"mtime": 1786800467.724451,
|
||||
"ast_hash": "e0ba79860562fc36fa8cb183bc576fb7",
|
||||
"semantic_hash": "e0ba79860562fc36fa8cb183bc576fb7"
|
||||
},
|
||||
"examples/modules/pause-media-on-headphone-unplug.lua": {
|
||||
"mtime": 1784781158.0663679,
|
||||
"mtime": 1786800467.724451,
|
||||
"ast_hash": "6c4cf82b6963eb93df224bed60d06c2d",
|
||||
"semantic_hash": "6c4cf82b6963eb93df224bed60d06c2d"
|
||||
},
|
||||
"examples/modules/workflow-status-widget.lua": {
|
||||
"mtime": 1784781173.9256406,
|
||||
"mtime": 1786800467.724451,
|
||||
"ast_hash": "9f913a66a0f8654dadc1c5d6c2be0938",
|
||||
"semantic_hash": "9f913a66a0f8654dadc1c5d6c2be0938"
|
||||
},
|
||||
"scripts/install.sh": {
|
||||
"mtime": 1778679456.2324038,
|
||||
"ast_hash": "c471884651bedb94c2cbceda02dee99c",
|
||||
"semantic_hash": "c471884651bedb94c2cbceda02dee99c"
|
||||
"mtime": 1786800994.0764284,
|
||||
"ast_hash": "35d1a7f63824e9176bd105ab3d699576",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"CONTRIBUTING.md": {
|
||||
"mtime": 1785467202.8123527,
|
||||
"ast_hash": "83fdc4753fadb0a6caba7d9fa5126055",
|
||||
"semantic_hash": "83fdc4753fadb0a6caba7d9fa5126055"
|
||||
"mtime": 1786800467.716893,
|
||||
"ast_hash": "6d056fcf0dae29949d19c41b41792879",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"Documentation.md": {
|
||||
"mtime": 1784781173.9236407,
|
||||
"ast_hash": "5cbefc87f14fa998b29d8720a2c35ead",
|
||||
"semantic_hash": "5cbefc87f14fa998b29d8720a2c35ead"
|
||||
"mtime": 1786801027.2816515,
|
||||
"ast_hash": "7b8471e7ae45aed70682bb858826860c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"Examples.md": {
|
||||
"mtime": 1784781173.9236407,
|
||||
"mtime": 1786800467.716893,
|
||||
"ast_hash": "6bcd7a14be53a9f67ef6912b160da8bc",
|
||||
"semantic_hash": "6bcd7a14be53a9f67ef6912b160da8bc"
|
||||
},
|
||||
"README.md": {
|
||||
"mtime": 1784781158.0562725,
|
||||
"ast_hash": "4fb428200bf6ef1aef21552842249237",
|
||||
"semantic_hash": "4fb428200bf6ef1aef21552842249237"
|
||||
"mtime": 1786800994.0964282,
|
||||
"ast_hash": "97ae9f7efb9f2cdceb615a47cf3dfa1a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"upgrade.md": {
|
||||
"mtime": 1785826079.9260893,
|
||||
"ast_hash": "d298b8982ab58c0155e8f22b96dd5666",
|
||||
"semantic_hash": "d298b8982ab58c0155e8f22b96dd5666"
|
||||
"bread-module-host/src/io.rs": {
|
||||
"mtime": 1786801244.1297076,
|
||||
"ast_hash": "dbe04e05d1cfb02770db8d7c0bcc0b68",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"bread-module-host/src/lua_env.rs": {
|
||||
"mtime": 1786801244.1297076,
|
||||
"ast_hash": "97d009846e18d3c809663b1185c98bbb",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"bread-module-host/src/main.rs": {
|
||||
"mtime": 1786801244.1297076,
|
||||
"ast_hash": "9a93253ae44c764b8273df40999ddede",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"bread-shared/src/module_host_ipc.rs": {
|
||||
"mtime": 1786801244.1297076,
|
||||
"ast_hash": "fcdb4c03f242a5ea51fd3a096b711363",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"bread-shared/src/permissions.rs": {
|
||||
"mtime": 1786800467.7210522,
|
||||
"ast_hash": "800445ef9c90bdbf8f3ac9d4f1afd98e",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"breadd/src/core/rules.rs": {
|
||||
"mtime": 1786801244.1297076,
|
||||
"ast_hash": "bd430cf213f400b8d4e96ccc35a76ff1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"breadd/src/ipc/module_host_bridge.rs": {
|
||||
"mtime": 1786801244.1297076,
|
||||
"ast_hash": "caa9cf82695e48c88758fcfa835e1871",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"breadd/src/module_host.rs": {
|
||||
"mtime": 1786801244.1297076,
|
||||
"ast_hash": "228826ff3c8941ea5f9bb28b66d637a9",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"breadd/tests/module_host_sandbox.rs": {
|
||||
"mtime": 1786801244.1297076,
|
||||
"ast_hash": "7e637b3a950c510215a6f6a7b88dd404",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"examples/modules/cpu-temp-widget/init.lua": {
|
||||
"mtime": 1786800467.724451,
|
||||
"ast_hash": "5ac893dd2f6af6d8b22dd290e3021f77",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"xtask/src/main.rs": {
|
||||
"mtime": 1786801244.1297076,
|
||||
"ast_hash": "e914dd77ac3241df09e3a681228961db",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".forgejo/workflows/dev-release.yml": {
|
||||
"mtime": 1786800467.7161875,
|
||||
"ast_hash": "707129aa2fe79b4539d108c03e6d7abf",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".forgejo/workflows/rc-release.yml": {
|
||||
"mtime": 1786800467.7167187,
|
||||
"ast_hash": "3007d2c43d785cd72f0548096626a21d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".forgejo/workflows/release.yml": {
|
||||
"mtime": 1786800467.7167187,
|
||||
"ast_hash": "3578aa39e7b2466822c8d85247489d36",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"DEPRECATIONS.md": {
|
||||
"mtime": 1786800467.716893,
|
||||
"ast_hash": "1685b60fad2ed4184e4119c30866ec12",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"examples/modules/README.md": {
|
||||
"mtime": 1786800467.7242541,
|
||||
"ast_hash": "dfa8a72f41c08bd5b8036b684092a93b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"packaging/README.md": {
|
||||
"mtime": 1786800994.0430956,
|
||||
"ast_hash": "caa295eed64de126874a2e48b8aed8a2",
|
||||
"semantic_hash": ""
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue