NikGapps 3.29__py3-none-any.whl → 3.31__py3-none-any.whl

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.
Files changed (51) hide show
  1. NikGapps/build/Build.py +8 -8
  2. NikGapps/build/NikGappsManager.py +2 -2
  3. NikGapps/build/Release.py +6 -6
  4. NikGapps/build_config.py +11 -11
  5. NikGapps/cache.py +12 -12
  6. NikGapps/config/NikGappsConfig.py +15 -15
  7. NikGapps/copy_repos.py +2 -2
  8. NikGapps/helper/Assets.py +8 -8
  9. NikGapps/helper/Package.py +2 -6
  10. NikGapps/helper/compression/CompOps.py +6 -6
  11. NikGapps/helper/compression/Export.py +10 -10
  12. NikGapps/helper/git/TestGit.py +1 -1
  13. NikGapps/helper/overlay/ApkMetaInfo.py +1 -1
  14. NikGapps/helper/overlay/Manifest.py +1 -1
  15. NikGapps/helper/overlay/Overlay.py +1 -1
  16. NikGapps/helper/upload/CmdUpload.py +7 -7
  17. NikGapps/helper/upload/GoFileUpload.py +7 -7
  18. NikGapps/main.py +9 -9
  19. NikGapps/overlay_control.py +11 -10
  20. NikGapps/test.py +1 -20
  21. {NikGapps-3.29.dist-info → NikGapps-3.31.dist-info}/METADATA +4 -3
  22. NikGapps-3.31.dist-info/RECORD +65 -0
  23. NikGapps/build/NikGappsPackages.py +0 -916
  24. NikGapps/helper/B64.py +0 -34
  25. NikGapps/helper/C.py +0 -16
  26. NikGapps/helper/Cmd.py +0 -296
  27. NikGapps/helper/FileOp.py +0 -235
  28. NikGapps/helper/Json.py +0 -34
  29. NikGapps/helper/P.py +0 -23
  30. NikGapps/helper/Statics.py +0 -166
  31. NikGapps/helper/SystemStat.py +0 -103
  32. NikGapps/helper/T.py +0 -82
  33. NikGapps/helper/XmlOp.py +0 -40
  34. NikGapps/helper/compression/Modes.py +0 -4
  35. NikGapps/helper/compression/Tar.py +0 -25
  36. NikGapps/helper/compression/Zip.py +0 -97
  37. NikGapps/helper/compression/Zsh.py +0 -17
  38. NikGapps/helper/git/Git.py +0 -228
  39. NikGapps/helper/git/GitOperations.py +0 -118
  40. NikGapps/helper/git/GitStatics.py +0 -14
  41. NikGapps/helper/git/GithubManager.py +0 -21
  42. NikGapps/helper/git/GitlabManager.py +0 -265
  43. NikGapps/helper/upload/Upload.py +0 -125
  44. NikGapps/helper/web/Requests.py +0 -139
  45. NikGapps/helper/web/TelegramApi.py +0 -126
  46. NikGapps/helper/web/__init__.py +0 -0
  47. NikGapps-3.29.dist-info/RECORD +0 -89
  48. {NikGapps-3.29.dist-info → NikGapps-3.31.dist-info}/LICENSE +0 -0
  49. {NikGapps-3.29.dist-info → NikGapps-3.31.dist-info}/WHEEL +0 -0
  50. {NikGapps-3.29.dist-info → NikGapps-3.31.dist-info}/entry_points.txt +0 -0
  51. {NikGapps-3.29.dist-info → NikGapps-3.31.dist-info}/top_level.txt +0 -0
@@ -1,125 +0,0 @@
1
- import os
2
- import platform
3
- from pathlib import Path
4
- import pysftp
5
- from NikGapps.helper.FileOp import FileOp
6
- from NikGapps.helper.P import P
7
- from NikGapps.helper.Statics import Statics
8
- from NikGapps.helper.T import T
9
- from NikGapps.helper.web.TelegramApi import TelegramApi
10
-
11
-
12
- class Upload:
13
- def __init__(self, android_version, release_type, upload_files, password=None):
14
- self.android_version = android_version
15
- self.android_version_code = Statics.get_android_code(android_version)
16
- self.upload_files = upload_files
17
- self.host = "frs.sourceforge.net"
18
- self.username = "nikhilmenghani"
19
- self.password = os.environ.get('SF_PWD') if password is None else password
20
- self.release_dir = Statics.get_sourceforge_release_directory(release_type)
21
- self.release_date = T.get_london_date_time("%d-%b-%Y")
22
- self.cmd_method = False # can be removed later
23
- self.upload_obj = None # can be removed later
24
- if self.password is None or self.password.__eq__(""):
25
- self.password = ""
26
- self.sftp = None
27
- return
28
- try:
29
- self.sftp = pysftp.Connection(host=self.host, username=self.username, password=self.password)
30
- except Exception as e:
31
- P.red("Exception while connecting to SFTP: " + str(e))
32
- self.sftp = None
33
-
34
- def set_release_dir(self, release_dir):
35
- self.release_dir = release_dir
36
-
37
- def get_cd(self, file_type):
38
- folder_name = f"{self.release_dir}/Test/{self.release_date}"
39
- match file_type:
40
- case "gapps" | "config":
41
- folder_name = f"{self.release_dir}/Android-{self.android_version}/{self.release_date}"
42
- case "addons":
43
- folder_name = f"{self.release_dir}/Android-{self.android_version}/{self.release_date}/Addons"
44
- case "debloater":
45
- tools_dir = Statics.get_sourceforge_release_directory("NikGappsTools/Debloater")
46
- folder_name = f"{tools_dir}/{self.release_date}"
47
- case "removeotascripts":
48
- tools_dir = Statics.get_sourceforge_release_directory("NikGappsTools/RemoveOtaScripts")
49
- folder_name = f"{tools_dir}/{self.release_date}"
50
- case "nikgappsconfig":
51
- folder_name = f"{self.release_dir}/Android-{self.android_version}"
52
- case _:
53
- print(file_type)
54
- print("Upload Dir: " + folder_name)
55
- return folder_name
56
-
57
- def upload(self, file_name, telegram: TelegramApi = None, remote_directory=None):
58
- if self.sftp is not None:
59
- system_name = platform.system()
60
- execution_status = False
61
- download_link = None
62
- file_size_kb = round(FileOp.get_file_size(file_name, "KB"), 2)
63
- file_size_mb = round(FileOp.get_file_size(file_name), 2)
64
- if telegram is not None:
65
- telegram.message(f"- The zip {file_size_mb} MB is uploading...")
66
- if self.sftp is not None and system_name != "Windows" and self.upload_files:
67
- t = T()
68
- file_type = "gapps"
69
- if os.path.basename(file_name).__contains__("-Addon-"):
70
- file_type = "addons"
71
- elif os.path.basename(file_name).__contains__("Debloater"):
72
- file_type = "debloater"
73
- elif os.path.basename(file_name).lower().__contains__("removeotascripts"):
74
- file_type = "removeotascripts"
75
-
76
- if remote_directory is None:
77
- remote_directory = self.get_cd(file_type)
78
-
79
- remote_filename = Path(file_name).name
80
- try:
81
- self.sftp.chdir(remote_directory)
82
- except IOError:
83
- P.magenta(f"The remote directory: {remote_directory} doesn't exist, creating..")
84
- try:
85
- self.sftp.makedirs(remote_directory)
86
- self.sftp.chdir(remote_directory)
87
- except Exception as e:
88
- P.red("Exception while creating directory: " + str(e))
89
- self.close_connection()
90
- self.sftp = pysftp.Connection(host=self.host, username=self.username, password=self.password)
91
- return execution_status
92
- putinfo = self.sftp.put(file_name, remote_filename)
93
- print(putinfo)
94
- P.green(f'File uploaded successfully to {remote_directory}/{remote_filename}')
95
- download_link = Statics.get_download_link(file_name, remote_directory)
96
- P.magenta("Download Link: " + download_link)
97
- print("uploading file finished...")
98
- execution_status = True
99
- time_taken = t.taken(f"Total time taken to upload file with size {file_size_mb} MB ("
100
- f"{file_size_kb} Kb)")
101
- if execution_status:
102
- if telegram is not None:
103
- telegram.message(
104
- f"- The zip {file_size_mb} MB uploaded in {T.format_time(round(time_taken))}\n",
105
- replace_last_message=True)
106
- if download_link is not None:
107
- telegram.message(f"*Note:* Download link should start working in 10 minutes",
108
- escape_text=False,
109
- ur_link={f"Download": f"{download_link}"})
110
- else:
111
- P.red("System incompatible or upload disabled or connection failed!")
112
- P.red("system_name: " + system_name)
113
- P.red("self.sftp: " + str(self.sftp))
114
- P.red("self.upload_files: " + str(self.upload_files))
115
- return execution_status, download_link, file_size_mb
116
- else:
117
- P.red("Connection failed!")
118
- return False, None, None
119
-
120
- def close_connection(self):
121
- if self.cmd_method:
122
- self.upload_obj.close_connection()
123
- elif self.sftp is not None:
124
- self.sftp.close()
125
- print("Connection closed")
@@ -1,139 +0,0 @@
1
- import json
2
- import time
3
-
4
- import requests
5
- from NikGapps.helper.Statics import Statics
6
-
7
-
8
- class Requests:
9
-
10
- @staticmethod
11
- def get(url, headers=None, params=None):
12
- if params is None:
13
- params = {"": ""}
14
- if headers is None:
15
- headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0'}
16
- result = requests.get(url, data=json.dumps(params), headers=headers)
17
- if result.status_code == 429:
18
- return Requests.handle_429_response(url, params, headers, result)
19
- return result
20
-
21
- @staticmethod
22
- def put(url, headers=None, params=None):
23
- if params is None:
24
- params = {"": ""}
25
- if headers is None:
26
- headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0'}
27
- result = requests.put(url, data=json.dumps(params), headers=headers)
28
- if result.status_code == 429:
29
- return Requests.handle_429_response(url, params, headers, result)
30
- return result
31
-
32
- @staticmethod
33
- def patch(url, headers=None, params=None):
34
- if params is None:
35
- params = {"": ""}
36
- if headers is None:
37
- headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0'}
38
- result = requests.patch(url, data=json.dumps(params), headers=headers)
39
- if result.status_code == 429:
40
- return Requests.handle_429_response(url, params, headers, result)
41
- return result
42
-
43
- @staticmethod
44
- def post(url, headers=None, params=None):
45
- if params is None:
46
- params = {"": ""}
47
- if headers is None:
48
- headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0'}
49
- result = requests.post(url, data=json.dumps(params), headers=headers)
50
- if result.status_code == 429:
51
- return Requests.handle_429_response(url, params, headers, result)
52
- return result
53
-
54
- @staticmethod
55
- def get_text(url):
56
- return requests.get(url).text
57
-
58
- @staticmethod
59
- def get_release_date(android_version, release_type):
60
- decoded_hand = Requests.get(Statics.release_tracker_url)
61
- if decoded_hand.status_code == 200:
62
- data = decoded_hand.json()
63
- if android_version in data[release_type]:
64
- return data[release_type][android_version]
65
- else:
66
- print(f"{decoded_hand.status_code} while getting release date")
67
- return Statics.time
68
-
69
- @staticmethod
70
- def get_folder_access(folder_name=None):
71
- decoded_hand = Requests.get(Statics.folder_access_url)
72
- if decoded_hand.status_code == 200:
73
- data = decoded_hand.json()
74
- return data if folder_name is None else (data[folder_name] if folder_name in data else None)
75
- else:
76
- print(f"{decoded_hand.status_code} while getting folder access")
77
- return None
78
-
79
- @staticmethod
80
- def get_admin_access():
81
- decoded_hand = Requests.get(Statics.admin_access_url)
82
- admin_list = []
83
- if decoded_hand.status_code == 200:
84
- for admin in decoded_hand.text.split("\n"):
85
- if admin != "":
86
- admin_list.append(admin)
87
- return admin_list
88
- else:
89
- print(f"{decoded_hand.status_code} while getting admin access")
90
- return ["nikhilmenghani", "nikgapps"]
91
-
92
- @staticmethod
93
- def get_package_details(android_version):
94
- package_details_url = f"https://raw.githubusercontent.com/nikgapps/tracker/main/{android_version}/GooglePackages.json"
95
- decoded_hand = Requests.get(package_details_url)
96
- package_details = {}
97
- if decoded_hand.status_code == 200:
98
- return decoded_hand.json()
99
- else:
100
- print(f"{decoded_hand.status_code} while getting package details")
101
- return package_details
102
-
103
- @staticmethod
104
- def get_appset_details(android_version):
105
- appset_details_url = f"https://raw.githubusercontent.com/nikgapps/tracker/main/{android_version}/AppSets.json"
106
- decoded_hand = Requests.get(appset_details_url)
107
- appset_details = {}
108
- if decoded_hand.status_code == 200:
109
- return decoded_hand.json()
110
- else:
111
- print(f"{decoded_hand.status_code} while getting appset details")
112
- return appset_details
113
-
114
- @staticmethod
115
- def handle_429_response(url, params, headers, result):
116
- if 'Retry-After' in result.headers:
117
- wait_time = float(result.headers['Retry-After'])
118
- print(f"Sleeping for {wait_time} seconds...")
119
- time.sleep(wait_time)
120
- return requests.get(url, data=json.dumps(params), headers=headers)
121
- else:
122
- for delay in [0, 1, 2, 4, 8, 16, 32, 64]:
123
- print(f"Rate limit exceeded. Waiting for {delay} seconds before retrying...")
124
- time.sleep(delay)
125
- result = requests.get(url, data=json.dumps(params), headers=headers)
126
- if result.status_code != 429:
127
- return result
128
- return result
129
-
130
- @staticmethod
131
- def get_data_in_json(url):
132
- url = f"{url}"
133
- decoded_hand = Requests.get(url)
134
- details = {}
135
- if decoded_hand.status_code == 200:
136
- return decoded_hand.json()
137
- else:
138
- print(f"{decoded_hand.status_code} while getting package details")
139
- return details
@@ -1,126 +0,0 @@
1
- import time
2
-
3
- import requests
4
- import yaml
5
-
6
- from .Requests import Requests
7
-
8
-
9
- class TelegramApi:
10
-
11
- def __init__(self, token, chat_id, message_thread_id=None):
12
- self.token = token
13
- self.base = "https://api.telegram.org"
14
- self.chat_id = chat_id
15
- self.message_thread_id = message_thread_id
16
- self.message_id = None
17
- self.msg = None
18
- self.last_msg = None
19
- self.urls = {}
20
- self.changelog = None
21
-
22
- def message(self, text, chat_id=None, replace_last_message=False, escape_text=True, parse_mode="markdown",
23
- ur_link=None, send_as_new_message=False):
24
- if self.token is None:
25
- return None
26
- if chat_id is None:
27
- chat_id = self.chat_id
28
- if text is None or str(text).__eq__(""):
29
- print("No text to send")
30
- return None
31
- if send_as_new_message:
32
- self.reset_message()
33
- if escape_text:
34
- for i in '_*[]~`>+=|{}':
35
- text = text.replace(i, "\\" + i)
36
- sending_text = text
37
- if self.message_id is not None:
38
- sending_text = self.msg.replace(self.last_msg, text) if replace_last_message else (self.msg + "\n" + text)
39
- data = {
40
- "chat_id": chat_id,
41
- "text": f"{sending_text}",
42
- "parse_mode": f"{parse_mode}",
43
- "disable_web_page_preview": True
44
- }
45
- if self.message_thread_id is not None:
46
- data["message_thread_id"] = self.message_thread_id
47
- url = f"{self.base}/bot{self.token}/sendMessage"
48
- if self.message_id is not None:
49
- data["message_id"] = self.message_id
50
- url = f"{self.base}/bot{self.token}/editMessageText"
51
- if ur_link is not None:
52
- ur_link: dict
53
- for key in ur_link:
54
- self.urls[key] = ur_link[key]
55
- if len(self.urls) > 0:
56
- row_list = []
57
- inline_list = []
58
- max_col = 1 if len(self.urls) > 1 else len(self.urls)
59
- for count, key in enumerate(self.urls):
60
- inline_list.append({"text": key, "url": self.urls[key]})
61
- if count == max_col:
62
- row_list.append(inline_list)
63
- inline_list = []
64
- if len(inline_list) > 0:
65
- row_list.append(inline_list)
66
- data["reply_markup"] = {
67
- "inline_keyboard": [
68
- row for row in row_list
69
- ]
70
- }
71
- r = requests.post(url, json=data)
72
- response = r.json()
73
- if r.status_code != 200:
74
- print(f"Error sending message: {response}")
75
- if r.status_code == 429:
76
- print(f"Sleeping for {response['parameters']['retry_after']} seconds")
77
- time.sleep(response['parameters']['retry_after'])
78
- else:
79
- return None
80
- if response["ok"]:
81
- self.last_msg = text
82
- self.msg = sending_text
83
- self.message_id = response["result"]["message_id"]
84
- return response
85
-
86
- def delete_message(self, message_id=None, chat_id=None):
87
- if self.token is None:
88
- return None
89
- if chat_id is None:
90
- chat_id = self.chat_id
91
- if message_id is None:
92
- message_id = self.message_id
93
- if message_id is None:
94
- return None
95
- url = f"{self.base}/bot{self.token}/deleteMessage" \
96
- f"?chat_id={chat_id}" \
97
- f"&message_id={str(message_id)}"
98
- r = Requests.get(url)
99
- response = r.json()
100
- return response
101
-
102
- def get_latest_changelog_message(self, changelog=None):
103
- if changelog is not None:
104
- self.changelog = changelog
105
- with open(self.changelog, 'r') as stream:
106
- try:
107
- msg = ""
108
- for date in yaml.safe_load(stream):
109
- msg += f"*New Release is up - {date['date']}*\n\n"
110
- msg += f"Changelog:\n"
111
- for item in date['changes']:
112
- msg += f"- {item['item']}\n"
113
- msg += f"\n"
114
- msg += f"*Note: *\n"
115
- msg += "- You can always take a backup and dirty flash the gapps, if you run into issues, you should try clean flashing the gapps.\n"
116
- msg += "if you have any problem feel free to reach us @NikGappsGroup\nHappy Flashing!"
117
- break
118
- return msg
119
- except yaml.YAMLError as exc:
120
- print(exc)
121
- return None
122
-
123
- def reset_message(self):
124
- self.message_id = None
125
- self.msg = None
126
- self.urls = {}
File without changes
@@ -1,89 +0,0 @@
1
- NikGapps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- NikGapps/build_config.py,sha256=5eZU8NAmcgIsQCi0zRYywK4eS-yKG-GL9ZbXMtyCEKs,3245
3
- NikGapps/cache.py,sha256=VBp5T4_DKGxdBtWrLfaBVXFTi4LeI24L-31CszLhVYs,4124
4
- NikGapps/config_upload.py,sha256=0HE7txm73XXxat_cR0JDXWtQUmg1IYK_SktwJS6N34s,652
5
- NikGapps/copy_repos.py,sha256=5YygTyuFW-DRnLPLGVcndQO6JqBW4JsN7O6cVWDQ4pE,1379
6
- NikGapps/main.py,sha256=o10A9vjGN-C6kFf0BynssIybpuC8bRPon_49DWBUPYg,2652
7
- NikGapps/overlay_control.py,sha256=0Yzkf2AIuIXpUsr-wqjB3rHkWICRRQVnBNRz8FnaSD0,3128
8
- NikGapps/test.py,sha256=eXEeyM5xOpSKyUjb7OTP8BL37bqTE0eTKwnD1zT33rY,687
9
- NikGapps/build/Build.py,sha256=WiEPKWs0tTYjece24IM8yVS3o-Mq0fD0fM1oyonoIwo,7643
10
- NikGapps/build/NikGappsManager.py,sha256=aemhC-KadZgEn-dm6fSHWpmtwtkDb8rzyJTXTVI9JxY,20010
11
- NikGapps/build/NikGappsOverlays.py,sha256=bbAIuIeE7HICdXRNeZJrvuW58_tUuDH9Du_1k6QPkxg,569
12
- NikGapps/build/NikGappsPackages.py,sha256=samBrWZxNWVi5U28vgvfRNENLSdbK37oYo1oe2EI-HA,56928
13
- NikGapps/build/PackageConstants.py,sha256=-vmkiAWXoD5Ba1lmqd71ueEkivY7ne0zXSU3dzCfYLc,15847
14
- NikGapps/build/Release.py,sha256=FChsFVmrFndEuvNk5nc288KCkFONUJ7SwsphgejVER4,4846
15
- NikGapps/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- NikGapps/config/NikGappsConfig.py,sha256=TSfwPWqxR4SE80lz-Jrn41yuTfSQcwi-jFh7iGmZFQQ,20411
17
- NikGapps/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- NikGapps/helper/AppSet.py,sha256=vEIwk7NX1LQt71UJ3naEdsekmB_Ea0v8j0CQJkrSTEU,352
19
- NikGapps/helper/Args.py,sha256=r1KIKs1x9DbIPwqBPmfIb3BBD5PvclvUDIv3D-fvy2A,4338
20
- NikGapps/helper/Assets.py,sha256=tZ1EThupy-5TKCBHO3L_MOV-HV0F1gYMnYUf_lSBxbA,2967
21
- NikGapps/helper/B64.py,sha256=WFtnOa1lNWvCQH_tjslRONZY8uAR6CwDm2-JZVn3vkM,939
22
- NikGapps/helper/C.py,sha256=MvRvtXLu-gjsJIXcMH73CSdbf_R-_LrmqS-ZKOtLrCU,354
23
- NikGapps/helper/Cmd.py,sha256=Fc4mywiDrJk9MI_Pw1Ow26gdpFL23D8EF2XbB1WmyBo,13540
24
- NikGapps/helper/Config.py,sha256=iCTMt5Zd3g3Rq0Y14u4i5e2-hCv9SKcSl4xMJ1KhYJE,2606
25
- NikGapps/helper/ConfigObj.py,sha256=ep9--o1SPgGXkElrjkf7hjF96KGSrmcQ9oGCpicN7D4,462
26
- NikGapps/helper/FileOp.py,sha256=vPgXFBUdzDCo36OyHLCn8Jt62Fhf29_OPPwvh6kv7Sc,7842
27
- NikGapps/helper/Json.py,sha256=pgkXXHMBGs0Pl6YjTXjDSqPdIXryWzl5c0YyR-2YPYQ,973
28
- NikGapps/helper/P.py,sha256=S3dTkLQcOhS1SEE9WZVIVQUAVtSIGhO8TDH72SxWLb8,516
29
- NikGapps/helper/Package.py,sha256=yYOm5kUf_a6HOo1UA78_qkm2b0pqn5RCPqLt4yR3B10,9236
30
- NikGapps/helper/Statics.py,sha256=f3dKMazDrooV53FBApK-fUEPZe9Ehqwn3c4qdUKkazA,6789
31
- NikGapps/helper/SystemStat.py,sha256=f5H5L8FOZVLe-7SKYdCtjnjVXsgaJ2Eo9c3akiYjJLM,4074
32
- NikGapps/helper/T.py,sha256=tp2VAVfy_lbIJKIbYsGFtDck65BUo8JiHqOokpkpaKE,2898
33
- NikGapps/helper/XmlOp.py,sha256=ZcaO6JSriNDiOvom6gs6XwucnFInjIXaigUiehgVpQY,1632
34
- NikGapps/helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
- NikGapps/helper/assets/addon.sh,sha256=qXwZ7GQVnOrkSNRcJTKycKRKkUa8kRA_iDwsKVDMHwY,9424
36
- NikGapps/helper/assets/appsets.json,sha256=uHnfwG8wc_T-LoX-ZLQlLGUvUvE940vxQYuhPjRVGV4,6987
37
- NikGapps/helper/assets/changelogs.yaml,sha256=J6TKXUre04OTOLdX3ks7AUkDUPz8wBcpQEweGGIX8HM,47787
38
- NikGapps/helper/assets/config_versions.json,sha256=T7fJFW5uYUbiZphw7VP89T4F1WKK6EzG7q_33M8zrJA,102
39
- NikGapps/helper/assets/customize.sh,sha256=bfYUgf1vd7GGUix4CPIhzn2eFN-DJh67IVIY6eMIrGo,10242
40
- NikGapps/helper/assets/debloater.config,sha256=7Wx-WH93JSJHTYJCT5-y8TtPFFIzQgMKJcKJaf583bU,878
41
- NikGapps/helper/assets/functions.sh,sha256=9jOHEM0cmkP0cMIj7KaNwXDOAG0WxOuIZganxu1YoFU,3859
42
- NikGapps/helper/assets/gofile.sh,sha256=nfJdg6Acup2CCU-aqSR_no8TwE_sl2Vj9uUsUKR1HUM,312
43
- NikGapps/helper/assets/header.sh,sha256=mAPz8aFdedVwkt35KoGQjv3vntH6trnfVbZwnDTA5Tc,481
44
- NikGapps/helper/assets/installer.sh,sha256=-0Y_CYWqf-db9GWQOvAlcOi-HCMSzXJKjfW1M5zS-o4,257
45
- NikGapps/helper/assets/magisk-update-binary.sh,sha256=gUrrCqs1Mc-K9PAftiyHWvpod3Z6wP7GgyA9rd60Ikk,2082
46
- NikGapps/helper/assets/module.prop,sha256=218gUx_RERtgAPXKID5dCgdGgYvxZuA11_MV4jG5YrQ,235
47
- NikGapps/helper/assets/mount.sh,sha256=G_rAktQyrUQJpQlCpihbCwWrDCJ71zNEZJ3ZCARA7MQ,6018
48
- NikGapps/helper/assets/mtg_mount.sh,sha256=M6oYs7aLmMRBJbIq8ANmHxGrTIf7Jxe0GLsPq3SdmJ0,2697
49
- NikGapps/helper/assets/nikgapps.config,sha256=807lgmt0MhX2hx18ZgM7idj5ZwCgyHkKJ4VtSKOD3ew,1575
50
- NikGapps/helper/assets/nikgapps_functions.sh,sha256=SXzJEPTwYdhqPqgSAUx9Fa4UNPWSbNHVuUI31TGFAh8,57645
51
- NikGapps/helper/assets/packages.json,sha256=e0lvJ9xd6VF1kLB5TkJ6SBl2eOcB_vCW3aXMo5FLYmA,17063
52
- NikGapps/helper/assets/uninstaller.sh,sha256=Lob89FNVfpHFkdzUJFDwVQwlnc7WB_U-U28Y4fZgycE,870
53
- NikGapps/helper/assets/unmount.sh,sha256=L8Lq7ZVfwazXaZp5Jkuce2pCGJCLZh57uj_BzFSDb-c,1107
54
- NikGapps/helper/compression/CompOps.py,sha256=ZcmtU957E0BOU1yKQKXvwHNK3Xtp6BIyXBjjvz0Rq6E,1768
55
- NikGapps/helper/compression/Export.py,sha256=9T9ul5euwLHXJEYfnniAydjBwGiUPrKWZbT-yVUxqWg,9237
56
- NikGapps/helper/compression/Modes.py,sha256=ifHezKw2uiBgmY33_7es_ox-WBHENYxdRB11jwVLOvU,71
57
- NikGapps/helper/compression/Tar.py,sha256=ooXkLJ1Ow0Ap9rhT_yMoOs7KalYA9CTC6-UVh9RpVsA,794
58
- NikGapps/helper/compression/Zip.py,sha256=4dDQIFyyewdeBTnO6ZnLkJrY7AvAeMqwYWWAcIiuSuQ,3766
59
- NikGapps/helper/compression/Zsh.py,sha256=BSyY63HSFpLFdMt3tKYS9oN8n8H-5Ulb1ZNO8jREJyo,481
60
- NikGapps/helper/compression/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
- NikGapps/helper/git/Git.py,sha256=rHK81xZMfLjH9uNBAnQWVW2a5StmHrmnNc6Lvh_mjiU,10272
62
- NikGapps/helper/git/GitOperations.py,sha256=RingN1Ts_-FGihkFBFZr--ilWu2UGojKCdkXVdOozv0,6104
63
- NikGapps/helper/git/GitStatics.py,sha256=Y63VP_oV4q97y3s3kJq4Z74HRNLBEf7Dli6ZWVn0jJQ,683
64
- NikGapps/helper/git/GithubManager.py,sha256=MuD8wAh362SjiHVUJwU4Q450AUT9HF-dPqlywOa4AcQ,499
65
- NikGapps/helper/git/GitlabManager.py,sha256=fpQaJ1peWjv2roJViT54jUHXF8JVvZndu9ntMZCFIgw,12862
66
- NikGapps/helper/git/TestGit.py,sha256=_XCN2cRy_yWNtk0AZDTmsw_fSebR2Twy8uOYMG06q-A,2126
67
- NikGapps/helper/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
- NikGapps/helper/overlay/ApkMetaInfo.py,sha256=WyEMGl_7fM2KdudB4pIGUuYbjSstieKMpjflfUosi5U,1565
69
- NikGapps/helper/overlay/Bool.py,sha256=1VfI30ytFvT5eTWHwRCePE2hVRb_X-lFYPhAxS6xVCM,372
70
- NikGapps/helper/overlay/Library.py,sha256=o645SWDwrKY3pSW-e6deU4nK_csuUFeLmZiddozTGB8,41758
71
- NikGapps/helper/overlay/Manifest.py,sha256=VE2JpiU2tnaLfdLVy_zJEJ0kQKlkFfbLCZwGDXsm-Lw,2448
72
- NikGapps/helper/overlay/Overlay.py,sha256=kcLjHGqNd_qTA6_KfsFY9PJwC9TmxDlL-JHsCrojnYU,908
73
- NikGapps/helper/overlay/Resources.py,sha256=bKWJEF2avl3j2ud390HQq9fRMMA8GKh9-KABdvim-Wg,1458
74
- NikGapps/helper/overlay/String.py,sha256=nyCAD_dNfwHlOgj4zuKGGz71n20CLEKyZCgrVAmiX2I,469
75
- NikGapps/helper/overlay/StringArray.py,sha256=DYPEAIdpicaJ3C08IYW6Q2tnTH6gUFXmu3KhQlHGY5g,563
76
- NikGapps/helper/overlay/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
- NikGapps/helper/upload/CmdUpload.py,sha256=UeEuNKJL1ORoSP35-NZYnCXS33QgNrPfXuPyC3oQozk,7589
78
- NikGapps/helper/upload/GoFileUpload.py,sha256=Diy09Ql7Y-tQ5PKtWsMIc-F_IP5Cv09IgtocbwQAt8Y,2320
79
- NikGapps/helper/upload/Upload.py,sha256=RZBUR6gPfuzn4h0x4pl5_Xu36fLPMm1Y0kiE-ZPGXE8,6195
80
- NikGapps/helper/upload/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
- NikGapps/helper/web/Requests.py,sha256=HaZUHe_xi_7LjPLOYBUwK3uwOYOcVaW2E1zazjw2wow,5502
82
- NikGapps/helper/web/TelegramApi.py,sha256=XREdngh0vPvPMUOJsCJ3wSqXMFqS8q3qJUhmFMY6SH8,4743
83
- NikGapps/helper/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
- NikGapps-3.29.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
85
- NikGapps-3.29.dist-info/METADATA,sha256=yERkwRe5saktvUtJIv_7B9cZcMLxHY2CLP2EjcmjuOg,4134
86
- NikGapps-3.29.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
87
- NikGapps-3.29.dist-info/entry_points.txt,sha256=iKbeOiuELwTDu5kmQHrU9XBVASWRR6_TuRIRva2UnAY,286
88
- NikGapps-3.29.dist-info/top_level.txt,sha256=CD7RpCb7bzjyvpQLt8hh2gU6X1wj3Z0NIErVkg-nJI4,9
89
- NikGapps-3.29.dist-info/RECORD,,