We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
re_rank_mirrors bug
`re_rank_mirrors` from `archinstall/lib/mirrors.py` does not work. Since `SyncCommand` doesn't run command from shell, stdout redirection (`foo > bar`) doesn't work. 

Also, using source file as destination file does not seem to work. File becomes empty.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `archinstall/lib/mirrors.py`
Content:
```
1 import urllib.error
2 import urllib.request
3 from typing import Union
4 
5 from .general import *
6 from .output import log
7 
8 def sort_mirrorlist(raw_data :bytes, sort_order=["https", "http"]) -> bytes:
9 	"""
10 	This function can sort /etc/pacman.d/mirrorlist according to the
11 	mirror's URL prefix. By default places HTTPS before HTTP but it also
12 	preserves the country/rank-order.
13 
14 	This assumes /etc/pacman.d/mirrorlist looks like the following:
15 
16 	## Comment
17 	Server = url
18 
19 	or
20 
21 	## Comment
22 	#Server = url
23 
24 	But the Comments need to start with double-hashmarks to be distringuished
25 	from server url definitions (commented or uncommented).
26 	"""
27 	comments_and_whitespaces = b""
28 
29 	categories = {key: [] for key in sort_order+["Unknown"]}
30 	for line in raw_data.split(b"\n"):
31 		if line[0:2] in (b'##', b''):
32 			comments_and_whitespaces += line + b'\n'
33 		elif line[:6].lower() == b'server' or line[:7].lower() == b'#server':
34 			opening, url = line.split(b'=', 1)
35 			opening, url = opening.strip(), url.strip()
36 			if (category := url.split(b'://',1)[0].decode('UTF-8')) in categories:
37 				categories[category].append(comments_and_whitespaces)
38 				categories[category].append(opening+b' = '+url+b'\n')
39 			else:
40 				categories["Unknown"].append(comments_and_whitespaces)
41 				categories["Unknown"].append(opening+b' = '+url+b'\n')
42 
43 			comments_and_whitespaces = b""
44 
45 
46 	new_raw_data = b''
47 	for category in sort_order+["Unknown"]:
48 		for line in categories[category]:
49 			new_raw_data += line
50 
51 	return new_raw_data
52 
53 
54 def filter_mirrors_by_region(regions, destination='/etc/pacman.d/mirrorlist', sort_order=["https", "http"], *args, **kwargs) -> Union[bool, bytes]:
55 	"""
56 	This function will change the active mirrors on the live medium by
57 	filtering which regions are active based on `regions`.
58 
59 	:param regions: A series of country codes separated by `,`. For instance `SE,US` for sweden and United States.
60 	:type regions: str
61 	"""
62 	region_list = [f'country={region}' for region in regions.split(',')]
63 	response = urllib.request.urlopen(urllib.request.Request(f"https://archlinux.org/mirrorlist/?{'&'.join(region_list)}&protocol=https&protocol=http&ip_version=4&ip_version=6&use_mirror_status=on'", headers={'User-Agent': 'ArchInstall'}))
64 	new_list = response.read().replace(b"#Server", b"Server")
65 
66 	if sort_order:
67 		new_list = sort_mirrorlist(new_list, sort_order=sort_order)
68 
69 	if destination:
70 		with open(destination, "wb") as mirrorlist:
71 			mirrorlist.write(new_list)
72 
73 		return True
74 	else:
75 		return new_list.decode('UTF-8')
76 
77 
78 def add_custom_mirrors(mirrors: list, *args, **kwargs):
79 	"""
80 	This will append custom mirror definitions in pacman.conf
81 
82 	:param mirrors: A list of mirror data according to: `{'url': 'http://url.com', 'signcheck': 'Optional', 'signoptions': 'TrustAll', 'name': 'testmirror'}`
83 	:type mirrors: dict
84 	"""
85 	with open('/etc/pacman.conf', 'a') as pacman:
86 		for mirror in mirrors:
87 			pacman.write(f"[{mirror['name']}]\n")
88 			pacman.write(f"SigLevel = {mirror['signcheck']} {mirror['signoptions']}\n")
89 			pacman.write(f"Server = {mirror['url']}\n")
90 
91 	return True
92 
93 
94 def insert_mirrors(mirrors, *args, **kwargs):
95 	"""
96 	This function will insert a given mirror-list at the top of `/etc/pacman.d/mirrorlist`.
97 	It will not flush any other mirrors, just insert new ones.
98 
99 	:param mirrors: A dictionary of `{'url' : 'country', 'url2' : 'country'}`
100 	:type mirrors: dict
101 	"""
102 	original_mirrorlist = ''
103 	with open('/etc/pacman.d/mirrorlist', 'r') as original:
104 		original_mirrorlist = original.read()
105 
106 	with open('/etc/pacman.d/mirrorlist', 'w') as new_mirrorlist:
107 		for mirror, country in mirrors.items():
108 			new_mirrorlist.write(f'## {country}\n')
109 			new_mirrorlist.write(f'Server = {mirror}\n')
110 		new_mirrorlist.write('\n')
111 		new_mirrorlist.write(original_mirrorlist)
112 
113 	return True
114 
115 
116 def use_mirrors(regions: dict, destination='/etc/pacman.d/mirrorlist'):
117 	log(f'A new package mirror-list has been created: {destination}', level=logging.INFO)
118 	for region, mirrors in regions.items():
119 		with open(destination, 'w') as mirrorlist:
120 			for mirror in mirrors:
121 				mirrorlist.write(f'## {region}\n')
122 				mirrorlist.write(f'Server = {mirror}\n')
123 	return True
124 
125 
126 def re_rank_mirrors(top=10, *positionals, **kwargs):
127 	if SysCommand(f'/usr/bin/rankmirrors -n {top} /etc/pacman.d/mirrorlist > /etc/pacman.d/mirrorlist').exit_code == 0:
128 		return True
129 	return False
130 
131 
132 def list_mirrors(sort_order=["https", "http"]):
133 	url = "https://archlinux.org/mirrorlist/?protocol=https&protocol=http&ip_version=4&ip_version=6&use_mirror_status=on"
134 	regions = {}
135 
136 	try:
137 		response = urllib.request.urlopen(url)
138 	except urllib.error.URLError as err:
139 		log(f'Could not fetch an active mirror-list: {err}', level=logging.WARNING, fg="yellow")
140 		return regions
141 
142 	mirrorlist = response.read()
143 	if sort_order:
144 		mirrorlist = sort_mirrorlist(mirrorlist, sort_order=sort_order)
145 
146 	region = 'Unknown region'
147 	for line in mirrorlist.split(b'\n'):
148 		if len(line.strip()) == 0:
149 			continue
150 
151 		line = line.decode('UTF-8').strip('\n').strip('\r')
152 		if line[:3] == '## ':
153 			region = line[3:]
154 		elif line[:10] == '#Server = ':
155 			regions.setdefault(region, {})
156 
157 			url = line.lstrip('#Server = ')
158 			regions[region][url] = True
159 
160 	return regions
161
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/archinstall/lib/mirrors.py b/archinstall/lib/mirrors.py
--- a/archinstall/lib/mirrors.py
+++ b/archinstall/lib/mirrors.py
@@ -123,10 +123,17 @@
 	return True
 
 
-def re_rank_mirrors(top=10, *positionals, **kwargs):
-	if SysCommand(f'/usr/bin/rankmirrors -n {top} /etc/pacman.d/mirrorlist > /etc/pacman.d/mirrorlist').exit_code == 0:
-		return True
-	return False
+def re_rank_mirrors(
+	top: int = 10,
+	src: str = '/etc/pacman.d/mirrorlist',
+	dst: str = '/etc/pacman.d/mirrorlist',
+) -> bool:
+	cmd = SysCommand(f"/usr/bin/rankmirrors -n {top} {src}")
+	if cmd.exit_code != 0:
+		return False
+	with open(dst, 'w') as f:
+		f.write(str(cmd))
+	return True
 
 
 def list_mirrors(sort_order=["https", "http"]):

{"golden_diff": "diff --git a/archinstall/lib/mirrors.py b/archinstall/lib/mirrors.py\n--- a/archinstall/lib/mirrors.py\n+++ b/archinstall/lib/mirrors.py\n@@ -123,10 +123,17 @@\n \treturn True\n \n \n-def re_rank_mirrors(top=10, *positionals, **kwargs):\n-\tif SysCommand(f'/usr/bin/rankmirrors -n {top} /etc/pacman.d/mirrorlist > /etc/pacman.d/mirrorlist').exit_code == 0:\n-\t\treturn True\n-\treturn False\n+def re_rank_mirrors(\n+\ttop: int = 10,\n+\tsrc: str = '/etc/pacman.d/mirrorlist',\n+\tdst: str = '/etc/pacman.d/mirrorlist',\n+) -> bool:\n+\tcmd = SysCommand(f\"/usr/bin/rankmirrors -n {top} {src}\")\n+\tif cmd.exit_code != 0:\n+\t\treturn False\n+\twith open(dst, 'w') as f:\n+\t\tf.write(str(cmd))\n+\treturn True\n \n \n def list_mirrors(sort_order=[\"https\", \"http\"]):\n", "issue": "re_rank_mirrors bug\n`re_rank_mirrors` from `archinstall/lib/mirrors.py` does not work. Since `SyncCommand` doesn't run command from shell, stdout redirection (`foo > bar`) doesn't work. \r\n\r\nAlso, using source file as destination file does not seem to work. File becomes empty.\n", "before_files": [{"content": "import urllib.error\nimport urllib.request\nfrom typing import Union\n\nfrom .general import *\nfrom .output import log\n\ndef sort_mirrorlist(raw_data :bytes, sort_order=[\"https\", \"http\"]) -> bytes:\n\t\"\"\"\n\tThis function can sort /etc/pacman.d/mirrorlist according to the\n\tmirror's URL prefix. By default places HTTPS before HTTP but it also\n\tpreserves the country/rank-order.\n\n\tThis assumes /etc/pacman.d/mirrorlist looks like the following:\n\n\t## Comment\n\tServer = url\n\n\tor\n\n\t## Comment\n\t#Server = url\n\n\tBut the Comments need to start with double-hashmarks to be distringuished\n\tfrom server url definitions (commented or uncommented).\n\t\"\"\"\n\tcomments_and_whitespaces = b\"\"\n\n\tcategories = {key: [] for key in sort_order+[\"Unknown\"]}\n\tfor line in raw_data.split(b\"\\n\"):\n\t\tif line[0:2] in (b'##', b''):\n\t\t\tcomments_and_whitespaces += line + b'\\n'\n\t\telif line[:6].lower() == b'server' or line[:7].lower() == b'#server':\n\t\t\topening, url = line.split(b'=', 1)\n\t\t\topening, url = opening.strip(), url.strip()\n\t\t\tif (category := url.split(b'://',1)[0].decode('UTF-8')) in categories:\n\t\t\t\tcategories[category].append(comments_and_whitespaces)\n\t\t\t\tcategories[category].append(opening+b' = '+url+b'\\n')\n\t\t\telse:\n\t\t\t\tcategories[\"Unknown\"].append(comments_and_whitespaces)\n\t\t\t\tcategories[\"Unknown\"].append(opening+b' = '+url+b'\\n')\n\n\t\t\tcomments_and_whitespaces = b\"\"\n\n\n\tnew_raw_data = b''\n\tfor category in sort_order+[\"Unknown\"]:\n\t\tfor line in categories[category]:\n\t\t\tnew_raw_data += line\n\n\treturn new_raw_data\n\n\ndef filter_mirrors_by_region(regions, destination='/etc/pacman.d/mirrorlist', sort_order=[\"https\", \"http\"], *args, **kwargs) -> Union[bool, bytes]:\n\t\"\"\"\n\tThis function will change the active mirrors on the live medium by\n\tfiltering which regions are active based on `regions`.\n\n\t:param regions: A series of country codes separated by `,`. For instance `SE,US` for sweden and United States.\n\t:type regions: str\n\t\"\"\"\n\tregion_list = [f'country={region}' for region in regions.split(',')]\n\tresponse = urllib.request.urlopen(urllib.request.Request(f\"https://archlinux.org/mirrorlist/?{'&'.join(region_list)}&protocol=https&protocol=http&ip_version=4&ip_version=6&use_mirror_status=on'\", headers={'User-Agent': 'ArchInstall'}))\n\tnew_list = response.read().replace(b\"#Server\", b\"Server\")\n\n\tif sort_order:\n\t\tnew_list = sort_mirrorlist(new_list, sort_order=sort_order)\n\n\tif destination:\n\t\twith open(destination, \"wb\") as mirrorlist:\n\t\t\tmirrorlist.write(new_list)\n\n\t\treturn True\n\telse:\n\t\treturn new_list.decode('UTF-8')\n\n\ndef add_custom_mirrors(mirrors: list, *args, **kwargs):\n\t\"\"\"\n\tThis will append custom mirror definitions in pacman.conf\n\n\t:param mirrors: A list of mirror data according to: `{'url': 'http://url.com', 'signcheck': 'Optional', 'signoptions': 'TrustAll', 'name': 'testmirror'}`\n\t:type mirrors: dict\n\t\"\"\"\n\twith open('/etc/pacman.conf', 'a') as pacman:\n\t\tfor mirror in mirrors:\n\t\t\tpacman.write(f\"[{mirror['name']}]\\n\")\n\t\t\tpacman.write(f\"SigLevel = {mirror['signcheck']} {mirror['signoptions']}\\n\")\n\t\t\tpacman.write(f\"Server = {mirror['url']}\\n\")\n\n\treturn True\n\n\ndef insert_mirrors(mirrors, *args, **kwargs):\n\t\"\"\"\n\tThis function will insert a given mirror-list at the top of `/etc/pacman.d/mirrorlist`.\n\tIt will not flush any other mirrors, just insert new ones.\n\n\t:param mirrors: A dictionary of `{'url' : 'country', 'url2' : 'country'}`\n\t:type mirrors: dict\n\t\"\"\"\n\toriginal_mirrorlist = ''\n\twith open('/etc/pacman.d/mirrorlist', 'r') as original:\n\t\toriginal_mirrorlist = original.read()\n\n\twith open('/etc/pacman.d/mirrorlist', 'w') as new_mirrorlist:\n\t\tfor mirror, country in mirrors.items():\n\t\t\tnew_mirrorlist.write(f'## {country}\\n')\n\t\t\tnew_mirrorlist.write(f'Server = {mirror}\\n')\n\t\tnew_mirrorlist.write('\\n')\n\t\tnew_mirrorlist.write(original_mirrorlist)\n\n\treturn True\n\n\ndef use_mirrors(regions: dict, destination='/etc/pacman.d/mirrorlist'):\n\tlog(f'A new package mirror-list has been created: {destination}', level=logging.INFO)\n\tfor region, mirrors in regions.items():\n\t\twith open(destination, 'w') as mirrorlist:\n\t\t\tfor mirror in mirrors:\n\t\t\t\tmirrorlist.write(f'## {region}\\n')\n\t\t\t\tmirrorlist.write(f'Server = {mirror}\\n')\n\treturn True\n\n\ndef re_rank_mirrors(top=10, *positionals, **kwargs):\n\tif SysCommand(f'/usr/bin/rankmirrors -n {top} /etc/pacman.d/mirrorlist > /etc/pacman.d/mirrorlist').exit_code == 0:\n\t\treturn True\n\treturn False\n\n\ndef list_mirrors(sort_order=[\"https\", \"http\"]):\n\turl = \"https://archlinux.org/mirrorlist/?protocol=https&protocol=http&ip_version=4&ip_version=6&use_mirror_status=on\"\n\tregions = {}\n\n\ttry:\n\t\tresponse = urllib.request.urlopen(url)\n\texcept urllib.error.URLError as err:\n\t\tlog(f'Could not fetch an active mirror-list: {err}', level=logging.WARNING, fg=\"yellow\")\n\t\treturn regions\n\n\tmirrorlist = response.read()\n\tif sort_order:\n\t\tmirrorlist = sort_mirrorlist(mirrorlist, sort_order=sort_order)\n\n\tregion = 'Unknown region'\n\tfor line in mirrorlist.split(b'\\n'):\n\t\tif len(line.strip()) == 0:\n\t\t\tcontinue\n\n\t\tline = line.decode('UTF-8').strip('\\n').strip('\\r')\n\t\tif line[:3] == '## ':\n\t\t\tregion = line[3:]\n\t\telif line[:10] == '#Server = ':\n\t\t\tregions.setdefault(region, {})\n\n\t\t\turl = line.lstrip('#Server = ')\n\t\t\tregions[region][url] = True\n\n\treturn regions\n", "path": "archinstall/lib/mirrors.py"}], "after_files": [{"content": "import urllib.error\nimport urllib.request\nfrom typing import Union\n\nfrom .general import *\nfrom .output import log\n\ndef sort_mirrorlist(raw_data :bytes, sort_order=[\"https\", \"http\"]) -> bytes:\n\t\"\"\"\n\tThis function can sort /etc/pacman.d/mirrorlist according to the\n\tmirror's URL prefix. By default places HTTPS before HTTP but it also\n\tpreserves the country/rank-order.\n\n\tThis assumes /etc/pacman.d/mirrorlist looks like the following:\n\n\t## Comment\n\tServer = url\n\n\tor\n\n\t## Comment\n\t#Server = url\n\n\tBut the Comments need to start with double-hashmarks to be distringuished\n\tfrom server url definitions (commented or uncommented).\n\t\"\"\"\n\tcomments_and_whitespaces = b\"\"\n\n\tcategories = {key: [] for key in sort_order+[\"Unknown\"]}\n\tfor line in raw_data.split(b\"\\n\"):\n\t\tif line[0:2] in (b'##', b''):\n\t\t\tcomments_and_whitespaces += line + b'\\n'\n\t\telif line[:6].lower() == b'server' or line[:7].lower() == b'#server':\n\t\t\topening, url = line.split(b'=', 1)\n\t\t\topening, url = opening.strip(), url.strip()\n\t\t\tif (category := url.split(b'://',1)[0].decode('UTF-8')) in categories:\n\t\t\t\tcategories[category].append(comments_and_whitespaces)\n\t\t\t\tcategories[category].append(opening+b' = '+url+b'\\n')\n\t\t\telse:\n\t\t\t\tcategories[\"Unknown\"].append(comments_and_whitespaces)\n\t\t\t\tcategories[\"Unknown\"].append(opening+b' = '+url+b'\\n')\n\n\t\t\tcomments_and_whitespaces = b\"\"\n\n\n\tnew_raw_data = b''\n\tfor category in sort_order+[\"Unknown\"]:\n\t\tfor line in categories[category]:\n\t\t\tnew_raw_data += line\n\n\treturn new_raw_data\n\n\ndef filter_mirrors_by_region(regions, destination='/etc/pacman.d/mirrorlist', sort_order=[\"https\", \"http\"], *args, **kwargs) -> Union[bool, bytes]:\n\t\"\"\"\n\tThis function will change the active mirrors on the live medium by\n\tfiltering which regions are active based on `regions`.\n\n\t:param regions: A series of country codes separated by `,`. For instance `SE,US` for sweden and United States.\n\t:type regions: str\n\t\"\"\"\n\tregion_list = [f'country={region}' for region in regions.split(',')]\n\tresponse = urllib.request.urlopen(urllib.request.Request(f\"https://archlinux.org/mirrorlist/?{'&'.join(region_list)}&protocol=https&protocol=http&ip_version=4&ip_version=6&use_mirror_status=on'\", headers={'User-Agent': 'ArchInstall'}))\n\tnew_list = response.read().replace(b\"#Server\", b\"Server\")\n\n\tif sort_order:\n\t\tnew_list = sort_mirrorlist(new_list, sort_order=sort_order)\n\n\tif destination:\n\t\twith open(destination, \"wb\") as mirrorlist:\n\t\t\tmirrorlist.write(new_list)\n\n\t\treturn True\n\telse:\n\t\treturn new_list.decode('UTF-8')\n\n\ndef add_custom_mirrors(mirrors: list, *args, **kwargs):\n\t\"\"\"\n\tThis will append custom mirror definitions in pacman.conf\n\n\t:param mirrors: A list of mirror data according to: `{'url': 'http://url.com', 'signcheck': 'Optional', 'signoptions': 'TrustAll', 'name': 'testmirror'}`\n\t:type mirrors: dict\n\t\"\"\"\n\twith open('/etc/pacman.conf', 'a') as pacman:\n\t\tfor mirror in mirrors:\n\t\t\tpacman.write(f\"[{mirror['name']}]\\n\")\n\t\t\tpacman.write(f\"SigLevel = {mirror['signcheck']} {mirror['signoptions']}\\n\")\n\t\t\tpacman.write(f\"Server = {mirror['url']}\\n\")\n\n\treturn True\n\n\ndef insert_mirrors(mirrors, *args, **kwargs):\n\t\"\"\"\n\tThis function will insert a given mirror-list at the top of `/etc/pacman.d/mirrorlist`.\n\tIt will not flush any other mirrors, just insert new ones.\n\n\t:param mirrors: A dictionary of `{'url' : 'country', 'url2' : 'country'}`\n\t:type mirrors: dict\n\t\"\"\"\n\toriginal_mirrorlist = ''\n\twith open('/etc/pacman.d/mirrorlist', 'r') as original:\n\t\toriginal_mirrorlist = original.read()\n\n\twith open('/etc/pacman.d/mirrorlist', 'w') as new_mirrorlist:\n\t\tfor mirror, country in mirrors.items():\n\t\t\tnew_mirrorlist.write(f'## {country}\\n')\n\t\t\tnew_mirrorlist.write(f'Server = {mirror}\\n')\n\t\tnew_mirrorlist.write('\\n')\n\t\tnew_mirrorlist.write(original_mirrorlist)\n\n\treturn True\n\n\ndef use_mirrors(regions: dict, destination='/etc/pacman.d/mirrorlist'):\n\tlog(f'A new package mirror-list has been created: {destination}', level=logging.INFO)\n\tfor region, mirrors in regions.items():\n\t\twith open(destination, 'w') as mirrorlist:\n\t\t\tfor mirror in mirrors:\n\t\t\t\tmirrorlist.write(f'## {region}\\n')\n\t\t\t\tmirrorlist.write(f'Server = {mirror}\\n')\n\treturn True\n\n\ndef re_rank_mirrors(\n\ttop: int = 10,\n\tsrc: str = '/etc/pacman.d/mirrorlist',\n\tdst: str = '/etc/pacman.d/mirrorlist',\n) -> bool:\n\tcmd = SysCommand(f\"/usr/bin/rankmirrors -n {top} {src}\")\n\tif cmd.exit_code != 0:\n\t\treturn False\n\twith open(dst, 'w') as f:\n\t\tf.write(str(cmd))\n\treturn True\n\n\ndef list_mirrors(sort_order=[\"https\", \"http\"]):\n\turl = \"https://archlinux.org/mirrorlist/?protocol=https&protocol=http&ip_version=4&ip_version=6&use_mirror_status=on\"\n\tregions = {}\n\n\ttry:\n\t\tresponse = urllib.request.urlopen(url)\n\texcept urllib.error.URLError as err:\n\t\tlog(f'Could not fetch an active mirror-list: {err}', level=logging.WARNING, fg=\"yellow\")\n\t\treturn regions\n\n\tmirrorlist = response.read()\n\tif sort_order:\n\t\tmirrorlist = sort_mirrorlist(mirrorlist, sort_order=sort_order)\n\n\tregion = 'Unknown region'\n\tfor line in mirrorlist.split(b'\\n'):\n\t\tif len(line.strip()) == 0:\n\t\t\tcontinue\n\n\t\tline = line.decode('UTF-8').strip('\\n').strip('\\r')\n\t\tif line[:3] == '## ':\n\t\t\tregion = line[3:]\n\t\telif line[:10] == '#Server = ':\n\t\t\tregions.setdefault(region, {})\n\n\t\t\turl = line.lstrip('#Server = ')\n\t\t\tregions[region][url] = True\n\n\treturn regions\n", "path": "archinstall/lib/mirrors.py"}]}