Skip to content

Commit

Permalink
* **V7.8.4**
Browse files Browse the repository at this point in the history
* Add New Donation System!
* Fix lightning spell detection (Summer 2020 Update. Reported by @GrumpyHog)
* Fix lightning spell space (Summer 2020 Update)
* Add new super troop support and fix new troop level values (Summer 2020 Update)
* Add New Dark Troop Headhunter (Summer 2020 Update)
* Fix array error on scid account switch. Reported by @Passionfruit
* Fix legend league 'search for opponent' screen. Reported by @Nytol
* Fix legend league not finding 'confirm attack' button when trophies are below 5000. Reported by @Nytol
* Fix 'important notice' window not getting detected. Reported by @miked
* Fix getarmycctroops crashing when cc contains super troops. Reported by @Nytol
* Fix array error while training troops/spells. Reported by @HarchH
* Improve new maintenance screen handling. Reported by @RoKSeus @priapus.cranium @HarchH
* Improve Away Clicks to be more randomized. Suggested by @GrumpyHog
* @GrumpyHog's fix to DropTrophy to also use RC
* Close up blank lines when "Reset Upgrades" button is pressed (Village / Upgrade / Buildings)
* Fixed status icon in the Village / Upgrade / Buildings screen
* Stop processing the building upgrade list when you run out of builders.
* Updated BK and AQ upgrade costs. Reported by @Brazuca87
* Support 6/22 upgrade AQ & BK levels 71 to 75 and new rates
* Added Help example of making a .bat file to start multiple instances
* Fix array error on spells queue read
* Add GUI option to sell all extra magic items for gems in personal challenges
* More work on SuperTroops use in CSV attacks.  (Needs more testing with more troop types)
  • Loading branch information
Fliegerfaust33 committed Jul 21, 2020
1 parent 704b3de commit 9549470
Show file tree
Hide file tree
Showing 220 changed files with 2,255 additions and 875 deletions.
4 changes: 2 additions & 2 deletions COCBot/GUI/MBR GUI Control Attack Scripted.au3
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ EndFunc ;==>DuplicateScriptAB

Func ApplyScriptDB()
Local $iApply = 0
Local $aiCSVTroops[$eTroopCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Local $aiCSVTroops[$eTroopCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Local $aiCSVSpells[$eSpellCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Local $aiCSVHeros[$eHeroCount][2] = [[0, 0], [0, 0], [0, 0], [0, 0]]
Local $iCSVRedlineRoutineItem = 0, $iCSVDroplineEdgeItem = 0
Expand Down Expand Up @@ -376,7 +376,7 @@ EndFunc ;==>ApplyScriptDB

Func ApplyScriptAB()
Local $iApply = 0
Local $aiCSVTroops[$eTroopCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Local $aiCSVTroops[$eTroopCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Local $aiCSVSpells[$eSpellCount] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Local $aiCSVHeros[$eHeroCount][2] = [[0, 0], [0, 0], [0, 0], [0, 0]]
Local $iCSVRedlineRoutineItem = 0, $iCSVDroplineEdgeItem = 0
Expand Down
2 changes: 1 addition & 1 deletion COCBot/GUI/MBR GUI Control BOT Options.au3
Original file line number Diff line number Diff line change
Expand Up @@ -1081,7 +1081,7 @@ Func btnTestWeakBase()
EndFunc ;==>btnTestWeakBase

Func btnTestClickAway()
ClickP($aAway, 2, 0)
ClickAway()
EndFunc ;==>btnTestClickAway

Func btnTestUpgradeWindow()
Expand Down
6 changes: 3 additions & 3 deletions COCBot/GUI/MBR GUI Control Child Army.au3
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ Func lblTotalCountTroop2()
EndIf
Next

For $i = $eTroopMinion To $eTroopIceGolem
For $i = $eTroopMinion To $eTroopHeadhunter
Local $NbrOfTroop = GUICtrlRead($g_ahTxtTrainArmyTroopCount[$i])
Local $LevOfTroop = $g_aiTrainArmyTroopLevel[$i] > 0 ? $g_aiTrainArmyTroopLevel[$i] : $g_aiTroopCostPerLevel[$i][0]

Expand Down Expand Up @@ -661,7 +661,7 @@ Func BtnTroopOrderSet()
Local $aiUsedTroop[$eTroopCount] = [ _
$eTroopBarbarian, $eTroopArcher, $eTroopGiant, $eTroopGoblin, $eTroopWallBreaker, $eTroopBalloon, $eTroopWizard, _
$eTroopHealer, $eTroopDragon, $eTroopPekka, $eTroopBabyDragon, $eTroopMiner, $eTroopElectroDragon, $eTroopYeti, $eTroopMinion, $eTroopHogRider, _
$eTroopValkyrie, $eTroopGolem, $eTroopWitch, $eTroopLavaHound, $eTroopBowler, $eTroopIceGolem]
$eTroopValkyrie, $eTroopGolem, $eTroopWitch, $eTroopLavaHound, $eTroopBowler, $eTroopIceGolem, $eTroopHeadhunter]

; check for duplicate combobox index and take action
For $i = 0 To UBound($g_ahCmbTroopOrder) - 1
Expand Down Expand Up @@ -1011,7 +1011,7 @@ Func CalCostCamp()
$iElixirCostCamp += $g_aiArmyCustomTroops[$i] * $g_aiTroopCostPerLevel[$i][$indexLevel]
Next

For $i = $eTroopMinion To $eTroopIceGolem
For $i = $eTroopMinion To $eTroopHeadhunter
$indexLevel = $g_aiTrainArmyTroopLevel[$i] > 0 ? $g_aiTrainArmyTroopLevel[$i] : $g_aiTroopCostPerLevel[$i][0]
$iDarkCostCamp += $g_aiArmyCustomTroops[$i] * $g_aiTroopCostPerLevel[$i][$indexLevel]
Next
Expand Down
1 change: 1 addition & 0 deletions COCBot/GUI/MBR GUI Control Child Misc.au3
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ Func btnAddConfirm()
EndIf

saveConfig() ; save current config so we don't miss anything recently changed
readConfig() ; read it back in to reset all of the .ini file global variables

$g_sProfileCurrentName = $newProfileName
; Setup the profile if it doesn't exist.
Expand Down
134 changes: 115 additions & 19 deletions COCBot/GUI/MBR GUI Control Child Upgrade.au3
Original file line number Diff line number Diff line change
Expand Up @@ -84,26 +84,122 @@ Func picUpgradeTypeLocation()
EndFunc ;==>picUpgradeTypeLocation

Func btnResetUpgrade()
Local $iEmptyRow=-1 ;-1 means no empty row found yet.
Local $j=0 ;temp upgrade type or status
;Sleep(5000)
;SetDebugLog("Reset Upgarde *******************************************")
For $i = 0 To UBound($g_avBuildingUpgrades, 1) - 1
If GUICtrlRead($g_hChkUpgradeRepeat[$i]) = $GUI_CHECKED Then ContinueLoop
$g_avBuildingUpgrades[$i][0] = -1 ; clear location and loot value in $g_avBuildingUpgrades variable
$g_avBuildingUpgrades[$i][1] = -1 ; clear location and loot value in $g_avBuildingUpgrades variable
$g_avBuildingUpgrades[$i][2] = -1 ; clear location and loot value in $g_avBuildingUpgrades variable
$g_avBuildingUpgrades[$i][3] = "" ;Clear Upgrade Type
$g_avBuildingUpgrades[$i][4] = "" ;Clear Upgrade Unit Name
$g_avBuildingUpgrades[$i][5] = "" ;Clear Upgrade Level
$g_avBuildingUpgrades[$i][6] = "" ;Clear Upgrade Time
$g_avBuildingUpgrades[$i][7] = "" ;Clear Upgrade Starting Time
GUICtrlSetData($g_hTxtUpgradeName[$i], "") ; Clear GUI Unit Name
GUICtrlSetData($g_hTxtUpgradeLevel[$i], "") ; Clear GUI Unit Level
GUICtrlSetData($g_hTxtUpgradeValue[$i], "") ; Clear Upgrade value in GUI
GUICtrlSetData($g_hTxtUpgradeTime[$i], "") ; Clear Upgrade time in GUI
_GUICtrlSetImage($g_hPicUpgradeType[$i], $g_sLibIconPath, $eIcnBlank) ; change GUI upgrade image to blank
$g_aiPicUpgradeStatus[$i] = $eIcnTroops
_GUICtrlSetImage($g_hPicUpgradeStatus[$i], $g_sLibIconPath, $g_aiPicUpgradeStatus[$i]) ; Change GUI upgrade status to not ready
GUICtrlSetState($g_hChkUpgrade[$i], $GUI_UNCHECKED) ; Change upgrade selection box to unchecked
GUICtrlSetData($g_hTxtUpgradeEndTime[$i], "") ; Clear Upgrade time in GUI
GUICtrlSetState($g_hChkUpgradeRepeat[$i], $GUI_UNCHECKED) ; Change repeat box to unchecked
If GUICtrlRead($g_hChkUpgradeRepeat[$i]) = $GUI_CHECKED Then
;SetDebugLog("Row to keep " & $i)
If $iEmptyRow<>-1 Then ;Is there an empty row to fill?
;SetDebugLog("Moving from " & $i)
;SetDebugLog("Moving to " & $iEmptyRow)
;Move this row up...
$g_aiPicUpgradeStatus[$iEmptyRow] = $g_aiPicUpgradeStatus[$i] ; Upgrade status
$g_avBuildingUpgrades[$iEmptyRow][0] = $g_avBuildingUpgrades[$i][0] ;Upgrade Location X
$g_avBuildingUpgrades[$iEmptyRow][1] = $g_avBuildingUpgrades[$i][1] ;Upgrade Location Y
$g_avBuildingUpgrades[$iEmptyRow][2] = $g_avBuildingUpgrades[$i][2] ;Upgrade Value
;SetDebugLog("Type setting to " & $g_avBuildingUpgrades[$i][3])
$g_avBuildingUpgrades[$iEmptyRow][3] = $g_avBuildingUpgrades[$i][3] ;Upgrade Type
;SetDebugLog("Name in global setting to " & $g_avBuildingUpgrades[$i][4])
$g_avBuildingUpgrades[$iEmptyRow][4] = $g_avBuildingUpgrades[$i][4] ;Upgrade Unit Name
;SetDebugLog("Level in global setting to " & $g_avBuildingUpgrades[$i][5])
$g_avBuildingUpgrades[$iEmptyRow][5] = $g_avBuildingUpgrades[$i][5] ;Upgrade Level
$g_avBuildingUpgrades[$iEmptyRow][6] = $g_avBuildingUpgrades[$i][6] ;Upgrade Duration
$g_avBuildingUpgrades[$iEmptyRow][7] = $g_avBuildingUpgrades[$i][7] ;Upgrade Finish Time

;Set the GUI data for new row and clear the GUI data for the cleared row.
;GUI Unit Name
;SetDebugLog("Setting name " & $g_avBuildingUpgrades[$iEmptyRow][4])
GUICtrlSetData($g_hTxtUpgradeName[$iEmptyRow], $g_avBuildingUpgrades[$iEmptyRow][4])
GUICtrlSetData($g_hTxtUpgradeName[$i], "")
;GUI Unit Level
;SetDebugLog("Setting level " & $g_avBuildingUpgrades[$iEmptyRow][5])
GUICtrlSetData($g_hTxtUpgradeLevel[$iEmptyRow], $g_avBuildingUpgrades[$iEmptyRow][5])
GUICtrlSetData($g_hTxtUpgradeLevel[$i], "")
;Upgrade value in GUI
GUICtrlSetData($g_hTxtUpgradeValue[$iEmptyRow], $g_avBuildingUpgrades[$iEmptyRow][2])
GUICtrlSetData($g_hTxtUpgradeValue[$i], "")
;Upgrade duration in GUI
GUICtrlSetData($g_hTxtUpgradeTime[$iEmptyRow], $g_avBuildingUpgrades[$iEmptyRow][6])
GUICtrlSetData($g_hTxtUpgradeTime[$i], "")

;GUI upgrade type image
$j = $eIcnElixir
If $g_avBuildingUpgrades[$iEmptyRow][3] = "GOLD" Then $j = $eIcnGold
;SetDebugLog("Setting GUI type to " & $j)
_GUICtrlSetImage($g_hPicUpgradeType[$iEmptyRow], $g_sLibIconPath, $j)
_GUICtrlSetImage($g_hPicUpgradeType[$i], $g_sLibIconPath, $eIcnBlank)

;GUI Status icon : Still not working right!
;$eIcnTroops=43, $eIcnGreenLight=69, $eIcnRedLight=71 or $eIcnYellowLight=73
;SetDebugLog("Setting status to " & $g_aiPicUpgradeStatus[$i])
;$j=$g_aiPicUpgradeStatus[$i]
;No idea why this crap is needed, but I can't pass a variable to _GUICtrlSetImage
$j=$eIcnGreenLight
If $g_aiPicUpgradeStatus[$i] = $eIcnYellowLight Then $j=$eIcnYellowLight
$g_aiPicUpgradeStatus[$iEmptyRow] = $j
_GUICtrlSetImage($g_hPicUpgradeStatus[$iEmptyRow], $g_sLibIconPath, $j)
;SetDebugLog("Clearing old status to red light " & $eIcnRedLight)
$g_aiPicUpgradeStatus[$i] = $eIcnRedLight ;blank row goes red
_GUICtrlSetImage($g_hPicUpgradeStatus[$i], $g_sLibIconPath, $eIcnRedLight)

;Upgrade selection box
GUICtrlSetState($g_hChkUpgrade[$iEmptyRow], $GUI_CHECKED)
GUICtrlSetState($g_hChkUpgrade[$i], $GUI_UNCHECKED)
;Upgrade finish time in GUI
GUICtrlSetData($g_hTxtUpgradeEndTime[$iEmptyRow], $g_avBuildingUpgrades[$iEmptyRow][7])
GUICtrlSetData($g_hTxtUpgradeEndTime[$i], "")
;Repeat box
GUICtrlSetState($g_hChkUpgradeRepeat[$iEmptyRow], $GUI_CHECKED)
GUICtrlSetState($g_hChkUpgradeRepeat[$i], $GUI_UNCHECKED)

;Now clear the row we just moved from.
$g_avBuildingUpgrades[$i][0] = -1 ;Upgrade Location X
$g_avBuildingUpgrades[$i][1] = -1 ;Upgrade Location Y
$g_avBuildingUpgrades[$i][2] = -1 ;Upgrade Value
$g_avBuildingUpgrades[$i][3] = "" ;Upgrade Type
$g_avBuildingUpgrades[$i][4] = "" ;Upgrade Unit Name
$g_avBuildingUpgrades[$i][5] = "" ;Upgrade Level
$g_avBuildingUpgrades[$i][6] = "" ;Upgrade Duration
$g_avBuildingUpgrades[$i][7] = "" ;Upgrade Finish Time


$i = $iEmptyRow ;Reset counter to this row so we continue forward from here.
$iEmptyRow = -1 ;This should be the first empty row now.

Else
;set these to clear up old status icon issues on rows not moved
;SetDebugLog("Not moving row " & $i)
$j=$g_aiPicUpgradeStatus[$i]
;SetDebugLog("Setting GUI status to " & $j) ;
;Following works if a constant is used, but not an variable?
if $j=69 then _GUICtrlSetImage($g_hPicUpgradeStatus[$i], $g_sLibIconPath, 69)
if $j=73 then _GUICtrlSetImage($g_hPicUpgradeStatus[$i], $g_sLibIconPath, 73)
ContinueLoop
Endif
Else ;Row not checked. Clear it.
;SetDebugLog("Row not checked, clearing row " & $i)
$g_avBuildingUpgrades[$i][0] = -1 ;Upgrade position x
$g_avBuildingUpgrades[$i][1] = -1 ;Upgrade position y
$g_avBuildingUpgrades[$i][2] = -1 ;Upgrade value
$g_avBuildingUpgrades[$i][3] = "" ;Upgrade Type
$g_avBuildingUpgrades[$i][4] = "" ;Upgrade Unit Name
$g_avBuildingUpgrades[$i][5] = "" ;Upgrade Level
$g_avBuildingUpgrades[$i][6] = "" ;Upgrade Duration
$g_avBuildingUpgrades[$i][7] = "" ;Upgrade Finish Time
GUICtrlSetData($g_hTxtUpgradeName[$i], "") ;GUI Unit Name
GUICtrlSetData($g_hTxtUpgradeLevel[$i], "") ;GUI Unit Level
GUICtrlSetData($g_hTxtUpgradeValue[$i], "") ;Upgrade value in GUI
GUICtrlSetData($g_hTxtUpgradeTime[$i], "") ;Upgrade duration in GUI
_GUICtrlSetImage($g_hPicUpgradeType[$i], $g_sLibIconPath, $eIcnBlank) ;Upgrade type blank
$g_aiPicUpgradeStatus[$i] = $eIcnRedLight
_GUICtrlSetImage($g_hPicUpgradeStatus[$i], $g_sLibIconPath, $eIcnRedLight) ;Upgrade status to not ready
GUICtrlSetState($g_hChkUpgrade[$i], $GUI_UNCHECKED) ;Change upgrade selection box to unchecked
GUICtrlSetData($g_hTxtUpgradeEndTime[$i], "") ;Clear Upgrade time in GUI
GUICtrlSetState($g_hChkUpgradeRepeat[$i], $GUI_UNCHECKED) ;Change repeat box to unchecked
If $iEmptyRow = -1 Then $iEmptyRow=$i ;This row is now empty.
Endif
Next
EndFunc ;==>btnResetUpgrade

Expand Down
2 changes: 1 addition & 1 deletion COCBot/GUI/MBR GUI Control Donate.au3
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

Global $g_aiDonIcons[$eTroopCount + 1] = [$eIcnDonBarbarian, $eIcnDonArcher, $eIcnDonGiant, $eIcnDonGoblin, $eIcnDonWallBreaker, $eIcnDonBalloon, $eIcnDonWizard, $eIcnDonHealer, _
$eIcnDonDragon, $eIcnDonPekka, $eIcnDonBabyDragon, $eIcnDonMiner, $eIcnElectroDragon, $eIcnYeti, $eIcnDonMinion, $eIcnDonHogRider, $eIcnDonValkyrie, $eIcnDonGolem, _
$eIcnDonWitch, $eIcnDonLavaHound, $eIcnDonBowler, $eIcnIceGolem, $eIcnDonBlank]
$eIcnDonWitch, $eIcnDonLavaHound, $eIcnDonBowler, $eIcnIceGolem, $eIcnHeadhunter, $eIcnDonBlank]

Func btnDonateTroop()
For $i = 0 To $eTroopCount - 1 + $g_iCustomDonateConfigs + $eSiegeMachineCount
Expand Down
2 changes: 1 addition & 1 deletion COCBot/GUI/MBR GUI Control Tab DropOrder.au3
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ Func BtnDropOrderSet()
Local $aiDropOrder[$eDropOrderCount] = [ _
$eTroopBarbarianS, $eTroopArcherS, $eTroopGiantS, $eTroopGoblinS, $eTroopWallBreakerS, $eTroopBalloonS, $eTroopWizardS, _
$eTroopHealerS, $eTroopDragonS, $eTroopPekkaS, $eTroopBabyDragonS, $eTroopMinerS, $eTroopElectroDragonS, $eTroopYetiS, $eTroopMinionS, $eTroopHogRiderS, _
$eTroopValkyrieS, $eTroopGolemS, $eTroopWitchS, $eTroopLavaHoundS, $eTroopBowlerS, $eTroopIceGolemS, $eHeroeS, $eCCS]
$eTroopValkyrieS, $eTroopGolemS, $eTroopWitchS, $eTroopLavaHoundS, $eTroopBowlerS, $eTroopIceGolemS, $eTroopHeadhunterS, $eHeroeS, $eCCS]

; check for duplicate combobox index and take action
For $i = 0 To UBound($g_ahCmbDropOrder) - 1
Expand Down
12 changes: 6 additions & 6 deletions COCBot/GUI/MBR GUI Design Attack.au3
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Func LoadTranslatedDropOrderList()
"Wall Breakers", "Balloons", "Wizards", "Healers", _
"Dragons", "Pekkas", "Baby Dragons", "Miners", "Electro Dragons", "Yetis", _
"Minions", "Hog Riders", "Valkyries", "Golems", _
"Witches", "Lava Hounds", "Bowlers", "Ice Golems", "Clan Castle", "Heroes"]
"Witches", "Lava Hounds", "Bowlers", "Ice Golems", "Headhunters", "Clan Castle", "Heroes"]
EndFunc ;==>LoadTranslatedDropOrderList

Global $g_hChkCustomDropOrderEnable = 0
Expand Down Expand Up @@ -60,7 +60,7 @@ EndFunc ;==>CreateAttackTab

Func CreateDropOrderGUI()

$g_hGUI_DropOrder = _GUICreate(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "GUI_DropOrder", "Attack Custom Dropping Order"), 322, 438, -1, -1, $WS_BORDER, $WS_EX_CONTROLPARENT)
$g_hGUI_DropOrder = _GUICreate(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "GUI_DropOrder", "Attack Custom Dropping Order"), 322, 468, -1, -1, $WS_BORDER, $WS_EX_CONTROLPARENT)
SetDefaultDropOrderGroup(False)
LoadTranslatedDropOrderList()

Expand All @@ -86,7 +86,7 @@ Func CreateDropOrderGUI()

$y += 5
For $p = 0 To $eDropOrderCount - 1
If $p < 12 Then
If $p < 13 Then
GUICtrlCreateLabel($p + 1 & ":", $x - 19, $y + 3, -1, 18)
$g_ahCmbDropOrder[$p] = GUICtrlCreateCombo("", $x, $y, 94, 18, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
GUICtrlSetOnEvent(-1, "GUIDropOrder")
Expand All @@ -96,7 +96,7 @@ Func CreateDropOrderGUI()
$g_ahImgDropOrder[$p] = _GUICtrlCreateIcon($g_sLibIconPath, $eIcnOptions, $x + 96, $y + 1, 18, 18)
$y += 25 ; move down to next combobox location
Else
If $p = 12 Then
If $p = 13 Then
$x += 128
$y = 49
EndIf
Expand All @@ -112,7 +112,7 @@ Func CreateDropOrderGUI()
Next

$x = 25
$y = 350
$y = 380
; Create push button to set training order once completed
$g_hBtnDropOrderSet = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "BtnDropOrderSet", "Apply New Order"), $x, $y, 100, 25)
GUICtrlSetState(-1, BitOR($GUI_UNCHECKED, $GUI_ENABLE))
Expand All @@ -129,7 +129,7 @@ Func CreateDropOrderGUI()
GUICtrlCreateGroup("", -99, -99, 1, 1)

; Create a button control.
Local $g_hBtnClose = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "BtnClose", "Close"), 229, 383, 85, 25)
Local $g_hBtnClose = GUICtrlCreateButton(GetTranslatedFileIni("MBR GUI Design Child Attack - Attack", "BtnClose", "Close"), 229, 413, 85, 25)
GUICtrlSetOnEvent(-1, "CloseCustomDropOrder")

EndFunc ;==>CreateDropOrderGUI
Loading

0 comments on commit 9549470

Please sign in to comment.