mirror of
https://github.com/leminlimez/Nugget.git
synced 2025-04-08 04:23:05 +08:00
toggle to show all spoofable models
This commit is contained in:
@@ -51,9 +51,11 @@ class DeviceManager:
|
|||||||
self.current_device_index = 0
|
self.current_device_index = 0
|
||||||
|
|
||||||
# preferences
|
# preferences
|
||||||
self.apply_over_wifi = True
|
# TODO: Move to its own class
|
||||||
|
self.apply_over_wifi = False
|
||||||
self.auto_reboot = True
|
self.auto_reboot = True
|
||||||
self.allow_risky_tweaks = False
|
self.allow_risky_tweaks = False
|
||||||
|
self.show_all_spoofable_models = False
|
||||||
self.skip_setup = True
|
self.skip_setup = True
|
||||||
self.supervised = False
|
self.supervised = False
|
||||||
self.organization_name = ""
|
self.organization_name = ""
|
||||||
|
|||||||
@@ -158,6 +158,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
self.ui.allowWifiApplyingChk.toggled.connect(self.on_allowWifiApplyingChk_toggled)
|
self.ui.allowWifiApplyingChk.toggled.connect(self.on_allowWifiApplyingChk_toggled)
|
||||||
self.ui.autoRebootChk.toggled.connect(self.on_autoRebootChk_toggled)
|
self.ui.autoRebootChk.toggled.connect(self.on_autoRebootChk_toggled)
|
||||||
self.ui.showRiskyChk.toggled.connect(self.on_showRiskyChk_toggled)
|
self.ui.showRiskyChk.toggled.connect(self.on_showRiskyChk_toggled)
|
||||||
|
self.ui.showAllSpoofableChk.toggled.connect(self.on_showAllSpoofableChk_toggled)
|
||||||
|
|
||||||
self.ui.skipSetupChk.toggled.connect(self.on_skipSetupChk_toggled)
|
self.ui.skipSetupChk.toggled.connect(self.on_skipSetupChk_toggled)
|
||||||
self.ui.supervisionChk.toggled.connect(self.on_supervisionChk_toggled)
|
self.ui.supervisionChk.toggled.connect(self.on_supervisionChk_toggled)
|
||||||
@@ -283,20 +284,21 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
# indexes 1-6 for iPhones, 7-(len(values) - 1) for iPads
|
# indexes 1-6 for iPhones, 7-(len(values) - 1) for iPads
|
||||||
# TODO: Make this get fetched from the gui on app startup
|
# TODO: Make this get fetched from the gui on app startup
|
||||||
spoof_drp_options = ["iPhone 15 Pro (iPhone16,1)", "iPhone 15 Pro Max (iPhone16,2)", "iPhone 16 (iPhone17,3)", "iPhone 16 Plus (iPhone17,4)", "iPhone 16 Pro (iPhone17,1)", "iPhone 16 Pro Max (iPhone17,2)", "iPad Mini (A17 Pro) (W) (iPad16,1)", "iPad Mini (A17 Pro) (C) (iPad16,2)", "iPad Pro (13-inch) (M4) (W) (iPad16,5)", "iPad Pro (13-inch) (M4) (C) (iPad16,6)", "iPad Pro (11-inch) (M4) (W) (iPad16,3)", "iPad Pro (11-inch) (M4) (C) (iPad16,4)", "iPad Pro (12.9-inch) (M2) (W) (iPad14,5)", "iPad Pro (12.9-inch) (M2) (C) (iPad14,6)", "iPad Pro (11-inch) (M2) (W) (iPad14,3)", "iPad Pro (11-inch) (M2) (C) (iPad14,4)", "iPad Air (13-inch) (M2) (W) (iPad14,10)", "iPad Air (13-inch) (M2) (C) (iPad14,11)", "iPad Air (11-inch) (M2) (W) (iPad14,8)", "iPad Air (11-inch) (M2) (C) (iPad14,9)", "iPad Pro (11-inch) (M1) (W) (iPad13,4)", "iPad Pro (11-inch) (M1) (C) (iPad13,5)", "iPad Pro (12.9-inch) (M1) (W) (iPad13,8)", "iPad Pro (12.9-inch) (M1) (C) (iPad13,9)", "iPad Air (M1) (W) (iPad13,16)", "iPad Air (M1) (C) (iPad13,17)"]
|
spoof_drp_options = ["iPhone 15 Pro (iPhone16,1)", "iPhone 15 Pro Max (iPhone16,2)", "iPhone 16 (iPhone17,3)", "iPhone 16 Plus (iPhone17,4)", "iPhone 16 Pro (iPhone17,1)", "iPhone 16 Pro Max (iPhone17,2)", "iPad Mini (A17 Pro) (W) (iPad16,1)", "iPad Mini (A17 Pro) (C) (iPad16,2)", "iPad Pro (13-inch) (M4) (W) (iPad16,5)", "iPad Pro (13-inch) (M4) (C) (iPad16,6)", "iPad Pro (11-inch) (M4) (W) (iPad16,3)", "iPad Pro (11-inch) (M4) (C) (iPad16,4)", "iPad Pro (12.9-inch) (M2) (W) (iPad14,5)", "iPad Pro (12.9-inch) (M2) (C) (iPad14,6)", "iPad Pro (11-inch) (M2) (W) (iPad14,3)", "iPad Pro (11-inch) (M2) (C) (iPad14,4)", "iPad Air (13-inch) (M2) (W) (iPad14,10)", "iPad Air (13-inch) (M2) (C) (iPad14,11)", "iPad Air (11-inch) (M2) (W) (iPad14,8)", "iPad Air (11-inch) (M2) (C) (iPad14,9)", "iPad Pro (11-inch) (M1) (W) (iPad13,4)", "iPad Pro (11-inch) (M1) (C) (iPad13,5)", "iPad Pro (12.9-inch) (M1) (W) (iPad13,8)", "iPad Pro (12.9-inch) (M1) (C) (iPad13,9)", "iPad Air (M1) (W) (iPad13,16)", "iPad Air (M1) (C) (iPad13,17)"]
|
||||||
if self.device_manager.get_current_device_model().startswith("iPhone"):
|
if self.device_manager.show_all_spoofable_models or self.device_manager.get_current_device_model().startswith("iPhone"):
|
||||||
# re-enable iPhone spoof models
|
# re-enable iPhone spoof models
|
||||||
self.ui.spoofedModelDrp.addItems(spoof_drp_options[:6])
|
self.ui.spoofedModelDrp.addItems(spoof_drp_options[:6])
|
||||||
# add iPad models on phones (for testing)
|
if self.device_manager.show_all_spoofable_models or self.device_manager.get_current_device_model().startswith("iPad"):
|
||||||
# re-enable iPad spoof models
|
# re-enable iPad spoof models
|
||||||
self.ui.spoofedModelDrp.addItems(spoof_drp_options[6:])
|
self.ui.spoofedModelDrp.addItems(spoof_drp_options[6:])
|
||||||
|
|
||||||
def change_selected_device(self, index):
|
def change_selected_device(self, index):
|
||||||
|
self.ui.showAllSpoofableChk.hide()
|
||||||
if len(self.device_manager.devices) > 0:
|
if len(self.device_manager.devices) > 0:
|
||||||
self.device_manager.set_current_device(index=index)
|
self.device_manager.set_current_device(index=index)
|
||||||
# hide options that are for newer versions
|
# hide options that are for newer versions
|
||||||
# remove the new dynamic island options
|
# remove the new dynamic island options
|
||||||
MinTweakVersions = {
|
MinTweakVersions = {
|
||||||
"no_patch": [self.ui.chooseGestaltBtn, self.ui.gestaltPageBtn, self.ui.resetGestaltBtn, self.ui.gestaltLocationLbl],
|
"no_patch": [self.ui.chooseGestaltBtn, self.ui.gestaltPageBtn, self.ui.resetGestaltBtn, self.ui.gestaltLocationLbl, self.ui.showAllSpoofableChk],
|
||||||
"exploit": [("18.0", self.ui.featureFlagsPageBtn), ("18.1", self.ui.eligFileChk)],
|
"exploit": [("18.0", self.ui.featureFlagsPageBtn), ("18.1", self.ui.eligFileChk)],
|
||||||
"18.1": [self.ui.enableAIChk, self.ui.aiEnablerContent],
|
"18.1": [self.ui.enableAIChk, self.ui.aiEnablerContent],
|
||||||
"18.0": [self.ui.aodChk, self.ui.aodVibrancyChk, self.ui.iphone16SettingsChk]
|
"18.0": [self.ui.aodChk, self.ui.aodVibrancyChk, self.ui.iphone16SettingsChk]
|
||||||
@@ -370,9 +372,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
self.settings = QtCore.QSettings()
|
self.settings = QtCore.QSettings()
|
||||||
try:
|
try:
|
||||||
# load the settings
|
# load the settings
|
||||||
apply_over_wifi = self.settings.value("apply_over_wifi", True, type=bool)
|
apply_over_wifi = self.settings.value("apply_over_wifi", False, type=bool)
|
||||||
auto_reboot = self.settings.value("auto_reboot", True, type=bool)
|
auto_reboot = self.settings.value("auto_reboot", True, type=bool)
|
||||||
risky_tweaks = self.settings.value("show_risky_tweaks", False, type=bool)
|
risky_tweaks = self.settings.value("show_risky_tweaks", False, type=bool)
|
||||||
|
show_all_spoofable = self.settings.value("show_all_spoofable_models", False, type=bool)
|
||||||
skip_setup = self.settings.value("skip_setup", True, type=bool)
|
skip_setup = self.settings.value("skip_setup", True, type=bool)
|
||||||
supervised = self.settings.value("supervised", False, type=bool)
|
supervised = self.settings.value("supervised", False, type=bool)
|
||||||
organization_name = self.settings.value("organization_name", "", type=str)
|
organization_name = self.settings.value("organization_name", "", type=str)
|
||||||
@@ -380,6 +383,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
self.ui.allowWifiApplyingChk.setChecked(apply_over_wifi)
|
self.ui.allowWifiApplyingChk.setChecked(apply_over_wifi)
|
||||||
self.ui.autoRebootChk.setChecked(auto_reboot)
|
self.ui.autoRebootChk.setChecked(auto_reboot)
|
||||||
self.ui.showRiskyChk.setChecked(risky_tweaks)
|
self.ui.showRiskyChk.setChecked(risky_tweaks)
|
||||||
|
self.ui.showAllSpoofableChk.setChecked(show_all_spoofable)
|
||||||
self.ui.skipSetupChk.setChecked(skip_setup)
|
self.ui.skipSetupChk.setChecked(skip_setup)
|
||||||
self.ui.supervisionChk.setChecked(supervised)
|
self.ui.supervisionChk.setChecked(supervised)
|
||||||
self.ui.supervisionOrganization.setText(organization_name)
|
self.ui.supervisionOrganization.setText(organization_name)
|
||||||
@@ -387,6 +391,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
self.device_manager.apply_over_wifi = apply_over_wifi
|
self.device_manager.apply_over_wifi = apply_over_wifi
|
||||||
self.device_manager.auto_reboot = auto_reboot
|
self.device_manager.auto_reboot = auto_reboot
|
||||||
self.device_manager.allow_risky_tweaks = risky_tweaks
|
self.device_manager.allow_risky_tweaks = risky_tweaks
|
||||||
|
self.device_manager.show_all_spoofable_models = show_all_spoofable
|
||||||
self.device_manager.skip_setup = skip_setup
|
self.device_manager.skip_setup = skip_setup
|
||||||
self.device_manager.supervised = supervised
|
self.device_manager.supervised = supervised
|
||||||
self.device_manager.organization_name = organization_name
|
self.device_manager.organization_name = organization_name
|
||||||
@@ -672,13 +677,13 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
|
|
||||||
def on_spoofedModelDrp_activated(self, index: int):
|
def on_spoofedModelDrp_activated(self, index: int):
|
||||||
idx_to_apply = index
|
idx_to_apply = index
|
||||||
if index > 0 and not self.device_manager.get_current_device_model().startswith("iPhone"):
|
if not self.device_manager.show_all_spoofable_models and not self.device_manager.get_current_device_model().startswith("iPhone"):
|
||||||
# offset the index for ipads
|
# offset the index for ipads
|
||||||
idx_to_apply += 6
|
idx_to_apply += 6
|
||||||
tweaks["SpoofModel"].set_selected_option(idx_to_apply)
|
tweaks["SpoofModel"].set_selected_option(idx_to_apply)
|
||||||
tweaks["SpoofHardware"].set_selected_option(idx_to_apply)
|
tweaks["SpoofHardware"].set_selected_option(idx_to_apply)
|
||||||
tweaks["SpoofCPU"].set_selected_option(idx_to_apply)
|
tweaks["SpoofCPU"].set_selected_option(idx_to_apply)
|
||||||
if idx_to_apply == 0:
|
if index == 0:
|
||||||
tweaks["SpoofModel"].set_enabled(False)
|
tweaks["SpoofModel"].set_enabled(False)
|
||||||
tweaks["SpoofHardware"].set_enabled(False)
|
tweaks["SpoofHardware"].set_enabled(False)
|
||||||
tweaks["SpoofCPU"].set_enabled(False)
|
tweaks["SpoofCPU"].set_enabled(False)
|
||||||
@@ -839,6 +844,12 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
self.ui.advancedPageBtn.show()
|
self.ui.advancedPageBtn.show()
|
||||||
else:
|
else:
|
||||||
self.ui.advancedPageBtn.hide()
|
self.ui.advancedPageBtn.hide()
|
||||||
|
def on_showAllSpoofableChk_toggled(self, checked: bool):
|
||||||
|
self.device_manager.show_all_spoofable_models = checked
|
||||||
|
# save the setting
|
||||||
|
self.settings.setValue("show_all_spoofable_models", checked)
|
||||||
|
# refresh the list of spoofable models
|
||||||
|
self.setup_spoofedModelDrp_models()
|
||||||
def on_autoRebootChk_toggled(self, checked: bool):
|
def on_autoRebootChk_toggled(self, checked: bool):
|
||||||
self.device_manager.auto_reboot = checked
|
self.device_manager.auto_reboot = checked
|
||||||
# save the setting
|
# save the setting
|
||||||
|
|||||||
@@ -4767,7 +4767,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
|
|||||||
<string>Allow Applying Over WiFi</string>
|
<string>Allow Applying Over WiFi</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="checked">
|
<property name="checked">
|
||||||
<bool>true</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -4788,6 +4788,22 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="showAllSpoofableChk">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Show models for other device types in the AI device spoofing tab.</string>
|
||||||
|
</property>
|
||||||
|
<property name="statusTip">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="whatsThis">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Show All Spoofable Models</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="Line" name="line_24">
|
<widget class="Line" name="line_24">
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
|
|||||||
@@ -2470,7 +2470,7 @@ class Ui_Nugget(object):
|
|||||||
self._21.setContentsMargins(0, 0, 0, 0)
|
self._21.setContentsMargins(0, 0, 0, 0)
|
||||||
self.allowWifiApplyingChk = QCheckBox(self.settingsPageContent)
|
self.allowWifiApplyingChk = QCheckBox(self.settingsPageContent)
|
||||||
self.allowWifiApplyingChk.setObjectName(u"allowWifiApplyingChk")
|
self.allowWifiApplyingChk.setObjectName(u"allowWifiApplyingChk")
|
||||||
self.allowWifiApplyingChk.setChecked(True)
|
self.allowWifiApplyingChk.setChecked(False)
|
||||||
|
|
||||||
self._21.addWidget(self.allowWifiApplyingChk)
|
self._21.addWidget(self.allowWifiApplyingChk)
|
||||||
|
|
||||||
@@ -2485,6 +2485,11 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self._21.addWidget(self.showRiskyChk)
|
self._21.addWidget(self.showRiskyChk)
|
||||||
|
|
||||||
|
self.showAllSpoofableChk = QCheckBox(self.settingsPageContent)
|
||||||
|
self.showAllSpoofableChk.setObjectName(u"showAllSpoofableChk")
|
||||||
|
|
||||||
|
self._21.addWidget(self.showAllSpoofableChk)
|
||||||
|
|
||||||
self.line_24 = QFrame(self.settingsPageContent)
|
self.line_24 = QFrame(self.settingsPageContent)
|
||||||
self.line_24.setObjectName(u"line_24")
|
self.line_24.setObjectName(u"line_24")
|
||||||
self.line_24.setStyleSheet(u"QFrame {\n"
|
self.line_24.setStyleSheet(u"QFrame {\n"
|
||||||
@@ -3382,6 +3387,16 @@ class Ui_Nugget(object):
|
|||||||
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
|
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
|
||||||
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
|
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
|
||||||
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
|
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.showAllSpoofableChk.setToolTip(QCoreApplication.translate("Nugget", u"Show models for other device types in the AI device spoofing tab.", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
#if QT_CONFIG(statustip)
|
||||||
|
self.showAllSpoofableChk.setStatusTip("")
|
||||||
|
#endif // QT_CONFIG(statustip)
|
||||||
|
#if QT_CONFIG(whatsthis)
|
||||||
|
self.showAllSpoofableChk.setWhatsThis("")
|
||||||
|
#endif // QT_CONFIG(whatsthis)
|
||||||
|
self.showAllSpoofableChk.setText(QCoreApplication.translate("Nugget", u"Show All Spoofable Models", None))
|
||||||
self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None))
|
self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None))
|
||||||
self.supervisionChk.setText(QCoreApplication.translate("Nugget", u"Enable Supervision * (requires Skip Setup)", None))
|
self.supervisionChk.setText(QCoreApplication.translate("Nugget", u"Enable Supervision * (requires Skip Setup)", None))
|
||||||
self.supervisionOrganization.setPlaceholderText(QCoreApplication.translate("Nugget", u"Enter Organization Name", None))
|
self.supervisionOrganization.setPlaceholderText(QCoreApplication.translate("Nugget", u"Enter Organization Name", None))
|
||||||
|
|||||||
@@ -2470,7 +2470,7 @@ class Ui_Nugget(object):
|
|||||||
self._21.setContentsMargins(0, 0, 0, 0)
|
self._21.setContentsMargins(0, 0, 0, 0)
|
||||||
self.allowWifiApplyingChk = QCheckBox(self.settingsPageContent)
|
self.allowWifiApplyingChk = QCheckBox(self.settingsPageContent)
|
||||||
self.allowWifiApplyingChk.setObjectName(u"allowWifiApplyingChk")
|
self.allowWifiApplyingChk.setObjectName(u"allowWifiApplyingChk")
|
||||||
self.allowWifiApplyingChk.setChecked(True)
|
self.allowWifiApplyingChk.setChecked(False)
|
||||||
|
|
||||||
self._21.addWidget(self.allowWifiApplyingChk)
|
self._21.addWidget(self.allowWifiApplyingChk)
|
||||||
|
|
||||||
@@ -2485,6 +2485,11 @@ class Ui_Nugget(object):
|
|||||||
|
|
||||||
self._21.addWidget(self.showRiskyChk)
|
self._21.addWidget(self.showRiskyChk)
|
||||||
|
|
||||||
|
self.showAllSpoofableChk = QCheckBox(self.settingsPageContent)
|
||||||
|
self.showAllSpoofableChk.setObjectName(u"showAllSpoofableChk")
|
||||||
|
|
||||||
|
self._21.addWidget(self.showAllSpoofableChk)
|
||||||
|
|
||||||
self.line_24 = QFrame(self.settingsPageContent)
|
self.line_24 = QFrame(self.settingsPageContent)
|
||||||
self.line_24.setObjectName(u"line_24")
|
self.line_24.setObjectName(u"line_24")
|
||||||
self.line_24.setStyleSheet(u"QFrame {\n"
|
self.line_24.setStyleSheet(u"QFrame {\n"
|
||||||
@@ -3382,6 +3387,16 @@ class Ui_Nugget(object):
|
|||||||
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
|
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
|
||||||
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
|
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
|
||||||
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
|
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.showAllSpoofableChk.setToolTip(QCoreApplication.translate("Nugget", u"Show models for other device types in the AI device spoofing tab.", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
#if QT_CONFIG(statustip)
|
||||||
|
self.showAllSpoofableChk.setStatusTip("")
|
||||||
|
#endif // QT_CONFIG(statustip)
|
||||||
|
#if QT_CONFIG(whatsthis)
|
||||||
|
self.showAllSpoofableChk.setWhatsThis("")
|
||||||
|
#endif // QT_CONFIG(whatsthis)
|
||||||
|
self.showAllSpoofableChk.setText(QCoreApplication.translate("Nugget", u"Show All Spoofable Models", None))
|
||||||
self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None))
|
self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None))
|
||||||
self.supervisionChk.setText(QCoreApplication.translate("Nugget", u"Enable Supervision * (requires Skip Setup)", None))
|
self.supervisionChk.setText(QCoreApplication.translate("Nugget", u"Enable Supervision * (requires Skip Setup)", None))
|
||||||
self.supervisionOrganization.setPlaceholderText(QCoreApplication.translate("Nugget", u"Enter Organization Name", None))
|
self.supervisionOrganization.setPlaceholderText(QCoreApplication.translate("Nugget", u"Enter Organization Name", None))
|
||||||
|
|||||||
Reference in New Issue
Block a user