@ebowwa/hetzner-mcp 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bun.lock +250 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1928 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/hetzner/actions.d.ts +356 -0
- package/dist/lib/hetzner/actions.d.ts.map +1 -0
- package/dist/lib/hetzner/actions.js +804 -0
- package/dist/lib/hetzner/actions.js.map +1 -0
- package/dist/lib/hetzner/auth.d.ts +7 -0
- package/dist/lib/hetzner/auth.d.ts.map +1 -0
- package/dist/lib/hetzner/auth.js +35 -0
- package/dist/lib/hetzner/auth.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/cloud-init.d.ts +79 -0
- package/dist/lib/hetzner/bootstrap/cloud-init.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/cloud-init.js +279 -0
- package/dist/lib/hetzner/bootstrap/cloud-init.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/firewall.d.ts +119 -0
- package/dist/lib/hetzner/bootstrap/firewall.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/firewall.js +279 -0
- package/dist/lib/hetzner/bootstrap/firewall.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/genesis.d.ts +83 -0
- package/dist/lib/hetzner/bootstrap/genesis.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/genesis.js +406 -0
- package/dist/lib/hetzner/bootstrap/genesis.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/index.d.ts +30 -0
- package/dist/lib/hetzner/bootstrap/index.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/index.js +35 -0
- package/dist/lib/hetzner/bootstrap/index.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.d.ts +70 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.js +266 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.test.d.ts +7 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.test.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.test.js +181 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.test.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/security-audit.d.ts +46 -0
- package/dist/lib/hetzner/bootstrap/security-audit.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/security-audit.js +118 -0
- package/dist/lib/hetzner/bootstrap/security-audit.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/ssh-hardening.d.ts +68 -0
- package/dist/lib/hetzner/bootstrap/ssh-hardening.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/ssh-hardening.js +182 -0
- package/dist/lib/hetzner/bootstrap/ssh-hardening.js.map +1 -0
- package/dist/lib/hetzner/client.d.ts +63 -0
- package/dist/lib/hetzner/client.d.ts.map +1 -0
- package/dist/lib/hetzner/client.js +137 -0
- package/dist/lib/hetzner/client.js.map +1 -0
- package/dist/lib/hetzner/config.d.ts +5 -0
- package/dist/lib/hetzner/config.d.ts.map +1 -0
- package/dist/lib/hetzner/config.js +5 -0
- package/dist/lib/hetzner/config.js.map +1 -0
- package/dist/lib/hetzner/errors.d.ts +171 -0
- package/dist/lib/hetzner/errors.d.ts.map +1 -0
- package/dist/lib/hetzner/errors.js +270 -0
- package/dist/lib/hetzner/errors.js.map +1 -0
- package/dist/lib/hetzner/index.d.ts +21 -0
- package/dist/lib/hetzner/index.d.ts.map +1 -0
- package/dist/lib/hetzner/index.js +29 -0
- package/dist/lib/hetzner/index.js.map +1 -0
- package/dist/lib/hetzner/pricing.d.ts +207 -0
- package/dist/lib/hetzner/pricing.d.ts.map +1 -0
- package/dist/lib/hetzner/pricing.js +284 -0
- package/dist/lib/hetzner/pricing.js.map +1 -0
- package/dist/lib/hetzner/schemas.d.ts +1644 -0
- package/dist/lib/hetzner/schemas.d.ts.map +1 -0
- package/dist/lib/hetzner/schemas.js +660 -0
- package/dist/lib/hetzner/schemas.js.map +1 -0
- package/dist/lib/hetzner/server-status.d.ts +26 -0
- package/dist/lib/hetzner/server-status.d.ts.map +1 -0
- package/dist/lib/hetzner/server-status.js +64 -0
- package/dist/lib/hetzner/server-status.js.map +1 -0
- package/dist/lib/hetzner/servers.d.ts +165 -0
- package/dist/lib/hetzner/servers.d.ts.map +1 -0
- package/dist/lib/hetzner/servers.js +424 -0
- package/dist/lib/hetzner/servers.js.map +1 -0
- package/dist/lib/hetzner/ssh-keys.d.ts +36 -0
- package/dist/lib/hetzner/ssh-keys.d.ts.map +1 -0
- package/dist/lib/hetzner/ssh-keys.js +90 -0
- package/dist/lib/hetzner/ssh-keys.js.map +1 -0
- package/dist/lib/hetzner/ssh-setup.d.ts +48 -0
- package/dist/lib/hetzner/ssh-setup.d.ts.map +1 -0
- package/dist/lib/hetzner/ssh-setup.js +167 -0
- package/dist/lib/hetzner/ssh-setup.js.map +1 -0
- package/dist/lib/hetzner/types.d.ts +330 -0
- package/dist/lib/hetzner/types.d.ts.map +1 -0
- package/dist/lib/hetzner/types.js +96 -0
- package/dist/lib/hetzner/types.js.map +1 -0
- package/dist/lib/hetzner/volumes.d.ts +106 -0
- package/dist/lib/hetzner/volumes.d.ts.map +1 -0
- package/dist/lib/hetzner/volumes.js +172 -0
- package/dist/lib/hetzner/volumes.js.map +1 -0
- package/dist/lib/resources.d.ts +70 -0
- package/dist/lib/resources.d.ts.map +1 -0
- package/dist/lib/resources.js +115 -0
- package/dist/lib/resources.js.map +1 -0
- package/dist/lib/ssh/flags.d.ts +349 -0
- package/dist/lib/ssh/flags.d.ts.map +1 -0
- package/dist/lib/ssh/flags.js +322 -0
- package/dist/lib/ssh/flags.js.map +1 -0
- package/dist/lib/ssh/index.d.ts +5 -0
- package/dist/lib/ssh/index.d.ts.map +1 -0
- package/dist/lib/ssh/index.js +5 -0
- package/dist/lib/ssh/index.js.map +1 -0
- package/dist/lib/terminal/api.d.ts +8 -0
- package/dist/lib/terminal/api.d.ts.map +1 -0
- package/dist/lib/terminal/api.js +594 -0
- package/dist/lib/terminal/api.js.map +1 -0
- package/dist/lib/terminal/client.d.ts +15 -0
- package/dist/lib/terminal/client.d.ts.map +1 -0
- package/dist/lib/terminal/client.js +45 -0
- package/dist/lib/terminal/client.js.map +1 -0
- package/dist/lib/terminal/config.d.ts +86 -0
- package/dist/lib/terminal/config.d.ts.map +1 -0
- package/dist/lib/terminal/config.js +375 -0
- package/dist/lib/terminal/config.js.map +1 -0
- package/dist/lib/terminal/error.d.ts +8 -0
- package/dist/lib/terminal/error.d.ts.map +1 -0
- package/dist/lib/terminal/error.js +12 -0
- package/dist/lib/terminal/error.js.map +1 -0
- package/dist/lib/terminal/exec.d.ts +47 -0
- package/dist/lib/terminal/exec.d.ts.map +1 -0
- package/dist/lib/terminal/exec.js +107 -0
- package/dist/lib/terminal/exec.js.map +1 -0
- package/dist/lib/terminal/files.d.ts +124 -0
- package/dist/lib/terminal/files.d.ts.map +1 -0
- package/dist/lib/terminal/files.js +436 -0
- package/dist/lib/terminal/files.js.map +1 -0
- package/dist/lib/terminal/fingerprint.d.ts +67 -0
- package/dist/lib/terminal/fingerprint.d.ts.map +1 -0
- package/dist/lib/terminal/fingerprint.js +214 -0
- package/dist/lib/terminal/fingerprint.js.map +1 -0
- package/dist/lib/terminal/index.d.ts +14 -0
- package/dist/lib/terminal/index.d.ts.map +1 -0
- package/dist/lib/terminal/index.js +21 -0
- package/dist/lib/terminal/index.js.map +1 -0
- package/dist/lib/terminal/manager.d.ts +103 -0
- package/dist/lib/terminal/manager.d.ts.map +1 -0
- package/dist/lib/terminal/manager.js +237 -0
- package/dist/lib/terminal/manager.js.map +1 -0
- package/dist/lib/terminal/network-error-detector.d.ts +19 -0
- package/dist/lib/terminal/network-error-detector.d.ts.map +1 -0
- package/dist/lib/terminal/network-error-detector.js +98 -0
- package/dist/lib/terminal/network-error-detector.js.map +1 -0
- package/dist/lib/terminal/pool.d.ts +143 -0
- package/dist/lib/terminal/pool.d.ts.map +1 -0
- package/dist/lib/terminal/pool.js +554 -0
- package/dist/lib/terminal/pool.js.map +1 -0
- package/dist/lib/terminal/pty.d.ts +59 -0
- package/dist/lib/terminal/pty.d.ts.map +1 -0
- package/dist/lib/terminal/pty.js +224 -0
- package/dist/lib/terminal/pty.js.map +1 -0
- package/dist/lib/terminal/resources.d.ts +63 -0
- package/dist/lib/terminal/resources.d.ts.map +1 -0
- package/dist/lib/terminal/resources.js +62 -0
- package/dist/lib/terminal/resources.js.map +1 -0
- package/dist/lib/terminal/scp.d.ts +30 -0
- package/dist/lib/terminal/scp.d.ts.map +1 -0
- package/dist/lib/terminal/scp.js +74 -0
- package/dist/lib/terminal/scp.js.map +1 -0
- package/dist/lib/terminal/sessions.d.ts +101 -0
- package/dist/lib/terminal/sessions.d.ts.map +1 -0
- package/dist/lib/terminal/sessions.js +718 -0
- package/dist/lib/terminal/sessions.js.map +1 -0
- package/dist/lib/terminal/tmux-exec.d.ts +50 -0
- package/dist/lib/terminal/tmux-exec.d.ts.map +1 -0
- package/dist/lib/terminal/tmux-exec.js +79 -0
- package/dist/lib/terminal/tmux-exec.js.map +1 -0
- package/dist/lib/terminal/tmux-local.d.ts +273 -0
- package/dist/lib/terminal/tmux-local.d.ts.map +1 -0
- package/dist/lib/terminal/tmux-local.js +629 -0
- package/dist/lib/terminal/tmux-local.js.map +1 -0
- package/dist/lib/terminal/tmux-manager.d.ts +328 -0
- package/dist/lib/terminal/tmux-manager.d.ts.map +1 -0
- package/dist/lib/terminal/tmux-manager.js +667 -0
- package/dist/lib/terminal/tmux-manager.js.map +1 -0
- package/dist/lib/terminal/tmux.d.ts +213 -0
- package/dist/lib/terminal/tmux.d.ts.map +1 -0
- package/dist/lib/terminal/tmux.js +528 -0
- package/dist/lib/terminal/tmux.js.map +1 -0
- package/dist/lib/terminal/types.d.ts +18 -0
- package/dist/lib/terminal/types.d.ts.map +1 -0
- package/dist/lib/terminal/types.js +5 -0
- package/dist/lib/terminal/types.js.map +1 -0
- package/lmdb.db +0 -0
- package/lmdb.db-lock +0 -0
- package/package.json +48 -0
- package/src/index.js +2034 -0
- package/src/index.ts +2295 -0
- package/src/lib/hetzner/actions.ts +1056 -0
- package/src/lib/hetzner/auth.ts +37 -0
- package/src/lib/hetzner/bootstrap/cloud-init.ts +394 -0
- package/src/lib/hetzner/bootstrap/firewall.ts +342 -0
- package/src/lib/hetzner/bootstrap/genesis.ts +518 -0
- package/src/lib/hetzner/bootstrap/index.ts +71 -0
- package/src/lib/hetzner/bootstrap/kernel-hardening.test.ts +230 -0
- package/src/lib/hetzner/bootstrap/kernel-hardening.ts +272 -0
- package/src/lib/hetzner/bootstrap/security-audit.ts +124 -0
- package/src/lib/hetzner/bootstrap/ssh-hardening.ts +192 -0
- package/src/lib/hetzner/client.ts +177 -0
- package/src/lib/hetzner/config.ts +5 -0
- package/src/lib/hetzner/errors.ts +371 -0
- package/src/lib/hetzner/index.ts +56 -0
- package/src/lib/hetzner/pricing.ts +422 -0
- package/src/lib/hetzner/schemas.ts +765 -0
- package/src/lib/hetzner/server-status.ts +81 -0
- package/src/lib/hetzner/servers.ts +568 -0
- package/src/lib/hetzner/ssh-keys.ts +122 -0
- package/src/lib/hetzner/ssh-setup.ts +218 -0
- package/src/lib/hetzner/types.ts +419 -0
- package/src/lib/hetzner/volumes.ts +229 -0
- package/src/lib/resources.ts +156 -0
- package/src/lib/ssh/flags.ts +578 -0
- package/src/lib/ssh/index.ts +5 -0
- package/src/lib/terminal/client.ts +55 -0
- package/src/lib/terminal/config.ts +489 -0
- package/src/lib/terminal/error.ts +13 -0
- package/src/lib/terminal/exec.ts +128 -0
- package/src/lib/terminal/files.ts +636 -0
- package/src/lib/terminal/index.ts +71 -0
- package/src/lib/terminal/pool.ts +662 -0
- package/src/lib/terminal/scp.ts +109 -0
- package/src/lib/terminal/tmux-exec.ts +96 -0
- package/src/lib/terminal/tmux.ts +711 -0
- package/src/lib/terminal/types.ts +19 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSH Key Management for Hetzner
|
|
3
|
+
*
|
|
4
|
+
* This module ensures SSH keys are properly configured between:
|
|
5
|
+
* 1. Local machine (~/.ssh/)
|
|
6
|
+
* 2. Hetzner Cloud API
|
|
7
|
+
*
|
|
8
|
+
* PROBLEM:
|
|
9
|
+
* - Creating random keys in Hetzner doesn't work because we need the matching private key locally
|
|
10
|
+
* - Password auth is unreliable and often disabled
|
|
11
|
+
* - IP reuse causes known_hosts conflicts
|
|
12
|
+
*
|
|
13
|
+
* SOLUTION:
|
|
14
|
+
* - Always use existing local keys or create new key pairs
|
|
15
|
+
* - Upload public key to Hetzner, keep private key local
|
|
16
|
+
*/
|
|
17
|
+
import { existsSync, readFileSync } from "fs";
|
|
18
|
+
import { join } from "path";
|
|
19
|
+
import { SSHPresets, SSHFlags, buildSSHArgs, sshConfig } from "../ssh/index.js";
|
|
20
|
+
const HETZNER_SSH_DIR = join(process.env.HOME || "", ".ssh");
|
|
21
|
+
const HETZNER_KEY_PREFIX = "hetzner-codespaces";
|
|
22
|
+
/**
|
|
23
|
+
* Get or create a local SSH key pair for Hetzner
|
|
24
|
+
* Returns the key name to use with Hetzner API
|
|
25
|
+
*/
|
|
26
|
+
export async function getOrCreateHetznerSSHKey() {
|
|
27
|
+
// Check for existing Hetzner keys
|
|
28
|
+
const existingKey = findExistingHetznerKey();
|
|
29
|
+
if (existingKey) {
|
|
30
|
+
console.log(`✓ Using existing SSH key: ${existingKey.name}`);
|
|
31
|
+
return existingKey;
|
|
32
|
+
}
|
|
33
|
+
// Create new key pair
|
|
34
|
+
console.log("Creating new SSH key pair for Hetzner...");
|
|
35
|
+
return createNewKeyPair();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Find existing Hetzner SSH key in local ~/.ssh/
|
|
39
|
+
*/
|
|
40
|
+
function findExistingHetznerKey() {
|
|
41
|
+
const privateKeyPath = join(HETZNER_SSH_DIR, `${HETZNER_KEY_PREFIX}`);
|
|
42
|
+
const publicKeyPath = `${privateKeyPath}.pub`;
|
|
43
|
+
if (!existsSync(privateKeyPath) || !existsSync(publicKeyPath)) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
const publicKey = readFileSync(publicKeyPath, "utf-8").trim();
|
|
47
|
+
return {
|
|
48
|
+
name: HETZNER_KEY_PREFIX,
|
|
49
|
+
publicKey,
|
|
50
|
+
privateKeyPath,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create a new SSH key pair for Hetzner
|
|
55
|
+
*/
|
|
56
|
+
function createNewKeyPair() {
|
|
57
|
+
const keyName = `${HETZNER_KEY_PREFIX}-${Date.now()}`;
|
|
58
|
+
const privateKeyPath = join(HETZNER_SSH_DIR, keyName);
|
|
59
|
+
const publicKeyPath = `${privateKeyPath}.pub`;
|
|
60
|
+
// Generate new ed25519 key pair
|
|
61
|
+
try {
|
|
62
|
+
// Bun.spawn automatically escapes arguments to prevent shell injection
|
|
63
|
+
Bun.spawnSync(["ssh-keygen", "-t", "ed25519", "-f", privateKeyPath, "-N", "", "-C", keyName], {
|
|
64
|
+
stdout: "ignore",
|
|
65
|
+
stderr: "ignore",
|
|
66
|
+
});
|
|
67
|
+
// Set proper permissions
|
|
68
|
+
Bun.spawnSync(["chmod", "600", privateKeyPath], { stdout: "ignore", stderr: "ignore" });
|
|
69
|
+
Bun.spawnSync(["chmod", "644", publicKeyPath], { stdout: "ignore", stderr: "ignore" });
|
|
70
|
+
const publicKey = readFileSync(publicKeyPath, "utf-8").trim();
|
|
71
|
+
console.log(`✓ Created new SSH key: ${keyName}`);
|
|
72
|
+
console.log(` Private: ${privateKeyPath}`);
|
|
73
|
+
console.log(` Public: ${publicKeyPath}`);
|
|
74
|
+
return {
|
|
75
|
+
name: keyName,
|
|
76
|
+
publicKey,
|
|
77
|
+
privateKeyPath,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
throw new Error(`Failed to create SSH key: ${error}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Ensure SSH key exists in Hetzner
|
|
86
|
+
* Returns the SSH key name to use when creating servers
|
|
87
|
+
*/
|
|
88
|
+
export async function ensureHetznerSSHKey(hetznerAPI) {
|
|
89
|
+
// 1. Get or create local key pair
|
|
90
|
+
const localKey = await getOrCreateHetznerSSHKey();
|
|
91
|
+
// 2. Check if key exists in Hetzner
|
|
92
|
+
const existingKeys = await hetznerAPI("/ssh_keys", "GET", null)
|
|
93
|
+
.then((r) => r.json())
|
|
94
|
+
.then((data) => data.ssh_keys);
|
|
95
|
+
// 3. Find matching key by public key
|
|
96
|
+
const matchingKey = existingKeys.find((k) => k.public_key.trim() === localKey.publicKey.trim());
|
|
97
|
+
if (matchingKey) {
|
|
98
|
+
console.log(`✓ SSH key already exists in Hetzner: ${matchingKey.name} (${matchingKey.id})`);
|
|
99
|
+
return matchingKey.name; // Use existing key name
|
|
100
|
+
}
|
|
101
|
+
// 4. Upload new key to Hetzner
|
|
102
|
+
console.log(`Uploading SSH key to Hetzner: ${localKey.name}...`);
|
|
103
|
+
const createResponse = await hetznerAPI("/ssh_keys", "POST", {
|
|
104
|
+
name: localKey.name,
|
|
105
|
+
public_key: localKey.publicKey,
|
|
106
|
+
});
|
|
107
|
+
if (!createResponse.ok) {
|
|
108
|
+
const error = await createResponse.text();
|
|
109
|
+
throw new Error(`Failed to upload SSH key to Hetzner: ${error}`);
|
|
110
|
+
}
|
|
111
|
+
const createdKey = (await createResponse.json());
|
|
112
|
+
console.log(`✓ SSH key uploaded: ${createdKey.name} (${createdKey.id})`);
|
|
113
|
+
return createdKey.name;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Clear known_hosts entry for an IP (to fix IP reuse issues)
|
|
117
|
+
*/
|
|
118
|
+
export function clearKnownHosts(ip) {
|
|
119
|
+
try {
|
|
120
|
+
// Bun.spawn automatically escapes arguments to prevent shell injection
|
|
121
|
+
Bun.spawnSync(["ssh-keygen", "-R", ip], { stdout: "ignore", stderr: "ignore" });
|
|
122
|
+
console.log(`✓ Cleared known_hosts entry for ${ip}`);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
// Ignore if entry doesn't exist
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Test SSH connection to a server using typed flags
|
|
130
|
+
*/
|
|
131
|
+
export async function testSSHConnection(ip, privateKeyPath, username = "root") {
|
|
132
|
+
try {
|
|
133
|
+
// Build SSH args using typed flags
|
|
134
|
+
const flags = [
|
|
135
|
+
...SSHPresets.default,
|
|
136
|
+
SSHFlags.identity(privateKeyPath),
|
|
137
|
+
sshConfig("ConnectTimeout", "10"),
|
|
138
|
+
];
|
|
139
|
+
const sshArgs = buildSSHArgs(flags, ip, username);
|
|
140
|
+
sshArgs.push("echo", "connected");
|
|
141
|
+
// Bun.spawn automatically escapes arguments to prevent shell injection
|
|
142
|
+
const proc = Bun.spawn(sshArgs, {
|
|
143
|
+
stdout: "ignore",
|
|
144
|
+
stderr: "ignore",
|
|
145
|
+
});
|
|
146
|
+
// Wait for process to complete with timeout
|
|
147
|
+
const timeout = setTimeout(() => proc.kill(), 15000);
|
|
148
|
+
await proc.exited;
|
|
149
|
+
clearTimeout(timeout);
|
|
150
|
+
return proc.exitCode === 0;
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Full workflow: Prepare SSH keys before creating servers
|
|
158
|
+
*/
|
|
159
|
+
export async function prepareSSHKeys(hetznerAPI) {
|
|
160
|
+
const sshKeyName = await ensureHetznerSSHKey(hetznerAPI);
|
|
161
|
+
const localKey = await getOrCreateHetznerSSHKey();
|
|
162
|
+
return {
|
|
163
|
+
sshKeyName,
|
|
164
|
+
privateKeyPath: localKey.privateKeyPath,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=ssh-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssh-setup.js","sourceRoot":"","sources":["../../../src/lib/hetzner/ssh-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hetzner Cloud API types
|
|
3
|
+
*/
|
|
4
|
+
import { EnvironmentStatus, ActionStatus, VolumeStatus } from "@ebowwa/codespaces-types/compile";
|
|
5
|
+
export { EnvironmentStatus, ActionStatus, VolumeStatus };
|
|
6
|
+
export interface HetznerServer {
|
|
7
|
+
id: number;
|
|
8
|
+
name: string;
|
|
9
|
+
status: EnvironmentStatus;
|
|
10
|
+
image?: {
|
|
11
|
+
id: number;
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
type: "snapshot" | "backup" | "system";
|
|
15
|
+
} | null;
|
|
16
|
+
public_net: {
|
|
17
|
+
ipv4: {
|
|
18
|
+
ip: string;
|
|
19
|
+
blocked: boolean;
|
|
20
|
+
};
|
|
21
|
+
ipv6?: {
|
|
22
|
+
ip: string;
|
|
23
|
+
blocked: boolean;
|
|
24
|
+
};
|
|
25
|
+
floating_ips: Array<{
|
|
26
|
+
id: number;
|
|
27
|
+
ip: string;
|
|
28
|
+
}>;
|
|
29
|
+
firewalls: Array<{
|
|
30
|
+
id: number;
|
|
31
|
+
name: string;
|
|
32
|
+
status: "applied" | "pending";
|
|
33
|
+
}>;
|
|
34
|
+
};
|
|
35
|
+
server_type: {
|
|
36
|
+
id: number;
|
|
37
|
+
name: string;
|
|
38
|
+
description: string;
|
|
39
|
+
cores: number;
|
|
40
|
+
memory: number;
|
|
41
|
+
disk: number;
|
|
42
|
+
};
|
|
43
|
+
datacenter: {
|
|
44
|
+
id: number;
|
|
45
|
+
name: string;
|
|
46
|
+
description: string;
|
|
47
|
+
location: {
|
|
48
|
+
id: number;
|
|
49
|
+
name: string;
|
|
50
|
+
description: string;
|
|
51
|
+
country: string;
|
|
52
|
+
city: string;
|
|
53
|
+
latitude: number;
|
|
54
|
+
longitude: number;
|
|
55
|
+
network_zone: string;
|
|
56
|
+
};
|
|
57
|
+
supported_server_types?: Array<{
|
|
58
|
+
id: number;
|
|
59
|
+
name: string;
|
|
60
|
+
}> | null;
|
|
61
|
+
};
|
|
62
|
+
labels: Record<string, string>;
|
|
63
|
+
created: string;
|
|
64
|
+
protection: {
|
|
65
|
+
delete: boolean;
|
|
66
|
+
rebuild: boolean;
|
|
67
|
+
};
|
|
68
|
+
volumes: Array<{
|
|
69
|
+
id: number;
|
|
70
|
+
name: string;
|
|
71
|
+
size: number;
|
|
72
|
+
linux_device: string;
|
|
73
|
+
}>;
|
|
74
|
+
}
|
|
75
|
+
export interface CreateServerOptions {
|
|
76
|
+
name: string;
|
|
77
|
+
server_type?: string;
|
|
78
|
+
image?: string;
|
|
79
|
+
location?: string;
|
|
80
|
+
datacenter?: string;
|
|
81
|
+
ssh_keys?: Array<string | number>;
|
|
82
|
+
volumes?: number[];
|
|
83
|
+
labels?: Record<string, string>;
|
|
84
|
+
start_after_create?: boolean;
|
|
85
|
+
/** Cloud-init user data script for first-boot provisioning */
|
|
86
|
+
user_data?: string;
|
|
87
|
+
}
|
|
88
|
+
export interface UpdateServerOptions {
|
|
89
|
+
name?: string;
|
|
90
|
+
labels?: Record<string, string>;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Action command types from Hetzner Cloud API
|
|
94
|
+
*/
|
|
95
|
+
export declare enum ActionCommand {
|
|
96
|
+
CreateServer = "create_server",
|
|
97
|
+
DeleteServer = "delete_server",
|
|
98
|
+
StartServer = "start_server",
|
|
99
|
+
StopServer = "stop_server",
|
|
100
|
+
RebootServer = "reboot_server",
|
|
101
|
+
ResetServer = "reset_server",
|
|
102
|
+
ShutdownServer = "shutdown_server",
|
|
103
|
+
Poweroff = "poweroff",
|
|
104
|
+
ChangeServerType = "change_server_type",
|
|
105
|
+
RebuildServer = "rebuild_server",
|
|
106
|
+
EnableBackup = "enable_backup",
|
|
107
|
+
DisableBackup = "disable_backup",
|
|
108
|
+
CreateImage = "create_image",
|
|
109
|
+
ChangeDnsPtr = "change_dns_ptr",
|
|
110
|
+
AttachToNetwork = "attach_to_network",
|
|
111
|
+
DetachFromNetwork = "detach_from_network",
|
|
112
|
+
ChangeAliasIps = "change_alias_ips",
|
|
113
|
+
EnableRescue = "enable_rescue",
|
|
114
|
+
DisableRescue = "disable_rescue",
|
|
115
|
+
ChangeProtection = "change_protection",
|
|
116
|
+
CreateVolume = "create_volume",
|
|
117
|
+
DeleteVolume = "delete_volume",
|
|
118
|
+
AttachVolume = "attach_volume",
|
|
119
|
+
DetachVolume = "detach_volume",
|
|
120
|
+
ResizeVolume = "resize_volume",
|
|
121
|
+
VolumeChangeProtection = "volume_change_protection",
|
|
122
|
+
AddSubnet = "add_subnet",
|
|
123
|
+
DeleteSubnet = "delete_subnet",
|
|
124
|
+
AddRoute = "add_route",
|
|
125
|
+
DeleteRoute = "delete_route",
|
|
126
|
+
ChangeIpRange = "change_ip_range",
|
|
127
|
+
NetworkChangeProtection = "network_change_protection",
|
|
128
|
+
AssignFloatingIp = "assign_floating_ip",
|
|
129
|
+
UnassignFloatingIp = "unassign_floating_ip",
|
|
130
|
+
FloatingIpChangeDnsPtr = "floating_ip_change_dns_ptr",
|
|
131
|
+
FloatingIpChangeProtection = "floating_ip_change_protection",
|
|
132
|
+
CreateLoadBalancer = "create_load_balancer",
|
|
133
|
+
DeleteLoadBalancer = "delete_load_balancer",
|
|
134
|
+
AddTarget = "add_target",
|
|
135
|
+
RemoveTarget = "remove_target",
|
|
136
|
+
AddService = "add_service",
|
|
137
|
+
UpdateService = "update_service",
|
|
138
|
+
DeleteService = "delete_service",
|
|
139
|
+
LoadBalancerAttachToNetwork = "load_balancer_attach_to_network",
|
|
140
|
+
LoadBalancerDetachFromNetwork = "load_balancer_detach_from_network",
|
|
141
|
+
ChangeAlgorithm = "change_algorithm",
|
|
142
|
+
ChangeType = "change_type",
|
|
143
|
+
LoadBalancerChangeProtection = "load_balancer_change_protection",
|
|
144
|
+
IssueCertificate = "issue_certificate",
|
|
145
|
+
RetryCertificate = "retry_certificate",
|
|
146
|
+
SetFirewallRules = "set_firewall_rules",
|
|
147
|
+
ApplyFirewall = "apply_firewall",
|
|
148
|
+
RemoveFirewall = "remove_firewall",
|
|
149
|
+
FirewallChangeProtection = "firewall_change_protection",
|
|
150
|
+
ImageChangeProtection = "image_change_protection"
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Resource types that can be affected by actions
|
|
154
|
+
*/
|
|
155
|
+
export declare enum ResourceType {
|
|
156
|
+
Server = "server",
|
|
157
|
+
Volume = "volume",
|
|
158
|
+
Network = "network",
|
|
159
|
+
FloatingIp = "floating_ip",
|
|
160
|
+
LoadBalancer = "load_balancer",
|
|
161
|
+
Certificate = "certificate",
|
|
162
|
+
Firewall = "firewall",
|
|
163
|
+
Image = "image"
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Action resource reference
|
|
167
|
+
*/
|
|
168
|
+
export interface ActionResource {
|
|
169
|
+
id: number;
|
|
170
|
+
type: ResourceType;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Action error details
|
|
174
|
+
*/
|
|
175
|
+
export interface ActionError {
|
|
176
|
+
code: string;
|
|
177
|
+
message: string;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Base Hetzner Action type matching the API response
|
|
181
|
+
*
|
|
182
|
+
* The API returns actions with:
|
|
183
|
+
* - status: "running" | "success" | "error"
|
|
184
|
+
* - finished: string | null (null when running)
|
|
185
|
+
* - error: ActionError | null (null when not error)
|
|
186
|
+
*
|
|
187
|
+
* Note: Zod validation makes finished and error optional, but the API
|
|
188
|
+
* typically returns them. Use type guards for runtime checks.
|
|
189
|
+
*/
|
|
190
|
+
export interface HetznerAction {
|
|
191
|
+
id: number;
|
|
192
|
+
command: ActionCommand | string;
|
|
193
|
+
status: ActionStatus;
|
|
194
|
+
started: string;
|
|
195
|
+
finished?: string | null;
|
|
196
|
+
progress: number;
|
|
197
|
+
resources: ActionResource[];
|
|
198
|
+
error?: ActionError | null;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Server action response (includes server reference)
|
|
202
|
+
*/
|
|
203
|
+
export interface ServerActionResponse {
|
|
204
|
+
action: HetznerAction;
|
|
205
|
+
server?: HetznerServer;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Create server response with actions
|
|
209
|
+
*/
|
|
210
|
+
export interface CreateServerResponse {
|
|
211
|
+
server: HetznerServer;
|
|
212
|
+
action: HetznerAction;
|
|
213
|
+
next_actions: HetznerAction[];
|
|
214
|
+
root_password: string | null;
|
|
215
|
+
}
|
|
216
|
+
export interface HetznerVolume {
|
|
217
|
+
id: number;
|
|
218
|
+
name: string;
|
|
219
|
+
status: VolumeStatus;
|
|
220
|
+
server?: number | null;
|
|
221
|
+
size: number;
|
|
222
|
+
linux_device?: string | null;
|
|
223
|
+
format?: string | null;
|
|
224
|
+
location?: {
|
|
225
|
+
id: number;
|
|
226
|
+
name: string;
|
|
227
|
+
description: string;
|
|
228
|
+
country: string;
|
|
229
|
+
city: string;
|
|
230
|
+
latitude: number;
|
|
231
|
+
longitude: number;
|
|
232
|
+
} | null;
|
|
233
|
+
labels: Record<string, string>;
|
|
234
|
+
created: string;
|
|
235
|
+
protection: {
|
|
236
|
+
delete: boolean;
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
export interface CreateVolumeOptions {
|
|
240
|
+
name: string;
|
|
241
|
+
size: number;
|
|
242
|
+
server?: number;
|
|
243
|
+
location?: string;
|
|
244
|
+
format?: string;
|
|
245
|
+
automount?: boolean;
|
|
246
|
+
labels?: Record<string, string>;
|
|
247
|
+
}
|
|
248
|
+
export interface HetznerNetwork {
|
|
249
|
+
id: number;
|
|
250
|
+
name: string;
|
|
251
|
+
ip_range: string;
|
|
252
|
+
subnets: Array<{
|
|
253
|
+
type: "server" | "cloud" | "vswitch";
|
|
254
|
+
ip_range: string;
|
|
255
|
+
network_zone: string;
|
|
256
|
+
gateway: string;
|
|
257
|
+
}>;
|
|
258
|
+
routes: Array<{
|
|
259
|
+
destination: string;
|
|
260
|
+
gateway: string;
|
|
261
|
+
}>;
|
|
262
|
+
servers: number[];
|
|
263
|
+
protection: {
|
|
264
|
+
delete: boolean;
|
|
265
|
+
};
|
|
266
|
+
labels: Record<string, string>;
|
|
267
|
+
created: string;
|
|
268
|
+
}
|
|
269
|
+
export interface HetznerSSHKey {
|
|
270
|
+
id: number;
|
|
271
|
+
name: string;
|
|
272
|
+
fingerprint: string;
|
|
273
|
+
public_key: string;
|
|
274
|
+
labels: Record<string, string>;
|
|
275
|
+
created: string;
|
|
276
|
+
}
|
|
277
|
+
export interface CreateSSHKeyOptions {
|
|
278
|
+
name: string;
|
|
279
|
+
public_key: string;
|
|
280
|
+
labels?: Record<string, string>;
|
|
281
|
+
}
|
|
282
|
+
export interface RateLimitInfo {
|
|
283
|
+
limit: number;
|
|
284
|
+
remaining: number;
|
|
285
|
+
reset: number;
|
|
286
|
+
}
|
|
287
|
+
export interface RateLimitHeaders {
|
|
288
|
+
"RateLimit-Limit": string;
|
|
289
|
+
"RateLimit-Remaining": string;
|
|
290
|
+
"RateLimit-Reset": string;
|
|
291
|
+
}
|
|
292
|
+
export interface ActionPollingOptions {
|
|
293
|
+
/** Polling interval in milliseconds (default: 2000) */
|
|
294
|
+
pollInterval?: number;
|
|
295
|
+
/** Maximum number of polling attempts (default: 60) */
|
|
296
|
+
maxRetries?: number;
|
|
297
|
+
/** Optional callback for progress updates */
|
|
298
|
+
onProgress?: (action: HetznerAction) => void;
|
|
299
|
+
/** Optional timeout in milliseconds */
|
|
300
|
+
timeout?: number;
|
|
301
|
+
}
|
|
302
|
+
import type { HetznerLocation, HetznerDatacenter } from "@ebowwa/codespaces-types/compile";
|
|
303
|
+
/**
|
|
304
|
+
* Hetzner server type with pricing information
|
|
305
|
+
* Local override to allow undefined in location field (Hetzner API returns this)
|
|
306
|
+
*/
|
|
307
|
+
export interface HetznerServerType {
|
|
308
|
+
id: number;
|
|
309
|
+
name: string;
|
|
310
|
+
description: string;
|
|
311
|
+
cores: number;
|
|
312
|
+
memory: number;
|
|
313
|
+
disk: number;
|
|
314
|
+
deprecated?: boolean;
|
|
315
|
+
prices: Array<{
|
|
316
|
+
location?: string | null | undefined;
|
|
317
|
+
price_hourly: {
|
|
318
|
+
net: string;
|
|
319
|
+
gross: string;
|
|
320
|
+
};
|
|
321
|
+
price_monthly: {
|
|
322
|
+
net: string;
|
|
323
|
+
gross: string;
|
|
324
|
+
};
|
|
325
|
+
}>;
|
|
326
|
+
storage_type: "local" | "network";
|
|
327
|
+
cpu_type: "shared" | "dedicated";
|
|
328
|
+
}
|
|
329
|
+
export type { HetznerLocation, HetznerDatacenter };
|
|
330
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/hetzner/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hetzner Cloud API types
|
|
3
|
+
*/
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// Import shared status enums
|
|
6
|
+
// ============================================================================
|
|
7
|
+
import { EnvironmentStatus, ActionStatus, VolumeStatus, } from "@ebowwa/codespaces-types/compile";
|
|
8
|
+
// Re-export for convenience
|
|
9
|
+
export { EnvironmentStatus, ActionStatus, VolumeStatus };
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Action Types
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Action command types from Hetzner Cloud API
|
|
15
|
+
*/
|
|
16
|
+
export var ActionCommand;
|
|
17
|
+
(function (ActionCommand) {
|
|
18
|
+
// Server actions
|
|
19
|
+
ActionCommand["CreateServer"] = "create_server";
|
|
20
|
+
ActionCommand["DeleteServer"] = "delete_server";
|
|
21
|
+
ActionCommand["StartServer"] = "start_server";
|
|
22
|
+
ActionCommand["StopServer"] = "stop_server";
|
|
23
|
+
ActionCommand["RebootServer"] = "reboot_server";
|
|
24
|
+
ActionCommand["ResetServer"] = "reset_server";
|
|
25
|
+
ActionCommand["ShutdownServer"] = "shutdown_server";
|
|
26
|
+
ActionCommand["Poweroff"] = "poweroff";
|
|
27
|
+
ActionCommand["ChangeServerType"] = "change_server_type";
|
|
28
|
+
ActionCommand["RebuildServer"] = "rebuild_server";
|
|
29
|
+
ActionCommand["EnableBackup"] = "enable_backup";
|
|
30
|
+
ActionCommand["DisableBackup"] = "disable_backup";
|
|
31
|
+
ActionCommand["CreateImage"] = "create_image";
|
|
32
|
+
ActionCommand["ChangeDnsPtr"] = "change_dns_ptr";
|
|
33
|
+
ActionCommand["AttachToNetwork"] = "attach_to_network";
|
|
34
|
+
ActionCommand["DetachFromNetwork"] = "detach_from_network";
|
|
35
|
+
ActionCommand["ChangeAliasIps"] = "change_alias_ips";
|
|
36
|
+
ActionCommand["EnableRescue"] = "enable_rescue";
|
|
37
|
+
ActionCommand["DisableRescue"] = "disable_rescue";
|
|
38
|
+
ActionCommand["ChangeProtection"] = "change_protection";
|
|
39
|
+
// Volume actions
|
|
40
|
+
ActionCommand["CreateVolume"] = "create_volume";
|
|
41
|
+
ActionCommand["DeleteVolume"] = "delete_volume";
|
|
42
|
+
ActionCommand["AttachVolume"] = "attach_volume";
|
|
43
|
+
ActionCommand["DetachVolume"] = "detach_volume";
|
|
44
|
+
ActionCommand["ResizeVolume"] = "resize_volume";
|
|
45
|
+
ActionCommand["VolumeChangeProtection"] = "volume_change_protection";
|
|
46
|
+
// Network actions
|
|
47
|
+
ActionCommand["AddSubnet"] = "add_subnet";
|
|
48
|
+
ActionCommand["DeleteSubnet"] = "delete_subnet";
|
|
49
|
+
ActionCommand["AddRoute"] = "add_route";
|
|
50
|
+
ActionCommand["DeleteRoute"] = "delete_route";
|
|
51
|
+
ActionCommand["ChangeIpRange"] = "change_ip_range";
|
|
52
|
+
ActionCommand["NetworkChangeProtection"] = "network_change_protection";
|
|
53
|
+
// Floating IP actions
|
|
54
|
+
ActionCommand["AssignFloatingIp"] = "assign_floating_ip";
|
|
55
|
+
ActionCommand["UnassignFloatingIp"] = "unassign_floating_ip";
|
|
56
|
+
ActionCommand["FloatingIpChangeDnsPtr"] = "floating_ip_change_dns_ptr";
|
|
57
|
+
ActionCommand["FloatingIpChangeProtection"] = "floating_ip_change_protection";
|
|
58
|
+
// Load Balancer actions
|
|
59
|
+
ActionCommand["CreateLoadBalancer"] = "create_load_balancer";
|
|
60
|
+
ActionCommand["DeleteLoadBalancer"] = "delete_load_balancer";
|
|
61
|
+
ActionCommand["AddTarget"] = "add_target";
|
|
62
|
+
ActionCommand["RemoveTarget"] = "remove_target";
|
|
63
|
+
ActionCommand["AddService"] = "add_service";
|
|
64
|
+
ActionCommand["UpdateService"] = "update_service";
|
|
65
|
+
ActionCommand["DeleteService"] = "delete_service";
|
|
66
|
+
ActionCommand["LoadBalancerAttachToNetwork"] = "load_balancer_attach_to_network";
|
|
67
|
+
ActionCommand["LoadBalancerDetachFromNetwork"] = "load_balancer_detach_from_network";
|
|
68
|
+
ActionCommand["ChangeAlgorithm"] = "change_algorithm";
|
|
69
|
+
ActionCommand["ChangeType"] = "change_type";
|
|
70
|
+
ActionCommand["LoadBalancerChangeProtection"] = "load_balancer_change_protection";
|
|
71
|
+
// Certificate actions
|
|
72
|
+
ActionCommand["IssueCertificate"] = "issue_certificate";
|
|
73
|
+
ActionCommand["RetryCertificate"] = "retry_certificate";
|
|
74
|
+
// Firewall actions
|
|
75
|
+
ActionCommand["SetFirewallRules"] = "set_firewall_rules";
|
|
76
|
+
ActionCommand["ApplyFirewall"] = "apply_firewall";
|
|
77
|
+
ActionCommand["RemoveFirewall"] = "remove_firewall";
|
|
78
|
+
ActionCommand["FirewallChangeProtection"] = "firewall_change_protection";
|
|
79
|
+
// Image actions
|
|
80
|
+
ActionCommand["ImageChangeProtection"] = "image_change_protection";
|
|
81
|
+
})(ActionCommand || (ActionCommand = {}));
|
|
82
|
+
/**
|
|
83
|
+
* Resource types that can be affected by actions
|
|
84
|
+
*/
|
|
85
|
+
export var ResourceType;
|
|
86
|
+
(function (ResourceType) {
|
|
87
|
+
ResourceType["Server"] = "server";
|
|
88
|
+
ResourceType["Volume"] = "volume";
|
|
89
|
+
ResourceType["Network"] = "network";
|
|
90
|
+
ResourceType["FloatingIp"] = "floating_ip";
|
|
91
|
+
ResourceType["LoadBalancer"] = "load_balancer";
|
|
92
|
+
ResourceType["Certificate"] = "certificate";
|
|
93
|
+
ResourceType["Firewall"] = "firewall";
|
|
94
|
+
ResourceType["Image"] = "image";
|
|
95
|
+
})(ResourceType || (ResourceType = {}));
|
|
96
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/hetzner/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,YAAY,GACb,MAAM,kCAAkC,CAAC;AAE1C,4BAA4B;AAC5B,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AA+FzD,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAN,IAAY,aAuEX;AAvED,WAAY,aAAa;IACvB,iBAAiB;IACjB,+CAA8B,CAAA;IAC9B,+CAA8B,CAAA;IAC9B,6CAA4B,CAAA;IAC5B,2CAA0B,CAAA;IAC1B,+CAA8B,CAAA;IAC9B,6CAA4B,CAAA;IAC5B,mDAAkC,CAAA;IAClC,sCAAqB,CAAA;IACrB,wDAAuC,CAAA;IACvC,iDAAgC,CAAA;IAChC,+CAA8B,CAAA;IAC9B,iDAAgC,CAAA;IAChC,6CAA4B,CAAA;IAC5B,gDAA+B,CAAA;IAC/B,sDAAqC,CAAA;IACrC,0DAAyC,CAAA;IACzC,oDAAmC,CAAA;IACnC,+CAA8B,CAAA;IAC9B,iDAAgC,CAAA;IAChC,uDAAsC,CAAA;IAEtC,iBAAiB;IACjB,+CAA8B,CAAA;IAC9B,+CAA8B,CAAA;IAC9B,+CAA8B,CAAA;IAC9B,+CAA8B,CAAA;IAC9B,+CAA8B,CAAA;IAC9B,oEAAmD,CAAA;IAEnD,kBAAkB;IAClB,yCAAwB,CAAA;IACxB,+CAA8B,CAAA;IAC9B,uCAAsB,CAAA;IACtB,6CAA4B,CAAA;IAC5B,kDAAiC,CAAA;IACjC,sEAAqD,CAAA;IAErD,sBAAsB;IACtB,wDAAuC,CAAA;IACvC,4DAA2C,CAAA;IAC3C,sEAAqD,CAAA;IACrD,6EAA4D,CAAA;IAE5D,wBAAwB;IACxB,4DAA2C,CAAA;IAC3C,4DAA2C,CAAA;IAC3C,yCAAwB,CAAA;IACxB,+CAA8B,CAAA;IAC9B,2CAA0B,CAAA;IAC1B,iDAAgC,CAAA;IAChC,iDAAgC,CAAA;IAChC,gFAA+D,CAAA;IAC/D,oFAAmE,CAAA;IACnE,qDAAoC,CAAA;IACpC,2CAA0B,CAAA;IAC1B,iFAAgE,CAAA;IAEhE,sBAAsB;IACtB,uDAAsC,CAAA;IACtC,uDAAsC,CAAA;IAEtC,mBAAmB;IACnB,wDAAuC,CAAA;IACvC,iDAAgC,CAAA;IAChC,mDAAkC,CAAA;IAClC,wEAAuD,CAAA;IAEvD,gBAAgB;IAChB,kEAAiD,CAAA;AACnD,CAAC,EAvEW,aAAa,KAAb,aAAa,QAuExB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,YASX;AATD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,0CAA0B,CAAA;IAC1B,8CAA8B,CAAA;IAC9B,2CAA2B,CAAA;IAC3B,qCAAqB,CAAA;IACrB,+BAAe,CAAA;AACjB,CAAC,EATW,YAAY,KAAZ,YAAY,QASvB"}
|