From c6c08c79e345499ae4e4643dd13bdd3de0f2f229 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Thu, 10 Apr 2025 23:21:57 +0200 Subject: [PATCH 01/40] initial, menu ok --- install.sh | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++ tschanger.ico | Bin 0 -> 34494 bytes tschanger.sh | 5 +++ 3 files changed, 90 insertions(+) create mode 100644 install.sh create mode 100644 tschanger.ico create mode 100644 tschanger.sh diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..d541cd6 --- /dev/null +++ b/install.sh @@ -0,0 +1,85 @@ +#!/bin/bash + +# === Configuration === +submenuKey="TimestampChanger" +submenuLabel="Timestamp Changer" + +baseKey='HKCR\*\shell' +submenuPath="${baseKey}\\${submenuKey}" +submenuShellPath="${submenuPath}\\shell" + +# === Submenu Item 1 === +item1Key="${submenuShellPath}\\010Backup" +item1Cmd="${item1Key}\\command" +item1Label="Backup" +item1Command='"C:\Program Files\Git\usr\bin\bash.exe" --login -i "E:\git\timestamp-changer\tschanger.sh" "Backup..."' + +# === Submenu Item 2 === +item2Key="${submenuShellPath}\\020Restore" +item2Cmd="${item2Key}\\command" +item2Label="Restore" +item2Command='"C:\Program Files\Git\usr\bin\bash.exe" --login -i "E:\git\timestamp-changer\tschanger.sh" "Restore..."' + +# === Submenu Item 3 === +item3Key="${submenuShellPath}\\030CopyTimestamps" +item3Cmd="${item3Key}\\command" +item3Label="Copy Timestamps" +item3Command='"C:\Program Files\Git\usr\bin\bash.exe" --login -i "E:\git\timestamp-changer\tschanger.sh" "Copy Timestamps..."' + +# === Submenu Item 4 === +item4Key="${submenuShellPath}\\040PasteDateCreated" +item4Cmd="${item4Key}\\command" +item4Label="Paste DateCreated" +item4Command='"C:\Program Files\Git\usr\bin\bash.exe" --login -i "E:\git\timestamp-changer\tschanger.sh" "Paste DateCreated..."' + +# === Submenu Item 5 === +item5Key="${submenuShellPath}\\050PasteDateModified" +item5Cmd="${item5Key}\\command" +item5Label="Paste DateModified" +item5Command='"C:\Program Files\Git\usr\bin\bash.exe" --login -i "E:\git\timestamp-changer\tschanger.sh" "Paste DateModified..."' + +# === Submenu Item 6 === +item6Key="${submenuShellPath}\\060PasteDateCreatedModified" +item6Cmd="${item6Key}\\command" +item6Label="Paste DateCreated and Modified" +item6Command='"C:\Program Files\Git\usr\bin\bash.exe" --login -i "E:\git\timestamp-changer\tschanger.sh" "Paste DateCreated and Modified..."' + +echo "Creating submenu \"$submenuLabel\"..." + +# Remove existing key +#echo "y" | reg.exe delete "$submenuPath" + +if reg.exe query "$submenuPath" > /dev/null 2>&1; then + #echo "y" | reg.exe delete "$submenuPath" + echo "y" | reg.exe delete "$submenuPath" > /dev/null 2>&1 + echo "deleted" +fi + +#exit + +# Create submenu root +reg.exe add "$submenuPath" -v MUIVerb -d "$submenuLabel" -f +reg.exe add "$submenuPath" -v SubCommands -d "" -f +reg.exe add "$submenuPath" -v Icon -d "E:\git\timestamp-changer\tschanger.ico" -f + +# Create submenu items +reg.exe add "$item1Key" -ve -d "$item1Label" -f +reg.exe add "$item1Cmd" -ve -d "$item1Command" -f + +reg.exe add "$item2Key" -ve -d "$item2Label" -f +reg.exe add "$item2Cmd" -ve -d "$item2Command" -f +reg.exe add "$item2Key" -v CommandFlags -t REG_DWORD -d 0x40 -f # separator + +reg.exe add "$item3Key" -ve -d "$item3Label" -f +reg.exe add "$item3Cmd" -ve -d "$item3Command" -f + +reg.exe add "$item4Key" -ve -d "$item4Label" -f +reg.exe add "$item4Cmd" -ve -d "$item4Command" -f + +reg.exe add "$item5Key" -ve -d "$item5Label" -f +reg.exe add "$item5Cmd" -ve -d "$item5Command" -f + +reg.exe add "$item6Key" -ve -d "$item6Label" -f +reg.exe add "$item6Cmd" -ve -d "$item6Command" -f + +echo "Done" diff --git a/tschanger.ico b/tschanger.ico new file mode 100644 index 0000000000000000000000000000000000000000..32d63ff29ae71638c4008e4bf26846aa65d50363 GIT binary patch literal 34494 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 Date: Fri, 11 Apr 2025 07:53:01 +0200 Subject: [PATCH 02/40] install functions --- install.sh | 131 ++++++++++++++++++++--------------------------------- 1 file changed, 50 insertions(+), 81 deletions(-) diff --git a/install.sh b/install.sh index d541cd6..62d55fd 100644 --- a/install.sh +++ b/install.sh @@ -1,85 +1,54 @@ #!/bin/bash -# === Configuration === -submenuKey="TimestampChanger" -submenuLabel="Timestamp Changer" +bashPath="C:\Program Files\Git\usr\bin\bash.exe" +scriptPath="$(cygpath -w "$(pwd)")\tschanger.sh" +iconPath="$(cygpath -w "$(pwd)")\tschanger.ico" +#echo $bashPath +#echo $scriptPath +#echo $iconPath baseKey='HKCR\*\shell' -submenuPath="${baseKey}\\${submenuKey}" -submenuShellPath="${submenuPath}\\shell" - -# === Submenu Item 1 === -item1Key="${submenuShellPath}\\010Backup" -item1Cmd="${item1Key}\\command" -item1Label="Backup" -item1Command='"C:\Program Files\Git\usr\bin\bash.exe" --login -i "E:\git\timestamp-changer\tschanger.sh" "Backup..."' - -# === Submenu Item 2 === -item2Key="${submenuShellPath}\\020Restore" -item2Cmd="${item2Key}\\command" -item2Label="Restore" -item2Command='"C:\Program Files\Git\usr\bin\bash.exe" --login -i "E:\git\timestamp-changer\tschanger.sh" "Restore..."' - -# === Submenu Item 3 === -item3Key="${submenuShellPath}\\030CopyTimestamps" -item3Cmd="${item3Key}\\command" -item3Label="Copy Timestamps" -item3Command='"C:\Program Files\Git\usr\bin\bash.exe" --login -i "E:\git\timestamp-changer\tschanger.sh" "Copy Timestamps..."' - -# === Submenu Item 4 === -item4Key="${submenuShellPath}\\040PasteDateCreated" -item4Cmd="${item4Key}\\command" -item4Label="Paste DateCreated" -item4Command='"C:\Program Files\Git\usr\bin\bash.exe" --login -i "E:\git\timestamp-changer\tschanger.sh" "Paste DateCreated..."' - -# === Submenu Item 5 === -item5Key="${submenuShellPath}\\050PasteDateModified" -item5Cmd="${item5Key}\\command" -item5Label="Paste DateModified" -item5Command='"C:\Program Files\Git\usr\bin\bash.exe" --login -i "E:\git\timestamp-changer\tschanger.sh" "Paste DateModified..."' - -# === Submenu Item 6 === -item6Key="${submenuShellPath}\\060PasteDateCreatedModified" -item6Cmd="${item6Key}\\command" -item6Label="Paste DateCreated and Modified" -item6Command='"C:\Program Files\Git\usr\bin\bash.exe" --login -i "E:\git\timestamp-changer\tschanger.sh" "Paste DateCreated and Modified..."' - -echo "Creating submenu \"$submenuLabel\"..." - -# Remove existing key -#echo "y" | reg.exe delete "$submenuPath" - -if reg.exe query "$submenuPath" > /dev/null 2>&1; then - #echo "y" | reg.exe delete "$submenuPath" - echo "y" | reg.exe delete "$submenuPath" > /dev/null 2>&1 - echo "deleted" -fi - -#exit - -# Create submenu root -reg.exe add "$submenuPath" -v MUIVerb -d "$submenuLabel" -f -reg.exe add "$submenuPath" -v SubCommands -d "" -f -reg.exe add "$submenuPath" -v Icon -d "E:\git\timestamp-changer\tschanger.ico" -f - -# Create submenu items -reg.exe add "$item1Key" -ve -d "$item1Label" -f -reg.exe add "$item1Cmd" -ve -d "$item1Command" -f - -reg.exe add "$item2Key" -ve -d "$item2Label" -f -reg.exe add "$item2Cmd" -ve -d "$item2Command" -f -reg.exe add "$item2Key" -v CommandFlags -t REG_DWORD -d 0x40 -f # separator - -reg.exe add "$item3Key" -ve -d "$item3Label" -f -reg.exe add "$item3Cmd" -ve -d "$item3Command" -f - -reg.exe add "$item4Key" -ve -d "$item4Label" -f -reg.exe add "$item4Cmd" -ve -d "$item4Command" -f - -reg.exe add "$item5Key" -ve -d "$item5Label" -f -reg.exe add "$item5Cmd" -ve -d "$item5Command" -f - -reg.exe add "$item6Key" -ve -d "$item6Label" -f -reg.exe add "$item6Cmd" -ve -d "$item6Command" -f - -echo "Done" +rootKey="$baseKey\\TimestampChanger" +itemPath="$rootKey\\shell" + +function install() { + add_menu_root "$rootKey" "Timestamp Changer" "$iconPath" + add_menu_item "$itemPath\\010Backup" "Backup" "Backup..." + add_menu_item "$itemPath\\020Restore" "Restore" "Restore..." + add_item_sep "$itemPath\\020Restore" + add_menu_item "$itemPath\\030CopyTimestamps" "Copy Timestamps" "Copy Timestamps..." + add_menu_item "$itemPath\\040PasteDateCreated" "Paste DateCreated" "Paste DateCreated..." + add_menu_item "$itemPath\\050PasteDateModified" "Paste DateModified" "Paste DateModified..." + add_menu_item "$itemPath\\060PasteDateCreatedModified" "Paste DateCreated and Modified" "Paste DateCreated and Modified..." + echo "Install done" +} + +function add_menu_root() { + reg.exe add "$1" -v MUIVerb -d "$2" -f + reg.exe add "$1" -v SubCommands -d "" -f + reg.exe add "$1" -v Icon -d "$3" -f +} + +function add_menu_item() { + # key, label, arg + reg.exe add "$1" -ve -d "$2" -f + reg.exe add "$1\\command" -ve -d "\"$bashPath\" --login -i \"$scriptPath\" \"$3\"" -f +} + +function add_item_sep() { + reg.exe add "$1" -v CommandFlags -t REG_DWORD -d 0x40 -f # separator +} + +function uninstall() { + if reg.exe query "$rootKey" > /dev/null 2>&1; then + echo "y" | reg.exe delete "$rootKey" > /dev/null 2>&1 + echo "deleted" + fi +} + +function main() { + uninstall + install +} + +main From b013a2abea65b36453556c0ea7cc9aa0e8d7ecdc Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Fri, 11 Apr 2025 08:09:52 +0200 Subject: [PATCH 03/40] install for both files and folders --- install.sh | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/install.sh b/install.sh index 62d55fd..be06892 100644 --- a/install.sh +++ b/install.sh @@ -7,12 +7,18 @@ iconPath="$(cygpath -w "$(pwd)")\tschanger.ico" #echo $scriptPath #echo $iconPath -baseKey='HKCR\*\shell' -rootKey="$baseKey\\TimestampChanger" -itemPath="$rootKey\\shell" +fRootKey='HKEY_CLASSES_ROOT\*\shell\TimestampChanger' +dRootKey='HKEY_CLASSES_ROOT\Directory\shell\TimestampChanger' function install() { - add_menu_root "$rootKey" "Timestamp Changer" "$iconPath" + install_internal "$fRootKey" + install_internal "$dRootKey" + echo "Install done" +} + +function install_internal() { + itemPath="$1\\shell" + add_menu_root "$1" "Timestamp Changer" "$iconPath" add_menu_item "$itemPath\\010Backup" "Backup" "Backup..." add_menu_item "$itemPath\\020Restore" "Restore" "Restore..." add_item_sep "$itemPath\\020Restore" @@ -20,7 +26,6 @@ function install() { add_menu_item "$itemPath\\040PasteDateCreated" "Paste DateCreated" "Paste DateCreated..." add_menu_item "$itemPath\\050PasteDateModified" "Paste DateModified" "Paste DateModified..." add_menu_item "$itemPath\\060PasteDateCreatedModified" "Paste DateCreated and Modified" "Paste DateCreated and Modified..." - echo "Install done" } function add_menu_root() { @@ -40,9 +45,14 @@ function add_item_sep() { } function uninstall() { - if reg.exe query "$rootKey" > /dev/null 2>&1; then - echo "y" | reg.exe delete "$rootKey" > /dev/null 2>&1 - echo "deleted" + uninstall_internal "$fRootKey" + uninstall_internal "$dRootKey" +} + +function uninstall_internal() { + if reg.exe query "$1" > /dev/null 2>&1; then + echo "y" | reg.exe delete "$1" > /dev/null 2>&1 + echo "deleted $fRootKey" fi } From 9ca3fd5dde184e1fbe2109183c35384930b8e557 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Fri, 11 Apr 2025 14:48:18 +0200 Subject: [PATCH 04/40] selected file/folder arg --- install.sh | 2 +- tschanger.sh | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index be06892..1b09436 100644 --- a/install.sh +++ b/install.sh @@ -37,7 +37,7 @@ function add_menu_root() { function add_menu_item() { # key, label, arg reg.exe add "$1" -ve -d "$2" -f - reg.exe add "$1\\command" -ve -d "\"$bashPath\" --login -i \"$scriptPath\" \"$3\"" -f + reg.exe add "$1\\command" -ve -d "\"$bashPath\" --login -i \"$scriptPath\" \"%1\" \"$3\"" -f } function add_item_sep() { diff --git a/tschanger.sh b/tschanger.sh index 2656b81..a768d40 100644 --- a/tschanger.sh +++ b/tschanger.sh @@ -1,5 +1,7 @@ #!/bin/bash -echo $1 +echo "number of args: $#" +echo "arg1: $1" +echo "arg2: $2" read -p "Press any key to continue..." -n1 -s; echo From ffea535b0aec4beaf1ce89fbc87c9df8ed857a1d Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Fri, 11 Apr 2025 15:13:50 +0200 Subject: [PATCH 05/40] multiselect (not working correctly, runs command for each file) --- install.sh | 2 +- tschanger.sh | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 1b09436..e360248 100644 --- a/install.sh +++ b/install.sh @@ -37,7 +37,7 @@ function add_menu_root() { function add_menu_item() { # key, label, arg reg.exe add "$1" -ve -d "$2" -f - reg.exe add "$1\\command" -ve -d "\"$bashPath\" --login -i \"$scriptPath\" \"%1\" \"$3\"" -f + reg.exe add "$1\\command" -ve -d "\"$bashPath\" --login -i \"$scriptPath\" \"$3\" \"%1\" \"%2\" \"%3\" \"%4\" \"%5\" " -f } function add_item_sep() { diff --git a/tschanger.sh b/tschanger.sh index a768d40..1b8ab5f 100644 --- a/tschanger.sh +++ b/tschanger.sh @@ -3,5 +3,7 @@ echo "number of args: $#" echo "arg1: $1" echo "arg2: $2" +echo "arg3: $3" +echo "arg4: $4" read -p "Press any key to continue..." -n1 -s; echo From a32cd081fc07a5e5f4774d8eb5de603240f9b0b1 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Fri, 11 Apr 2025 22:08:11 +0200 Subject: [PATCH 06/40] copy ok --- install.sh | 16 ++++++++-------- tschanger.sh | 42 ++++++++++++++++++++++++++++++++++++------ 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/install.sh b/install.sh index e360248..d63dbca 100644 --- a/install.sh +++ b/install.sh @@ -19,13 +19,13 @@ function install() { function install_internal() { itemPath="$1\\shell" add_menu_root "$1" "Timestamp Changer" "$iconPath" - add_menu_item "$itemPath\\010Backup" "Backup" "Backup..." - add_menu_item "$itemPath\\020Restore" "Restore" "Restore..." - add_item_sep "$itemPath\\020Restore" - add_menu_item "$itemPath\\030CopyTimestamps" "Copy Timestamps" "Copy Timestamps..." - add_menu_item "$itemPath\\040PasteDateCreated" "Paste DateCreated" "Paste DateCreated..." - add_menu_item "$itemPath\\050PasteDateModified" "Paste DateModified" "Paste DateModified..." - add_menu_item "$itemPath\\060PasteDateCreatedModified" "Paste DateCreated and Modified" "Paste DateCreated and Modified..." + #add_menu_item "$itemPath\\010Backup" "Backup" "backup" + #add_menu_item "$itemPath\\020Restore" "Restore" "restore" + #add_item_sep "$itemPath\\020Restore" + add_menu_item "$itemPath\\030CopyTimestamps" "Copy Timestamps" "copy" + add_menu_item "$itemPath\\040PasteDateCreated" "Paste DateCreated" "pastedc" + add_menu_item "$itemPath\\050PasteDateModified" "Paste DateModified" "pastedm" + add_menu_item "$itemPath\\060PasteDateCreatedModified" "Paste DateCreated and Modified" "pastedcdm" } function add_menu_root() { @@ -37,7 +37,7 @@ function add_menu_root() { function add_menu_item() { # key, label, arg reg.exe add "$1" -ve -d "$2" -f - reg.exe add "$1\\command" -ve -d "\"$bashPath\" --login -i \"$scriptPath\" \"$3\" \"%1\" \"%2\" \"%3\" \"%4\" \"%5\" " -f + reg.exe add "$1\\command" -ve -d "\"$bashPath\" --login -i \"$scriptPath\" \"$3\" \"%1\"" -f } function add_item_sep() { diff --git a/tschanger.sh b/tschanger.sh index 1b8ab5f..9f0e234 100644 --- a/tschanger.sh +++ b/tschanger.sh @@ -1,9 +1,39 @@ #!/bin/bash -echo "number of args: $#" -echo "arg1: $1" -echo "arg2: $2" -echo "arg3: $3" -echo "arg4: $4" +clip_file="$HOME/.tsch" -read -p "Press any key to continue..." -n1 -s; echo +function main { + #echo "number of args: $#" + #echo "func: $1" + #echo "file: $2" + + $1 "$2" + + read -p "Press any key to continue..." -n1 -s; echo +} + +function copy { + dc="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("yyyy-MM-dd HH:mm:ss")')" + dm="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")')" + echo "File: $1" + echo "DateCreated: $dc" + echo "DateModified: $dm" + + echo "$dc" > "$clip_file" + echo "$dm" >> "$clip_file" + echo "Timestamps copied" +} + +function pastedc { + echo "this is pastedc:" +} + +function pastedm { + echo "this is pastedm:" +} + +function pastedcdm { + echo "this is pastedcdm:" +} + +main "$@" From f380fb18b03833da075ed803725ee2919fc72dfc Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Fri, 11 Apr 2025 22:33:33 +0200 Subject: [PATCH 07/40] paste dc ok --- tschanger.sh | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/tschanger.sh b/tschanger.sh index 9f0e234..d766163 100644 --- a/tschanger.sh +++ b/tschanger.sh @@ -25,7 +25,24 @@ function copy { } function pastedc { - echo "this is pastedc:" + dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("yyyy-MM-dd HH:mm:ss")')" + dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")')" + dc_new=$(sed -n '1p' "$clip_file") + dm_new=$(sed -n '2p' "$clip_file") + echo "File: $1" + echo "DateCreated: $dc_old (old)" + echo "DateCreated: $dc_new (new)" + echo "DateModified: $dm_old (old)" + echo "DateModified: $dm_new (new)" + + read -p "Apply changes? (y/n) " yn + if [ "${yn,,}" = "y" ] + then + powershell.exe -Command "(Get-Item '$1').CreationTime=[datetime]::ParseExact('$dc_new', 'yyyy-MM-dd HH:mm:ss', \$null)" + echo "Done" + else + echo "Cancel" + fi } function pastedm { From cb75f474caa514d937237eec4fabc2aefbfdc3ce Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Fri, 11 Apr 2025 22:37:40 +0200 Subject: [PATCH 08/40] paste dm dcdm ok --- tschanger.sh | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/tschanger.sh b/tschanger.sh index d766163..ed98a2f 100644 --- a/tschanger.sh +++ b/tschanger.sh @@ -46,11 +46,46 @@ function pastedc { } function pastedm { - echo "this is pastedm:" + dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("yyyy-MM-dd HH:mm:ss")')" + dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")')" + dc_new=$(sed -n '1p' "$clip_file") + dm_new=$(sed -n '2p' "$clip_file") + echo "File: $1" + echo "DateCreated: $dc_old (old)" + echo "DateCreated: $dc_new (new)" + echo "DateModified: $dm_old (old)" + echo "DateModified: $dm_new (new)" + + read -p "Apply changes? (y/n) " yn + if [ "${yn,,}" = "y" ] + then + powershell.exe -Command "(Get-Item '$1').LastWriteTime=[datetime]::ParseExact('$dm_new', 'yyyy-MM-dd HH:mm:ss', \$null)" + echo "Done" + else + echo "Cancel" + fi } function pastedcdm { - echo "this is pastedcdm:" + dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("yyyy-MM-dd HH:mm:ss")')" + dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")')" + dc_new=$(sed -n '1p' "$clip_file") + dm_new=$(sed -n '2p' "$clip_file") + echo "File: $1" + echo "DateCreated: $dc_old (old)" + echo "DateCreated: $dc_new (new)" + echo "DateModified: $dm_old (old)" + echo "DateModified: $dm_new (new)" + + read -p "Apply changes? (y/n) " yn + if [ "${yn,,}" = "y" ] + then + powershell.exe -Command "(Get-Item '$1').CreationTime=[datetime]::ParseExact('$dc_new', 'yyyy-MM-dd HH:mm:ss', \$null)" + powershell.exe -Command "(Get-Item '$1').LastWriteTime=[datetime]::ParseExact('$dm_new', 'yyyy-MM-dd HH:mm:ss', \$null)" + echo "Done" + else + echo "Cancel" + fi } main "$@" From dd04cbce7d06f6d0b934d68d2726175184ce22c7 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Fri, 11 Apr 2025 22:41:50 +0200 Subject: [PATCH 09/40] guard empty clipboard --- tschanger.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tschanger.sh b/tschanger.sh index ed98a2f..26e9000 100644 --- a/tschanger.sh +++ b/tschanger.sh @@ -25,6 +25,7 @@ function copy { } function pastedc { + guard dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("yyyy-MM-dd HH:mm:ss")')" dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")')" dc_new=$(sed -n '1p' "$clip_file") @@ -46,6 +47,7 @@ function pastedc { } function pastedm { + guard dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("yyyy-MM-dd HH:mm:ss")')" dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")')" dc_new=$(sed -n '1p' "$clip_file") @@ -67,6 +69,7 @@ function pastedm { } function pastedcdm { + guard dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("yyyy-MM-dd HH:mm:ss")')" dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")')" dc_new=$(sed -n '1p' "$clip_file") @@ -88,4 +91,12 @@ function pastedcdm { fi } +function guard() { + if ! [ -f "$clip_file" ]; then + echo "Timestamps clipboard empty" + read -p "Press any key to continue..." -n1 -s; echo + exit 0 + fi +} + main "$@" From f42848152caeb071992926c99a45a0c03279a781 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Fri, 11 Apr 2025 22:56:39 +0200 Subject: [PATCH 10/40] guard datetime format --- tschanger.sh | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/tschanger.sh b/tschanger.sh index 26e9000..084f176 100644 --- a/tschanger.sh +++ b/tschanger.sh @@ -42,7 +42,7 @@ function pastedc { powershell.exe -Command "(Get-Item '$1').CreationTime=[datetime]::ParseExact('$dc_new', 'yyyy-MM-dd HH:mm:ss', \$null)" echo "Done" else - echo "Cancel" + echo "Canceled" fi } @@ -64,7 +64,7 @@ function pastedm { powershell.exe -Command "(Get-Item '$1').LastWriteTime=[datetime]::ParseExact('$dm_new', 'yyyy-MM-dd HH:mm:ss', \$null)" echo "Done" else - echo "Cancel" + echo "Canceled" fi } @@ -87,14 +87,26 @@ function pastedcdm { powershell.exe -Command "(Get-Item '$1').LastWriteTime=[datetime]::ParseExact('$dm_new', 'yyyy-MM-dd HH:mm:ss', \$null)" echo "Done" else - echo "Cancel" + echo "Canceled" fi } function guard() { if ! [ -f "$clip_file" ]; then echo "Timestamps clipboard empty" - read -p "Press any key to continue..." -n1 -s; echo + read -p "Press any key to exit..." -n1 -s; echo + exit 0 + fi + + dc=$(sed -n '1p' "$clip_file") + dm=$(sed -n '2p' "$clip_file") + powershell.exe -Command "[datetime]::ParseExact('$dc', 'yyyy-MM-dd HH:mm:ss', \$null)" > /dev/null && + powershell.exe -Command "[datetime]::ParseExact('$dm', 'yyyy-MM-dd HH:mm:ss', \$null)" > /dev/null + + if [ ! $? -eq 0 ]; + then + echo "Timestamps clipboard corrupted. Copy new timestamps." + read -p "Press any key to exit..." -n1 -s; echo exit 0 fi } From 8040b6fe56947a6e84a3baf7711cabdaa28394af Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Fri, 11 Apr 2025 23:00:27 +0200 Subject: [PATCH 11/40] datetime format const --- tschanger.sh | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/tschanger.sh b/tschanger.sh index 084f176..43b5eda 100644 --- a/tschanger.sh +++ b/tschanger.sh @@ -1,6 +1,7 @@ #!/bin/bash clip_file="$HOME/.tsch" +datetime_format="yyyy-MM-dd HH:mm:ss" function main { #echo "number of args: $#" @@ -13,8 +14,8 @@ function main { } function copy { - dc="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("yyyy-MM-dd HH:mm:ss")')" - dm="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")')" + dc="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("$datetime_format")')" + dm="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("$datetime_format")')" echo "File: $1" echo "DateCreated: $dc" echo "DateModified: $dm" @@ -26,8 +27,8 @@ function copy { function pastedc { guard - dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("yyyy-MM-dd HH:mm:ss")')" - dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")')" + dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("$datetime_format")')" + dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("$datetime_format")')" dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") echo "File: $1" @@ -39,7 +40,7 @@ function pastedc { read -p "Apply changes? (y/n) " yn if [ "${yn,,}" = "y" ] then - powershell.exe -Command "(Get-Item '$1').CreationTime=[datetime]::ParseExact('$dc_new', 'yyyy-MM-dd HH:mm:ss', \$null)" + powershell.exe -Command "(Get-Item '$1').CreationTime=[datetime]::ParseExact('$dc_new', '$datetime_format', \$null)" echo "Done" else echo "Canceled" @@ -48,8 +49,8 @@ function pastedc { function pastedm { guard - dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("yyyy-MM-dd HH:mm:ss")')" - dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")')" + dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("$datetime_format")')" + dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("$datetime_format")')" dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") echo "File: $1" @@ -61,7 +62,7 @@ function pastedm { read -p "Apply changes? (y/n) " yn if [ "${yn,,}" = "y" ] then - powershell.exe -Command "(Get-Item '$1').LastWriteTime=[datetime]::ParseExact('$dm_new', 'yyyy-MM-dd HH:mm:ss', \$null)" + powershell.exe -Command "(Get-Item '$1').LastWriteTime=[datetime]::ParseExact('$dm_new', '$datetime_format', \$null)" echo "Done" else echo "Canceled" @@ -70,8 +71,8 @@ function pastedm { function pastedcdm { guard - dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("yyyy-MM-dd HH:mm:ss")')" - dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")')" + dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("$datetime_format")')" + dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("$datetime_format")')" dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") echo "File: $1" @@ -83,8 +84,8 @@ function pastedcdm { read -p "Apply changes? (y/n) " yn if [ "${yn,,}" = "y" ] then - powershell.exe -Command "(Get-Item '$1').CreationTime=[datetime]::ParseExact('$dc_new', 'yyyy-MM-dd HH:mm:ss', \$null)" - powershell.exe -Command "(Get-Item '$1').LastWriteTime=[datetime]::ParseExact('$dm_new', 'yyyy-MM-dd HH:mm:ss', \$null)" + powershell.exe -Command "(Get-Item '$1').CreationTime=[datetime]::ParseExact('$dc_new', '$datetime_format', \$null)" + powershell.exe -Command "(Get-Item '$1').LastWriteTime=[datetime]::ParseExact('$dm_new', '$datetime_format', \$null)" echo "Done" else echo "Canceled" @@ -93,15 +94,15 @@ function pastedcdm { function guard() { if ! [ -f "$clip_file" ]; then - echo "Timestamps clipboard empty" + echo "Timestamps clipboard empty." read -p "Press any key to exit..." -n1 -s; echo exit 0 fi dc=$(sed -n '1p' "$clip_file") dm=$(sed -n '2p' "$clip_file") - powershell.exe -Command "[datetime]::ParseExact('$dc', 'yyyy-MM-dd HH:mm:ss', \$null)" > /dev/null && - powershell.exe -Command "[datetime]::ParseExact('$dm', 'yyyy-MM-dd HH:mm:ss', \$null)" > /dev/null + powershell.exe -Command "[datetime]::ParseExact('$dc', '$datetime_format', \$null)" > /dev/null && + powershell.exe -Command "[datetime]::ParseExact('$dm', '$datetime_format', \$null)" > /dev/null if [ ! $? -eq 0 ]; then From fa9b088e6a9057627fb181f72c76707473f1a1f4 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Fri, 11 Apr 2025 23:22:25 +0200 Subject: [PATCH 12/40] install menu and cli options --- install.sh | 54 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index d63dbca..bd53dba 100644 --- a/install.sh +++ b/install.sh @@ -10,6 +10,52 @@ iconPath="$(cygpath -w "$(pwd)")\tschanger.ico" fRootKey='HKEY_CLASSES_ROOT\*\shell\TimestampChanger' dRootKey='HKEY_CLASSES_ROOT\Directory\shell\TimestampChanger' +function main() { + if [ "$#" -eq 1 ] + then + case $1 in + "-i") install ;; + "-u") uninstall ;; + esac + else + show_menu + fi +} + +function show_menu() { + set +e + clear + echo + echo -e "Timestamp Changer" + echo " " + echo " [i] Install " + echo " [u] Uninstall " + echo " " + echo " [q] Quit " + echo + read -p "Choose option: " option + clear + __perform_action $option + if [ $option != "q" ] # else "quit" + then + __pause + show_menu + fi +} + +function __perform_action() { + case $1 in + "i") install ;; + "u") uninstall ;; + "q") ;; # do nothing, will quit + *) echo "unknown option: $1" ;; + esac +} + +function __pause() { + read -p "Press any key to continue..." -n1 -s; echo +} + function install() { install_internal "$fRootKey" install_internal "$dRootKey" @@ -47,6 +93,7 @@ function add_item_sep() { function uninstall() { uninstall_internal "$fRootKey" uninstall_internal "$dRootKey" + echo "Uninstall done" } function uninstall_internal() { @@ -56,9 +103,4 @@ function uninstall_internal() { fi } -function main() { - uninstall - install -} - -main +main "$@" From b12c6b976ac760d3796eda19addf3264627fee67 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Fri, 11 Apr 2025 23:49:36 +0200 Subject: [PATCH 13/40] fix for path or name with space --- tschanger.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tschanger.sh b/tschanger.sh index 43b5eda..16d2981 100644 --- a/tschanger.sh +++ b/tschanger.sh @@ -14,8 +14,8 @@ function main { } function copy { - dc="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("$datetime_format")')" - dm="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("$datetime_format")')" + dc="$(powershell.exe -Command '(Get-Item '\"$1\"').CreationTime.ToString('\"$datetime_format\"')')" + dm="$(powershell.exe -Command '(Get-Item '\"$1\"').LastWriteTime.ToString('\"$datetime_format\"')')" echo "File: $1" echo "DateCreated: $dc" echo "DateModified: $dm" @@ -27,8 +27,8 @@ function copy { function pastedc { guard - dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("$datetime_format")')" - dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("$datetime_format")')" + dc_old="$(powershell.exe -Command '(Get-Item '\"$1\"').CreationTime.ToString('\"$datetime_format\"')')" + dm_old="$(powershell.exe -Command '(Get-Item '\"$1\"').LastWriteTime.ToString('\"$datetime_format\"')')" dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") echo "File: $1" @@ -49,8 +49,8 @@ function pastedc { function pastedm { guard - dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("$datetime_format")')" - dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("$datetime_format")')" + dc_old="$(powershell.exe -Command '(Get-Item '\"$1\"').CreationTime.ToString('\"$datetime_format\"')')" + dm_old="$(powershell.exe -Command '(Get-Item '\"$1\"').LastWriteTime.ToString('\"$datetime_format\"')')" dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") echo "File: $1" @@ -71,8 +71,8 @@ function pastedm { function pastedcdm { guard - dc_old="$(powershell.exe -Command '(Get-Item '$1').CreationTime.ToString("$datetime_format")')" - dm_old="$(powershell.exe -Command '(Get-Item '$1').LastWriteTime.ToString("$datetime_format")')" + dc_old="$(powershell.exe -Command '(Get-Item '\"$1\"').CreationTime.ToString('\"$datetime_format\"')')" + dm_old="$(powershell.exe -Command '(Get-Item '\"$1\"').LastWriteTime.ToString('\"$datetime_format\"')')" dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") echo "File: $1" From dd23803663e660827d6ce3b33ace238a9ae6ff1c Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sat, 12 Apr 2025 20:39:27 +0200 Subject: [PATCH 14/40] merge files and rename to tsch --- install.sh | 106 ------------------------------------ tschanger.ico => tsch.ico | Bin tschanger.sh => tsch.sh | 110 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 105 insertions(+), 111 deletions(-) delete mode 100644 install.sh rename tschanger.ico => tsch.ico (100%) rename tschanger.sh => tsch.sh (56%) diff --git a/install.sh b/install.sh deleted file mode 100644 index bd53dba..0000000 --- a/install.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/bash - -bashPath="C:\Program Files\Git\usr\bin\bash.exe" -scriptPath="$(cygpath -w "$(pwd)")\tschanger.sh" -iconPath="$(cygpath -w "$(pwd)")\tschanger.ico" -#echo $bashPath -#echo $scriptPath -#echo $iconPath - -fRootKey='HKEY_CLASSES_ROOT\*\shell\TimestampChanger' -dRootKey='HKEY_CLASSES_ROOT\Directory\shell\TimestampChanger' - -function main() { - if [ "$#" -eq 1 ] - then - case $1 in - "-i") install ;; - "-u") uninstall ;; - esac - else - show_menu - fi -} - -function show_menu() { - set +e - clear - echo - echo -e "Timestamp Changer" - echo " " - echo " [i] Install " - echo " [u] Uninstall " - echo " " - echo " [q] Quit " - echo - read -p "Choose option: " option - clear - __perform_action $option - if [ $option != "q" ] # else "quit" - then - __pause - show_menu - fi -} - -function __perform_action() { - case $1 in - "i") install ;; - "u") uninstall ;; - "q") ;; # do nothing, will quit - *) echo "unknown option: $1" ;; - esac -} - -function __pause() { - read -p "Press any key to continue..." -n1 -s; echo -} - -function install() { - install_internal "$fRootKey" - install_internal "$dRootKey" - echo "Install done" -} - -function install_internal() { - itemPath="$1\\shell" - add_menu_root "$1" "Timestamp Changer" "$iconPath" - #add_menu_item "$itemPath\\010Backup" "Backup" "backup" - #add_menu_item "$itemPath\\020Restore" "Restore" "restore" - #add_item_sep "$itemPath\\020Restore" - add_menu_item "$itemPath\\030CopyTimestamps" "Copy Timestamps" "copy" - add_menu_item "$itemPath\\040PasteDateCreated" "Paste DateCreated" "pastedc" - add_menu_item "$itemPath\\050PasteDateModified" "Paste DateModified" "pastedm" - add_menu_item "$itemPath\\060PasteDateCreatedModified" "Paste DateCreated and Modified" "pastedcdm" -} - -function add_menu_root() { - reg.exe add "$1" -v MUIVerb -d "$2" -f - reg.exe add "$1" -v SubCommands -d "" -f - reg.exe add "$1" -v Icon -d "$3" -f -} - -function add_menu_item() { - # key, label, arg - reg.exe add "$1" -ve -d "$2" -f - reg.exe add "$1\\command" -ve -d "\"$bashPath\" --login -i \"$scriptPath\" \"$3\" \"%1\"" -f -} - -function add_item_sep() { - reg.exe add "$1" -v CommandFlags -t REG_DWORD -d 0x40 -f # separator -} - -function uninstall() { - uninstall_internal "$fRootKey" - uninstall_internal "$dRootKey" - echo "Uninstall done" -} - -function uninstall_internal() { - if reg.exe query "$1" > /dev/null 2>&1; then - echo "y" | reg.exe delete "$1" > /dev/null 2>&1 - echo "deleted $fRootKey" - fi -} - -main "$@" diff --git a/tschanger.ico b/tsch.ico similarity index 100% rename from tschanger.ico rename to tsch.ico diff --git a/tschanger.sh b/tsch.sh similarity index 56% rename from tschanger.sh rename to tsch.sh index 16d2981..a46d7c5 100644 --- a/tschanger.sh +++ b/tsch.sh @@ -1,18 +1,118 @@ #!/bin/bash +##### constants + +bashPath="C:\Program Files\Git\usr\bin\bash.exe" +scriptPath="$(cygpath -w "$(pwd)")\tsch.sh" +iconPath="$(cygpath -w "$(pwd)")\tsch.ico" + +fRootKey='HKEY_CLASSES_ROOT\*\shell\TimestampChanger' +dRootKey='HKEY_CLASSES_ROOT\Directory\shell\TimestampChanger' + clip_file="$HOME/.tsch" datetime_format="yyyy-MM-dd HH:mm:ss" -function main { - #echo "number of args: $#" - #echo "func: $1" - #echo "file: $2" +function main() { + if [ "$#" -eq 1 ] # for install/uninstall + then + case $1 in + "-i") install ;; + "-u") uninstall ;; + esac + elif [ "$#" -eq 2 ] # for copy/paste operations + then + $1 "$2" + __pause + else + show_menu + fi +} - $1 "$2" +##### install/uninstall functions + +function show_menu() { + set +e + clear + echo + echo -e "Timestamp Changer" + echo " " + echo " [i] Install " + echo " [u] Uninstall " + echo " " + echo " [q] Quit " + echo + read -p "Choose option: " option + clear + __perform_action $option + if [ $option != "q" ] # else "quit" + then + __pause + show_menu + fi +} +function __perform_action() { + case $1 in + "i") install ;; + "u") uninstall ;; + "q") ;; # do nothing, will quit + *) echo "unknown option: $1" ;; + esac +} + +function __pause() { read -p "Press any key to continue..." -n1 -s; echo } +function install() { + install_internal "$fRootKey" + install_internal "$dRootKey" + echo "Install done" +} + +function install_internal() { + itemPath="$1\\shell" + add_menu_root "$1" "Timestamp Changer" "$iconPath" + #add_menu_item "$itemPath\\010Backup" "Backup" "backup" + #add_menu_item "$itemPath\\020Restore" "Restore" "restore" + #add_item_sep "$itemPath\\020Restore" + add_menu_item "$itemPath\\030CopyTimestamps" "Copy Timestamps" "copy" + add_menu_item "$itemPath\\040PasteDateCreated" "Paste DateCreated" "pastedc" + add_menu_item "$itemPath\\050PasteDateModified" "Paste DateModified" "pastedm" + add_menu_item "$itemPath\\060PasteDateCreatedModified" "Paste DateCreated and Modified" "pastedcdm" +} + +function add_menu_root() { + reg.exe add "$1" -v MUIVerb -d "$2" -f + reg.exe add "$1" -v SubCommands -d "" -f + reg.exe add "$1" -v Icon -d "$3" -f +} + +function add_menu_item() { + # key, label, arg + reg.exe add "$1" -ve -d "$2" -f + reg.exe add "$1\\command" -ve -d "\"$bashPath\" --login -i \"$scriptPath\" \"$3\" \"%1\"" -f +} + +function add_item_sep() { + reg.exe add "$1" -v CommandFlags -t REG_DWORD -d 0x40 -f # separator +} + +function uninstall() { + uninstall_internal "$fRootKey" + uninstall_internal "$dRootKey" + echo "Uninstall done" +} + +function uninstall_internal() { + if reg.exe query "$1" > /dev/null 2>&1; then + echo "y" | reg.exe delete "$1" > /dev/null 2>&1 + echo "deleted $fRootKey" + fi +} + +##### copy/paste functions + function copy { dc="$(powershell.exe -Command '(Get-Item '\"$1\"').CreationTime.ToString('\"$datetime_format\"')')" dm="$(powershell.exe -Command '(Get-Item '\"$1\"').LastWriteTime.ToString('\"$datetime_format\"')')" From e08733dae8afc4db71bbc37f9df9755b6770987c Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sat, 12 Apr 2025 20:42:06 +0200 Subject: [PATCH 15/40] rm clip file on uninstall --- tsch.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tsch.sh b/tsch.sh index a46d7c5..ea91902 100644 --- a/tsch.sh +++ b/tsch.sh @@ -101,6 +101,7 @@ function add_item_sep() { function uninstall() { uninstall_internal "$fRootKey" uninstall_internal "$dRootKey" + rm -f "$clip_file" echo "Uninstall done" } From 829191f4c93032dbf1baf2b96250834213a50d0a Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sat, 12 Apr 2025 20:47:20 +0200 Subject: [PATCH 16/40] update install/uninstall messages; suppress reg.exe output --- tsch.sh | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/tsch.sh b/tsch.sh index ea91902..b23178c 100644 --- a/tsch.sh +++ b/tsch.sh @@ -65,9 +65,10 @@ function __pause() { } function install() { + echo "Adding keys..." install_internal "$fRootKey" install_internal "$dRootKey" - echo "Install done" + echo "Done" } function install_internal() { @@ -83,32 +84,32 @@ function install_internal() { } function add_menu_root() { - reg.exe add "$1" -v MUIVerb -d "$2" -f - reg.exe add "$1" -v SubCommands -d "" -f - reg.exe add "$1" -v Icon -d "$3" -f + reg.exe add "$1" -v MUIVerb -d "$2" -f > /dev/null 2>&1 + reg.exe add "$1" -v SubCommands -d "" -f > /dev/null 2>&1 + reg.exe add "$1" -v Icon -d "$3" -f > /dev/null 2>&1 } function add_menu_item() { # key, label, arg - reg.exe add "$1" -ve -d "$2" -f - reg.exe add "$1\\command" -ve -d "\"$bashPath\" --login -i \"$scriptPath\" \"$3\" \"%1\"" -f + reg.exe add "$1" -ve -d "$2" -f > /dev/null 2>&1 + reg.exe add "$1\\command" -ve -d "\"$bashPath\" --login -i \"$scriptPath\" \"$3\" \"%1\"" -f > /dev/null 2>&1 } function add_item_sep() { - reg.exe add "$1" -v CommandFlags -t REG_DWORD -d 0x40 -f # separator + reg.exe add "$1" -v CommandFlags -t REG_DWORD -d 0x40 -f > /dev/null 2>&1 # separator } function uninstall() { + echo "Deleting keys..." uninstall_internal "$fRootKey" uninstall_internal "$dRootKey" rm -f "$clip_file" - echo "Uninstall done" + echo "Done" } function uninstall_internal() { if reg.exe query "$1" > /dev/null 2>&1; then echo "y" | reg.exe delete "$1" > /dev/null 2>&1 - echo "deleted $fRootKey" fi } From 6c51480fe2d3cbb864b6ee6f03be72028ce5ed96 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sat, 12 Apr 2025 20:58:25 +0200 Subject: [PATCH 17/40] add help and version args --- tsch.sh | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/tsch.sh b/tsch.sh index b23178c..e5cdfd9 100644 --- a/tsch.sh +++ b/tsch.sh @@ -1,25 +1,26 @@ #!/bin/bash ##### constants - +homepage="https://github.com/jurakovic/timestamp-changer" +version="0.1.0" bashPath="C:\Program Files\Git\usr\bin\bash.exe" scriptPath="$(cygpath -w "$(pwd)")\tsch.sh" iconPath="$(cygpath -w "$(pwd)")\tsch.ico" - fRootKey='HKEY_CLASSES_ROOT\*\shell\TimestampChanger' dRootKey='HKEY_CLASSES_ROOT\Directory\shell\TimestampChanger' - clip_file="$HOME/.tsch" datetime_format="yyyy-MM-dd HH:mm:ss" function main() { - if [ "$#" -eq 1 ] # for install/uninstall + if [ "$#" -eq 1 ] # cli arguments then case $1 in - "-i") install ;; - "-u") uninstall ;; + -i|--install) install ;; + -u|--uninstall) uninstall ;; + -v|--version) echo "$version" ;; + -h|--help) echo "For help visit $homepage" ;; esac - elif [ "$#" -eq 2 ] # for copy/paste operations + elif [ "$#" -eq 2 ] # context menu commands then $1 "$2" __pause @@ -34,7 +35,7 @@ function show_menu() { set +e clear echo - echo -e "Timestamp Changer" + echo -e "Timestamp Changer ($version)" echo " " echo " [i] Install " echo " [u] Uninstall " @@ -113,7 +114,7 @@ function uninstall_internal() { fi } -##### copy/paste functions +##### context menu commands (copy/paste functions) function copy { dc="$(powershell.exe -Command '(Get-Item '\"$1\"').CreationTime.ToString('\"$datetime_format\"')')" From c9bb014914ede4518ada745e6faf3407cf4c59c0 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sat, 12 Apr 2025 21:04:46 +0200 Subject: [PATCH 18/40] rename and reorder context menu items --- tsch.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tsch.sh b/tsch.sh index e5cdfd9..bb34431 100644 --- a/tsch.sh +++ b/tsch.sh @@ -66,7 +66,7 @@ function __pause() { } function install() { - echo "Adding keys..." + echo "Installing..." install_internal "$fRootKey" install_internal "$dRootKey" echo "Done" @@ -75,13 +75,13 @@ function install() { function install_internal() { itemPath="$1\\shell" add_menu_root "$1" "Timestamp Changer" "$iconPath" - #add_menu_item "$itemPath\\010Backup" "Backup" "backup" - #add_menu_item "$itemPath\\020Restore" "Restore" "restore" - #add_item_sep "$itemPath\\020Restore" - add_menu_item "$itemPath\\030CopyTimestamps" "Copy Timestamps" "copy" - add_menu_item "$itemPath\\040PasteDateCreated" "Paste DateCreated" "pastedc" - add_menu_item "$itemPath\\050PasteDateModified" "Paste DateModified" "pastedm" - add_menu_item "$itemPath\\060PasteDateCreatedModified" "Paste DateCreated and Modified" "pastedcdm" + add_menu_item "$itemPath\\010CopyDateCreatedModified" "Copy" "copy" + add_menu_item "$itemPath\\020PasteDateCreatedModified" "Paste" "paste" + add_menu_item "$itemPath\\030PasteDateCreated" "Paste DateCreated" "pastedc" + add_menu_item "$itemPath\\040PasteDateModified" "Paste DateModified" "pastedm" + #add_item_sep "$itemPath\\040PasteDateModified" + #add_menu_item "$itemPath\\050Backup" "Backup" "backup" + #add_menu_item "$itemPath\\060Restore" "Restore" "restore" } function add_menu_root() { @@ -101,7 +101,7 @@ function add_item_sep() { } function uninstall() { - echo "Deleting keys..." + echo "Uninstalling..." uninstall_internal "$fRootKey" uninstall_internal "$dRootKey" rm -f "$clip_file" @@ -172,7 +172,7 @@ function pastedm { fi } -function pastedcdm { +function paste { guard dc_old="$(powershell.exe -Command '(Get-Item '\"$1\"').CreationTime.ToString('\"$datetime_format\"')')" dm_old="$(powershell.exe -Command '(Get-Item '\"$1\"').LastWriteTime.ToString('\"$datetime_format\"')')" From 2fb7d06c3d48593f6ff468a0b4fb7065dba16892 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sat, 12 Apr 2025 21:21:01 +0200 Subject: [PATCH 19/40] highlight diff --- tsch.sh | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/tsch.sh b/tsch.sh index bb34431..fc6284a 100644 --- a/tsch.sh +++ b/tsch.sh @@ -135,10 +135,8 @@ function pastedc { dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") echo "File: $1" - echo "DateCreated: $dc_old (old)" - echo "DateCreated: $dc_new (new)" - echo "DateModified: $dm_old (old)" - echo "DateModified: $dm_new (new)" + highlight_diff "DateCreated: " "$dc_old" "$dc_new" + highlight_diff "DateModified:" "$dm_old" "$dm_old" read -p "Apply changes? (y/n) " yn if [ "${yn,,}" = "y" ] @@ -157,10 +155,8 @@ function pastedm { dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") echo "File: $1" - echo "DateCreated: $dc_old (old)" - echo "DateCreated: $dc_new (new)" - echo "DateModified: $dm_old (old)" - echo "DateModified: $dm_new (new)" + highlight_diff "DateCreated: " "$dc_old" "$dc_old" + highlight_diff "DateModified:" "$dm_old" "$dm_new" read -p "Apply changes? (y/n) " yn if [ "${yn,,}" = "y" ] @@ -179,10 +175,8 @@ function paste { dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") echo "File: $1" - echo "DateCreated: $dc_old (old)" - echo "DateCreated: $dc_new (new)" - echo "DateModified: $dm_old (old)" - echo "DateModified: $dm_new (new)" + highlight_diff "DateCreated: " "$dc_old" "$dc_new" + highlight_diff "DateModified:" "$dm_old" "$dm_new" read -p "Apply changes? (y/n) " yn if [ "${yn,,}" = "y" ] @@ -215,4 +209,22 @@ function guard() { fi } +function highlight_diff() { + local label="$1" + local old="$2" + local new="$3" + + local reset="\033[0m" + local green="\033[1;32m" + local dim="\033[2m" + + echo -e "$label ${dim}${old} (old)$reset" + + if [[ "$old" != "$new" ]]; then + echo -e "$label ${green}${new} (new)$reset" + else + echo -e "$label ${dim}${new} (new)$reset" + fi +} + main "$@" From 903b9f836ad9b1abf0101b4ff57aa4deeeb69d13 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sat, 12 Apr 2025 21:35:42 +0200 Subject: [PATCH 20/40] highlight different datetime parts --- tsch.sh | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/tsch.sh b/tsch.sh index fc6284a..8f3ba58 100644 --- a/tsch.sh +++ b/tsch.sh @@ -220,11 +220,35 @@ function highlight_diff() { echo -e "$label ${dim}${old} (old)$reset" - if [[ "$old" != "$new" ]]; then - echo -e "$label ${green}${new} (new)$reset" - else - echo -e "$label ${dim}${new} (new)$reset" - fi + echo -n "$label " + + IFS='- :' + read -r old_y old_m old_d old_H old_M old_S <<< "$old" + read -r new_y new_m new_d new_H new_M new_S <<< "$new" + unset IFS + + color_part() { + local old_val="$1" + local new_val="$2" + if [[ "$old_val" == "$new_val" ]]; then + echo -ne "${dim}${new_val}${reset}" + else + echo -ne "${green}${new_val}${reset}" + fi + } + + color_part "$old_y" "$new_y" + echo -ne "${dim}-${reset}" + color_part "$old_m" "$new_m" + echo -ne "${dim}-${reset}" + color_part "$old_d" "$new_d" + echo -n " " + color_part "$old_H" "$new_H" + echo -ne "${dim}:${reset}" + color_part "$old_M" "$new_M" + echo -ne "${dim}:${reset}" + color_part "$old_S" "$new_S" + echo -e " (new)" } main "$@" From d689594080d4278227ea49b3777943dcf241f21b Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sat, 12 Apr 2025 21:40:11 +0200 Subject: [PATCH 21/40] set (new) color --- tsch.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tsch.sh b/tsch.sh index 8f3ba58..617865c 100644 --- a/tsch.sh +++ b/tsch.sh @@ -217,11 +217,12 @@ function highlight_diff() { local reset="\033[0m" local green="\033[1;32m" local dim="\033[2m" + local changed=0 echo -e "$label ${dim}${old} (old)$reset" echo -n "$label " - + IFS='- :' read -r old_y old_m old_d old_H old_M old_S <<< "$old" read -r new_y new_m new_d new_H new_M new_S <<< "$new" @@ -234,6 +235,7 @@ function highlight_diff() { echo -ne "${dim}${new_val}${reset}" else echo -ne "${green}${new_val}${reset}" + changed=1 fi } @@ -248,7 +250,12 @@ function highlight_diff() { color_part "$old_M" "$new_M" echo -ne "${dim}:${reset}" color_part "$old_S" "$new_S" - echo -e " (new)" + + if [[ "$changed" -eq 1 ]]; then + echo -e " ${green}(new)${reset}" + else + echo -e " ${dim}(new)${reset}" + fi } main "$@" From f1104ee30e3bbe3cb78548fa1f56625e36848fad Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sat, 12 Apr 2025 21:49:21 +0200 Subject: [PATCH 22/40] remove dim; add spaces on output --- tsch.sh | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/tsch.sh b/tsch.sh index 617865c..0d59407 100644 --- a/tsch.sh +++ b/tsch.sh @@ -135,9 +135,11 @@ function pastedc { dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") echo "File: $1" + echo "---" highlight_diff "DateCreated: " "$dc_old" "$dc_new" + echo "---" highlight_diff "DateModified:" "$dm_old" "$dm_old" - + echo "---" read -p "Apply changes? (y/n) " yn if [ "${yn,,}" = "y" ] then @@ -155,9 +157,11 @@ function pastedm { dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") echo "File: $1" + echo "---" highlight_diff "DateCreated: " "$dc_old" "$dc_old" + echo "---" highlight_diff "DateModified:" "$dm_old" "$dm_new" - + echo "---" read -p "Apply changes? (y/n) " yn if [ "${yn,,}" = "y" ] then @@ -175,9 +179,11 @@ function paste { dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") echo "File: $1" + echo "---" highlight_diff "DateCreated: " "$dc_old" "$dc_new" + echo "---" highlight_diff "DateModified:" "$dm_old" "$dm_new" - + echo "---" read -p "Apply changes? (y/n) " yn if [ "${yn,,}" = "y" ] then @@ -216,10 +222,9 @@ function highlight_diff() { local reset="\033[0m" local green="\033[1;32m" - local dim="\033[2m" local changed=0 - echo -e "$label ${dim}${old} (old)$reset" + echo -e "$label $old (old)$reset" echo -n "$label " @@ -232,7 +237,7 @@ function highlight_diff() { local old_val="$1" local new_val="$2" if [[ "$old_val" == "$new_val" ]]; then - echo -ne "${dim}${new_val}${reset}" + echo -ne "${new_val}${reset}" else echo -ne "${green}${new_val}${reset}" changed=1 @@ -240,21 +245,21 @@ function highlight_diff() { } color_part "$old_y" "$new_y" - echo -ne "${dim}-${reset}" + echo -ne "-" color_part "$old_m" "$new_m" - echo -ne "${dim}-${reset}" + echo -ne "-" color_part "$old_d" "$new_d" echo -n " " color_part "$old_H" "$new_H" - echo -ne "${dim}:${reset}" + echo -ne ":" color_part "$old_M" "$new_M" - echo -ne "${dim}:${reset}" + echo -ne ":" color_part "$old_S" "$new_S" if [[ "$changed" -eq 1 ]]; then echo -e " ${green}(new)${reset}" else - echo -e " ${dim}(new)${reset}" + echo -e " (new)${reset}" fi } From ad748aa2fdf01faa44d01f0cccb19c34439c63a6 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sat, 12 Apr 2025 21:53:43 +0200 Subject: [PATCH 23/40] pause/exit handling --- tsch.sh | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tsch.sh b/tsch.sh index 0d59407..74772bb 100644 --- a/tsch.sh +++ b/tsch.sh @@ -23,7 +23,7 @@ function main() { elif [ "$#" -eq 2 ] # context menu commands then $1 "$2" - __pause + read -p "Press any key to exit..." -n1 -s; echo else show_menu fi @@ -47,7 +47,7 @@ function show_menu() { __perform_action $option if [ $option != "q" ] # else "quit" then - __pause + read -p "Press any key to continue..." -n1 -s; echo show_menu fi } @@ -61,10 +61,6 @@ function __perform_action() { esac } -function __pause() { - read -p "Press any key to continue..." -n1 -s; echo -} - function install() { echo "Installing..." install_internal "$fRootKey" From 2c747a4850d0debb146a4ad1bcb9dcfec53cbd54 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sat, 12 Apr 2025 22:27:43 +0200 Subject: [PATCH 24/40] change paste items label --- tsch.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tsch.sh b/tsch.sh index 74772bb..b51f3f1 100644 --- a/tsch.sh +++ b/tsch.sh @@ -73,8 +73,8 @@ function install_internal() { add_menu_root "$1" "Timestamp Changer" "$iconPath" add_menu_item "$itemPath\\010CopyDateCreatedModified" "Copy" "copy" add_menu_item "$itemPath\\020PasteDateCreatedModified" "Paste" "paste" - add_menu_item "$itemPath\\030PasteDateCreated" "Paste DateCreated" "pastedc" - add_menu_item "$itemPath\\040PasteDateModified" "Paste DateModified" "pastedm" + add_menu_item "$itemPath\\030PasteDateCreated" "Paste \"Date created\"" "pastedc" + add_menu_item "$itemPath\\040PasteDateModified" "Paste \"Date modified\"" "pastedm" #add_item_sep "$itemPath\\040PasteDateModified" #add_menu_item "$itemPath\\050Backup" "Backup" "backup" #add_menu_item "$itemPath\\060Restore" "Restore" "restore" From 1da1b60f4901088fa559c6694c21f624b301d3b9 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sun, 13 Apr 2025 13:35:46 +0200 Subject: [PATCH 25/40] cleanup --- tsch.sh | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/tsch.sh b/tsch.sh index b51f3f1..de95049 100644 --- a/tsch.sh +++ b/tsch.sh @@ -73,11 +73,8 @@ function install_internal() { add_menu_root "$1" "Timestamp Changer" "$iconPath" add_menu_item "$itemPath\\010CopyDateCreatedModified" "Copy" "copy" add_menu_item "$itemPath\\020PasteDateCreatedModified" "Paste" "paste" - add_menu_item "$itemPath\\030PasteDateCreated" "Paste \"Date created\"" "pastedc" - add_menu_item "$itemPath\\040PasteDateModified" "Paste \"Date modified\"" "pastedm" - #add_item_sep "$itemPath\\040PasteDateModified" - #add_menu_item "$itemPath\\050Backup" "Backup" "backup" - #add_menu_item "$itemPath\\060Restore" "Restore" "restore" + add_menu_item "$itemPath\\030PasteDateCreated" "Paste 'Date created'" "pastedc" + add_menu_item "$itemPath\\040PasteDateModified" "Paste 'Date modified'" "pastedm" } function add_menu_root() { @@ -92,10 +89,6 @@ function add_menu_item() { reg.exe add "$1\\command" -ve -d "\"$bashPath\" --login -i \"$scriptPath\" \"$3\" \"%1\"" -f > /dev/null 2>&1 } -function add_item_sep() { - reg.exe add "$1" -v CommandFlags -t REG_DWORD -d 0x40 -f > /dev/null 2>&1 # separator -} - function uninstall() { echo "Uninstalling..." uninstall_internal "$fRootKey" From 9d54090e1d59309b6f163d729145bce9cc731ef1 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sun, 13 Apr 2025 13:40:38 +0200 Subject: [PATCH 26/40] admin check on install --- tsch.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tsch.sh b/tsch.sh index de95049..2b1111f 100644 --- a/tsch.sh +++ b/tsch.sh @@ -62,6 +62,12 @@ function __perform_action() { } function install() { + net session 1>/dev/null 2>/dev/null + if [ ! $? -eq 0 ]; then + read -p "Not running as Admin. Press any key to exit..." -n1 -s; echo + exit 1 + fi + echo "Installing..." install_internal "$fRootKey" install_internal "$dRootKey" From e93915c400f74ff2c31b246ebe60df6926c45acf Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sun, 13 Apr 2025 13:56:05 +0200 Subject: [PATCH 27/40] add readme, licence, gh pages config --- LICENCE | 21 +++++++++++++++++++++ README.md | 2 ++ _config.yml | 3 +++ 3 files changed, 26 insertions(+) create mode 100644 LICENCE create mode 100644 README.md create mode 100644 _config.yml diff --git a/LICENCE b/LICENCE new file mode 100644 index 0000000..137d958 --- /dev/null +++ b/LICENCE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 jurakovic + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e79255d --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ + +# Timestamp Changer diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..6a6f62b --- /dev/null +++ b/_config.yml @@ -0,0 +1,3 @@ +remote_theme: jurakovic/cayman-blue +google_analytics: G-233EMZJM16 +dark_theme: true From 82f407be3a8d8a77ca4e27374350c7f9b75bc742 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sun, 13 Apr 2025 21:39:43 +0200 Subject: [PATCH 28/40] update readme --- README.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e79255d..b55003d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,56 @@ - -# Timestamp Changer + +# Timestamp Changer + +Timestamps Changer is a lightweight Bash and PowerShell-based utility that integrates directly into the Windows File Explorer context menu, enabling you to **copy** and **paste** file and folder timestamps with ease. + +This tool is especially useful when you need to preserve or replicate Date Created and Date Modified values across files or folders – ideal for organizing backups, restoring files, or syncing metadata. + +### Features + +#### Explorer Context Menu Integration + +Adds convenient right-click options for both files and folders: + +`🕗 Timestamp Changer` +    `Copy` +    `Paste` +    `Paste 'Date Created'` +    `Paste 'Date Modified'` + +#### Copy Mode + +Stores the selected file or folder's Date Created and Date Modified timestamps for reuse. + +#### Paste Mode + +Applies the previously copied timestamps to the currently selected file or folder. + +#### Selective Timestamp Paste + +Use the specific `Paste 'Date Created'` or `Paste 'Date Modified'` options to update only the desired timestamp. + +### Usage + +Right-click on a file or folder and choose `Copy` under the context menu. +This saves the timestamps to a temporary location ("clipboard"). + +Right-click on another file or folder and choose: + +`Paste` – to apply both timestamps + +`Paste 'Date Created'` – to apply only the creation date + +`Paste 'Date Modified'` – to apply only the modified date + +### Requirements + +Windows 10/11 + +PowerShell 5.1 or later + +Admin privileges for initial context menu setup + +### Installation + +### References + From 5199cc4ee08f1860f77abd70a41b0b9af371d610 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sun, 13 Apr 2025 22:26:20 +0200 Subject: [PATCH 29/40] add requirements (bash), add installation --- README.md | 59 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 51 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index b55003d..0535f7c 100644 --- a/README.md +++ b/README.md @@ -36,21 +36,64 @@ This saves the timestamps to a temporary location ("clipboard"). Right-click on another file or folder and choose: -`Paste` – to apply both timestamps - -`Paste 'Date Created'` – to apply only the creation date - -`Paste 'Date Modified'` – to apply only the modified date +`Paste` – to apply both timestamps +`Paste 'Date Created'` – to apply only the creation date +`Paste 'Date Modified'` – to apply only the modified date ### Requirements -Windows 10/11 +Windows 10/11 (Tested only on Windows 11 24H2) +PowerShell 5.1 or later +Bash + +#### Bash on Windows -PowerShell 5.1 or later +Bash on Windows can be installed in several ways, including: +- [Git for Windows](https://gitforwindows.org) (comes with the MSYS2 runtime – [Git for Windows flavor](https://github.com/git-for-windows/build-extra/blob/main/ReleaseNotes.md)) +- [MSYS2](https://www.msys2.org) +- [Cygwin](https://cygwin.com) +- [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) -Admin privileges for initial context menu setup +> The recommended way is to use **Git for Windows** (MSYS2) as it provides a lightweight and user-friendly environment for running Bash scripts on Windows. +> This repository is designed to work with the MSYS2 runtime that comes with Git for Windows. +> It works with the official MSYS2 runtime too, but it doesnt't work with Cygwin or WSL. It could work with some minor modifications, but I don't have the time to do it. ### Installation +1. Clone or download the repository to your local machine. + ```bash + git clone https://github.com/jurakovic/timestamp-changer.git + ``` +2. Open a Bash terminal with admin privileges. +3. Navigate to the directory where you cloned or downloaded the repository. + ```bash + cd timestamp-changer + ``` +4. Add the context menu entries. It can be done in two ways. + Run the `tsch.sh` script + ```bash + ./tsch.sh + ``` + + and then choose the option `i` + ```text + Timestamp Changer (0.1.0) + + [i] Install + [u] Uninstall + + [q] Quit + + Choose option: + ``` + + or run the script with the `-i` option to install it directly: + ```bash + ./tsch.sh -i + ``` + +### Screenshots + + ### References From ec884ef61a2553022e3ff5347ff5e0d1300c87d9 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sun, 13 Apr 2025 23:04:09 +0200 Subject: [PATCH 30/40] add screenshots --- README.md | 31 +++++++++++++++++++++---------- img/1contextmenu.png | Bin 0 -> 54248 bytes img/2copy.png | Bin 0 -> 5971 bytes img/3paste.png | Bin 0 -> 7077 bytes img/4pastedone.png | Bin 0 -> 7734 bytes 5 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 img/1contextmenu.png create mode 100644 img/2copy.png create mode 100644 img/3paste.png create mode 100644 img/4pastedone.png diff --git a/README.md b/README.md index 0535f7c..cf8d712 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,15 @@ This tool is especially useful when you need to preserve or replicate Date Creat Adds convenient right-click options for both files and folders: + + +![ContextMenu](img/1contextmenu.png) #### Copy Mode @@ -40,23 +44,22 @@ Right-click on another file or folder and choose: `Paste 'Date Created'` – to apply only the creation date `Paste 'Date Modified'` – to apply only the modified date +Each entry starts Bash terminal and runs the `tsch.sh` script with the appropriate parameters (example screenshots below). + ### Requirements Windows 10/11 (Tested only on Windows 11 24H2) PowerShell 5.1 or later Bash -#### Bash on Windows - -Bash on Windows can be installed in several ways, including: -- [Git for Windows](https://gitforwindows.org) (comes with the MSYS2 runtime – [Git for Windows flavor](https://github.com/git-for-windows/build-extra/blob/main/ReleaseNotes.md)) -- [MSYS2](https://www.msys2.org) -- [Cygwin](https://cygwin.com) -- [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) - +> **Bash on Windows** can be installed in several ways, including: +> - [Git for Windows](https://gitforwindows.org) (comes with the MSYS2 runtime – [Git for Windows flavor](https://github.com/git-for-windows/build-extra/blob/main/ReleaseNotes.md)) +> - [MSYS2](https://www.msys2.org) +> - [Cygwin](https://cygwin.com) +> - [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) +> > The recommended way is to use **Git for Windows** (MSYS2) as it provides a lightweight and user-friendly environment for running Bash scripts on Windows. -> This repository is designed to work with the MSYS2 runtime that comes with Git for Windows. -> It works with the official MSYS2 runtime too, but it doesnt't work with Cygwin or WSL. It could work with some minor modifications, but I don't have the time to do it. +> This repository is designed to work with the Git for Windows (MSYS2). It works with the official MSYS2 runtime too, but it doesnt't work with Cygwin or WSL. It could work with some minor modifications, but I don't plan to do it. ### Installation @@ -94,6 +97,14 @@ Bash on Windows can be installed in several ways, including: ### Screenshots +Copy +![Copy](img/2copy.png) + +Paste (confirmation) +![Copy](img/3paste.png) + +Paste (done) +![Copy](img/4pastedone.png) ### References diff --git a/img/1contextmenu.png b/img/1contextmenu.png new file mode 100644 index 0000000000000000000000000000000000000000..517dbde8abffa7ffd9590b10c87ecb6cde9e67d7 GIT binary patch literal 54248 zcmZ5|1yCGK)GY*ecY+03+}(pai$ib??ykYz-QC?1g1fs04NhGO;qTJ#|2}0@t*fX~~$&$k0K+11B&Lgpe>0kid~Fuo3<5G0++a5G2%p z_3!Orh5P`44(xS+%`y!7zj`a+_`M*zLqZ%u{lESHcT))9t#~*HXy8f~Hg*=s{QvpZ z_dCMm|Iari1IO>>1Ms~c{<~6zmj^id-%qi!u)M!}e$0qJGyzmY%%#bQi>i6(pT2lz zt1qT-#pbDs7%{}tSx|^=^aW6>ELwsy#A8I%Eiva_+~^JI-8R4T%a?AQg9x(uG8Lo6 z?rFdS=ih^%FlLI`X;nhXe+P&+tX0nOP^uskhQ(??rpn^DPT$8JZXOD`*Z4BQd-~^X z-QTxQ!;Skc>3g5GEN@!pbl&scpZ@!|8y7bQ+I`DIA8w#Z0S^s}hfpPhB?-)u8-$a^ zEPy>wCn@0b?-CT5NZCtgzEW=_MdG=aAhq;6@s?8N$DHV@?tvwkSPHDBg+Ay=JnWbl z_JwZHF}g8=R=u1fG9HCe2D2!WQie=8PtF!6_k-d*BBiuEmIQx%k_d)9h5%y(D6BI>v`zl{b!Rh>W%$&ciw*S_wJ5LCiRww zX<&>}hUe{5!XHp%Om{y@WM>J>RdN84+`t6ymjc5E3$+19U2v}mZt#5x=Ch0aF~O}Z z)DWT4o|%p|DRT$ta|_#Rh1ema-BbyW*^Y}7+xJY9B|r?z|qg_5#Ige&qhhANCJ znHC1K?*xqWGIf2p#_aO)JZMf*6n!hR^fcLf^ z_POGJvtb7uNk6AW75s)l3*Mufd|RY5fpyY7Kq|)!0IzWeqnfWrD^E-PT;XYrB-7$j z=n8W>SiqbQIKr~Tyj6)YOy&kNWK9+}h(0h7*?d^5N*j9ZGE^qb3nk_ZXa2hSSrX|-nYe5 z3*nC~@qnMc);z!ft2z#fZIGVE8MiK)-{28OV?0}2;EMTBcSDkEZ{k>WefeB!g%j0$ zWvj}}>s!K5m7OUOKNTs0)=E`FCd%j8kwd$swRmF5FkQJQKGDaqq@{F+ysEoMCPqBm z+1V-e(KXpA6+F~ifX0Ii_ae?mLn8J$i&R z800wrz~1%s37uO8t!^!US#}n2#&k&rd=@2y13I;QyxKI9g{_l=d8>weYAdBo443KY zV_9kXqG+*i2sskx@uU;Q2Sc{ljvF~qWjd*}!ln--n0i`6T=Y?e8_4Hymp(_fa!7NFul*GG$_;T`kvLQz{YjL3PsW5j zn-X?W)vI1lM-zc}3^&;jGgxwwV>Fm+QtkUzBVfm5Af0-o!smbV$ovF>E(L|IozZ^^ zDRy9CE}|%E=WjAXewjA#JMxR%>{%ucd1z$L_j?$2$;!o1R6il&;Ms2#>RZJj6d?!} z@AXMu{Vh4bC1MXVE#p2J~%7Y)A8`Bf2 z#LV_1csr34q$$9{w6VS(5Gl-O%IgQ~S;evXgqKzqn@=#mw0C#=U1UDN>g@>EG3c$?ByXNy;+P=XVWOh|FXeimvO2hu<(*RFUox)|kd!Oak~upH#i zeZ}p7E7IORCXPO|<}pkS#ffn*O=v7j!;PV#q5S7ROopN} z?l;@nE}(e1=a+*LDMt@zvLHV3B}|X@^2jQ>5Fh&W{^25xiVWw8A!rNn@4}|?fRR32 zW7#uGUD`GK!0?%3|DS9W4zq41p)ak-iA0PcS6x0H;twW6R~#H1K7Z3x75Tul%}QCw ztV+CvYzg?qdce?O{#v=%s;LjTF%pazppg@!B zv19LdlVvuZDgkb^`PGPL;Bz&ArDS7cGl2x{y{QM*uVg@edmb12hMsCKKb0dgUez~J zW#-(S3l;}Qe=oW;_p6->Y$wFK`xbz(`&WkrKV5!7nY>U>6a|+fZLFFf;rS%*Ulpsm zZBd+^MU_{V9$ivew69tOCn0+y{QTJNA1k+hdmSA~0yva*LnTZsECq_l!ormH(a1!Q zOruQl*Z8R2K5Wj&!awt6Xe0vvu7*humv)HkJ6Js~e*<;QS}ff)HD|9+7ybts7PHdbB-zbw{P-wTPyW$&?3KQ4pT%+luTkx883%>=uxtu30+KSNhnS5f-s z$@bWx^*&syL^+WFpji;o22S5+$a%5I70eEF zpcytwYg!7`h;vqdqakdnck8dnEWX0ODgC1>Ne~9#WXSBqHAA@?kBPuOWS9MAVHj*@ z7Z#)BNGG&{!P}OHX}j^0Qz^O#R9RV>$?JU3k0vbOv^P>!`?HcMsqJs3wcmaF*5dLq zvv%X&ib-6j?=Ln7|I1!Dc8e+9?{*s_37-xpGN86$4hwV~I3LTL3n&J4nIOQu!(^cG z)eO0e3^_hI7*5EEi**E*4ln)c=|#Col*(b9c!{44 zrph|Nw1_wnijCREVW5`yJ;6zTuakm1*Q_gTm(2NUW?zM0rts&_pCCHunKXT`iuU%W z?J&~KcK3^Lj8B=FSyiFP4-*zb^P8J~fMKGN2&8}hd-`jBVE{zvn22JJe{B`!jJIMjyjGUtI(&MqU+bc$#GXAG3Kk zvw1nnXwx;k!9{R*>W7d#Yc?EO3v{|}arSZ0uCgKCDLD8y-eHlH5j%aXb5^c7rp{#p zWuLc5Vip!2l}vJ+4t&CVse;&gbm3kwmf}jgd)Ch?4S@$AaroA>`6kX_j+wMx|LOr>IzzZEQehxT5C)qep;9NglLORf*ItMSzqY# zvK~so==ZH$drzDKzwdVLJ`HY>eXd!`r%1lg1;;G;ssY_YzBuC9u*ljdT9Q!k#sou@ zebiAjRv=@vZa>Lv+-}&pAcLK#2&7$a*lQtllMzG2-P+npCZFSTJ-WEKxPs}s6G5|7 zXVC3_u{oMVv%IuK4R#sr@cjENF`#m%&R3~^rR0zOZ)UG>=*bXBBc`m$M*@0`WSfq( zG-Nok#&85Is{Ao)MyfGFz6rDN-o|XG!~zz!>o~6tn1Dd+Z-0{&lScDvRI@-th@~=@ zxPN^C#0>|hSC3~#7X7cJreJ{8fP#)N*=2vd>6DmO^QbWDKkf>3g*^h^@AYwO|pg zO0eg2vqdnPf+CUO^TjD8(QppJYA@*H?kHkPO$^&aR|CU7(a5Ur$c!dZIeAlH9v&j1 zCjNtb`p=HaJ=%n-NKe?~q$ND6YBiv_VSSK9Ww~C*u^-oNie^w*a)T4z9(A|ZGB+nD zFu7?d3K(cTtl5X#4SNG0ZVv0dd_TV)XZ}uD+&`W57inXhT}~}hV{DJYOw>UFDqqAJ^FicBYJ!p^8d&o&n z7qh=i!5Khig)6c>@;AfmpyEd-Wt1TVDt%bqJA#9?phz@m>O7&c_R_lWe8fx{^8K8$%w+ zqJMtH=oeC(EwxcFBo;RgkHnMIJ_=;%`+Ghp07#cXL$@l z7}T-mG_e0_)-V0lJ%+qf4lc^|K5x^l0T5h0Jo8FXdA*L*da;<{&jlU zqVOs=B%fV>WYH+2Ct_WD# z%|8&Jg?5tTCBd8G&|iuZgIfM+c>Dw0YyN9#IA(8MNj!Y*e2@;o$Ay2n8J8M#?f}tnVDp;4aUO}U3_4|*7+dF`ie~;HNqy*`$&J!`yoNk0rn1h*IN|dUqb}m zXVD|ak?RHQ#zFz=hW&8h^$>tj(h&44NxvwLRho=fI}<@^jUY)tMfeH-E5^<5wW?x; z8?VOXH1tzDr7JcCSB65|cl;bY#n*YblZ7Y2+;-@1I10{vVl_)NVZ7XbjZ27$hEAr4 zo0#TctwypFfmNA%4p!Dg5VD<-yO6dNkNK2oh%4u**f%a(F*kL}C{m2Wp`d}F))<_- zFcuejiSCGdIrxoi@N1P7UPI}8kSj*lS!xjgHxLQ=Ty^*1Twaxk2SdmRhgoxLXcA)e zYRCTw@aabtIWVznDz3{u^9>(<46xiCrKUduySVP&=!{`=q*&o5G>P~f7mF8V9V8ma zRdA>e{pdX8Zu#1N9U2ql6xiYnW4oa23z`|>08RF2{%EF{KgJxCgGWnMFkvc+j)U>- z)5o`RB>wc_z<(ykVhlz&`a}dfqM=vYp;?zr_~*@V)qYbUh;~IrU$bv3O4zy7AAJT7$25+ zgue2>)_ERLYY^4QDbhPr6TRod@ib00b+$L64#^pT-qK-?bpWe1uQL^XQarj0eIiGx z;B}w-Hd$amhOnVL5rl`85}o9I!AYV|F@PVrJeko*zb|*KcY<-AbugIdurDk4=g#-^ zYZLY~y1hNk0~lDw)Uf-;{M|F|%p(&xDl1wnyair@rVbx8#zMB3DtdNII^9F-;$#P> z6xGk_jCQME3|C3jzH|6OU}XhLD$D-iBE)ZPZnRWjKVSrgQy5B)M@>1)$aS2H(=5A` zQXx+){SN5uKn475-Q-_6I_cF9gnsUB^Ei{&AD}7!5TRjI5AIJnf10(5(uPV9bQ@E3 z=_50>2V}mMSY`{2mv5_6HHW7*!jAQ;70)mf2N{qlKDjkEKCBibhN|gIFB91`&b^GA znrajtSV?r{BQh673-ck?4Jf5M0M4DCb!7*HhvS-F`*13ubDgkk@OlH&&+3!}di>SM zJ^j%!k&WZ+Fz&&`12JL;G)f)v{rJXt;e!~-kRYHJv66Ti4`^5Sjmtpsyrfdh9Xs_x z6d0CR+OMSV=qHzf)O2RVspf>D2(3zT3tKMPY|kr16*5E%VB}AdMMH?pw|wS%I0k*3 zFJ+(oUl09pum00oW)Fqk&es#Z1k*gs5J<^zaldK|m?xkwu_v9}Ov{bj76DOwmYGPhm|oczVCABE!7`GD>3+1k_WPxt$?wJ86W z7hf5!?e5oCA@gkmQ5`$zL+G7Fubws)yB|bhkmQjR+PguO+98d}`A!_mVFiYZLos)W zEa$R?bB;0yyBE<8^1N%f_CI=nB{|H(l2K2m6h~)$ZAjK5mUA-F2Rsbn*i!R zm^Kh`58w4ztOPz^Q#ie_v}Cv1jF5eHcJ|4%*oFEN_@T5$H&LCs-+&S zhT2NBfY%RwBd3-UuB8xwk1Q-N@g7FOL$mv{IXl<6i>H^Pbn554754JWCUKJbN$Awy z_&%%q=vbWT)o4dDG&?e;^La)y+7Y*HyyxJB7QnB!_<<5&N`nMvWI)x^-5MF7?Y=Rox?0T})kIG;D^CzE7BEZ~)UvB3C#Y-)b zvOg4sh~0eR@$N*OsxRi5QYJAqHFa}y6Tp$8XTX)+&j3>Eer7XnaNJm0S`u(3&nAEl zDmvt@Rh;H9-~I;<_v8^KTn&1V%Z26YFrxVYS24Igt{JMzOlKmIQbT=V?K1O!YocFi4&yUO9 zv4!|^??~V8<&o87NKI1{PX|XLJt!k{Auz~F(=T~Sl>GQmDA@b-Mu-u|-?l*!|0j4jc<+2MI} zFbT%aaU3G}Ds5)AAH%)5vb5v|uzbJQo4mvAe#`UXsZ%i`0v{jNT04?r5IcaylG0l$ zr4$h`_L&u2Sk%k*Rb&7tIf}GyFD+Z884=7HvRV_){O)azk99gcu99h0IlM9{HUj|6 z2#TjU{YOetakxd^S47eA_jOi^R04bpy!rw!zP_Yx{>^397IrRfXCrQRF86o7;kx-O zTD$O4jsg6!yMX!ntTtN$qRPw5i=Lj|Mc31L+hJ~0%oO0${iR+2eb;@<*PVFyWCb`Z=1 zQ)~o-i=L~Y!NstX2{XzJp&&Q`w+*yZZo%Vwl1x)BsT?~y-vmS3C9#PuqKqP#SrN_l z3IgfZXU(SbJA9H{I^pNaerzdScDM2H9S*(U^zAsyXf5JCh#ls$+GRic!nf&t@3^;P zfXzw*C6l-YDcx#!CU9EcuPF4eH%#g;5LtM4vW!M5)KNdH?SOd#2CI1_G?kP9;t^vM z9&>CFC}~tam(A>8B13C+I-A!SphG?s!7)>eUs@S-nn6cSgee@QT3w*)i*@{T!#&~e zHb~+L<_-BO^0;CV2>SY&Wm)#tuy-;=X(MzP(45&A)Z@)a*iMgxF@jZ9Rrc*?t?&Hq z@0$Jc60Lt`Ibgj!*uvD2_0^>&Lyp8!o}?!a2lUU&-uqwD7z{k7x3U|GjgAsS3+P|n zt_R5wqXd@Deltkt(l;{j^Qb z!;hzOc56#*wrhU@8zoOnWHpNp$`%KA0B1mV>AL+gJM=ksX70S5tJQ0t2?rh$kbEqG z0j^Ws)Pywwh!VG;3+Y^ALyA~;MKg9$mKa`XO05LUpzUY`kxz>CZvLLXu}hjLuyzFy z1B($Vi}fjLU}B)BxYHQFn7gdl3j^r6KqS^Ri^b?E_9Hmh1Fxt3ChX;WfLrN#!$H?? z;c9dKqI-BPJR=D|M7>WZ9Lpw7P3KL zu`f)HjOx45v4*XSW?#4YKzP!@@mOgar4?>)dJ=D4*apb#|Q+4UwwJq2^;lC-#sM+P>+l3|lLxkGF=r~vrky~xavGCL<;tR*W|_`I&$nRNo2wAc z4>}dIl;y~th;FzF@l3N0MW&*0$zClDdulb&@{tq(UWj;aV%6`BsG6n7W}A2U?si-T z%k6ySTYwoXsNVLJq;vg#DXa?a;v>2Q82e6Y_Ovqyj^qu&to-F{21JKwkp1ZZ&hb3x z+A;fSF=6T-MMl08E&{LU9T`0)mn%s~2G}ZQ%#iY*wn{>!Vks{7Em?=jiSB6gAjn+y zkD1P|W;X&7vhtwTaZ^tZB>Y_mrBmkB%jcVy1LlmBr@KMWU*5^DlMDQi?F=ur&}P z>MLorb`Fe=s0d4(+hkpQMq7W9S8%lQ&Hglggjq= z=L^s|zhS(eZ~!NwL9nRABmHbepnGn-Nr%t6o35hMlYEX5AKKVPw#RdMX+|G}bwiN+ zJfghhg;eTshK7CmX}dYVi#;W+BX~;f3?JF#^T~4}$l~l1W;F;vqOL5M^0>6Utyz*8 zGj&!FbdijRmBnT;A0o*xSh!RELnB-DCOx>>N&3OF>1+0CDzQnb^-DCc~6*M zu_YX_ceNBoWDEPEobOru`uW zF-Za4`K>2WwF8~aX%R%Wy2#@1bW{#@>+SVY9K$LU!kkkL%%ll7Om1&Fy{Ay^5xc})ufV|9d z)xfJI4llW9oh%5Wj{;)e(yYY;U36QL;M2OUlikrlGPaHT(hzXsJWCA6jbr0S)zZ|fzaKL`U1!x`iR2y zdBO}c+(twrdIP#%jLe4{4yOT-W-`(RF=>>zO!8iC@!>von`WkyUHW0kdPjG!1y9<< zpKKFVd-?_XtSsId*`FnjhMzq-aMLM*`D%=2%FcT63&e4ZKYYVD!8@SKvz**7IZir( zdN|qsqt9B0K-)zwN@OLWhHQvY6hZDK_#U!Qc1gbkK()${K{Dm++dtB`PmzT{90&+V z?4F2k5BeJA&T3jtN9(8Ad8C_uwePYJ2(J3ySNbEjb?wJ zab%LH1z-P3zA7Y|&K1i5;n&~orb`BYk@=ZoDJ1!MeC!$nW+xs@gMCLLpY^TmzU58g zy77|J#=6=!7A~rB8k^}pb16Fz;uwmRTjogdzsb9;+$|wzRgoT`x5KUCgjoitF^ug4GU!7Q9jI@Zj6Lm^V7;MmJk^PM(lBJhH4RIT$D?qH0%W{SS z8U3JcC>E1K0eZV+Z1(RQ;h2pwpJ_TZ5pQYXT%k`@%)w?Wb-~!zc|^0q5p2q!)I}B9 z<@J}=l4!QSNZ*$;C}sLKBx9%24HTcU>U>I$FZ*#B^#xo;w*N&1hUb3Q^SE#5ewzy4 zMfEnnp+=rw#}nEURiIA#b$dGxXcxBs{Q>ev4_ta7WyEfIEmMs`FS%LcbOkpj&?wQpE1cQ#Tpy4jq(IW3g^40&G+XVBvr~a-^0a zf6y>YVm*OGu9XvkGEW7JmXzms+4p^+hRrLLM^Yir(vIGPJ_qySXtw)w>-1jL1z z_ICm1U!hvo+T6UfXvSr;(o?iJIm0c4HOw042uM4H`R0eW2|pk*yzkF}@ww|sU6WjY zjr5I^IYVGmSi$sa)2?zpkg%ph9*bGF>MSH647&~)R1Tx8s4m8ggH58wgJP;`>*;(w z5&BvAEZ+_wgyHpd90yWud|!ekIL&j4Vg--)!2Ney>Y4_=cbv<*K-yXv$z4y>^j-H` zgi_bt62Ff+==(11R%5>*vnfso)o<8GZ&K2a9f##K^xySa2M-`mmh19(oy`FnfunQ! zpi|+W_N6J%yOa>GL(cn^Olw9QPWREHz!iodTCgJbbB4A+x>>#s!B@u|Kf-PO?YXv!A-ou0ob+Ijv}4UrP?v=<#2 zjroeXi_dIDE#qcxvI`LH`K6`TyE+@#uaM|3(YI z@u&!hU?b`y87ET$d}&(f$>z&@Sqp?gV#`3Ls?%vfr0EDU0>ZHw@};%4c7R%-sqeX; z%J{{>N5FNc!Wje;QZT*T{pzZ0cnQ$-r;G0H+S*tQXzk)dm!!^(4ojp4C1%cLaeA!T zKuA=wCJZ~}&p$+2zBhYO6I$u;_L`>y4mJ*+i0>u{$NFpZ;QH^NG}Q8yr-=U7**Buw zu&1@W)2)=YBQ$?d_RoY%I02VGAlbxVi=t0UrfeD3wQUDe{1?@Aq}>+NPk;{BhBhKK zyJp|*J1gP51?2ky%G*Q^e;OeW|J=36^`tJG2E>vwr92Xe+1o$!TfX;tYPSFrG;o=f z0P$E%5fhIHd0y`ku$%A2xlDUZcU*tj%6w;uCZF_bxsuurR;@2|yE+QG{6-V0@bp|} ze>m=fJkQtL0OQ#<~7KxEPa#DjqdER0`33V^DCfw1*b z^>%+4AR-kkj;Ar#)z$gG`8KZt(q7yuECIf$Z@oybVK#-k^qK3@vQnl%TT_$s`j4bdzo#=mWgP@}xcr&R%_X_hVA@kxw6Hk*-5UgO_jfk~ zC8wSPF?7UI#Gmc$FKWJTu5N5>%+2+E+K4gE$;r9ja^LEZW2Q1&|KSMeC5$yS zGKtOAdhO1Kih@NvGKqj72=vH?$8HSZ2LTVrvmK13wG0qcoiAUsO#xXCsP2B=XU3o! zjv)%ukOI4`*?!+f(Vh_Fwp;g@lc9NeJ`}dMw*KM z8)sZ;Sbk{VdOM$l6khcArpv2bzv+|9dQy5GCp}&J&a9d3bRF?qIdww1lX6evHWpAg zC$qSR9R+}X1EzZ%dX3w=yBy~!UNH7{_~hJ-SB>+~)tGu!EYD7O8=fBaA8YyFGT^GR zGK-~Z?K>b>0R<&}8xxQe`FFxUp<^+3T=r=Ro*wb8dCa%qRj1Eix^3$LPRMRSO9+^-a1#- zvw;rs^16ajqGELwu}%!|I~W)qR6@2BclY-+GPh$Vbsa7Cb+7z)cVSz;^iQHr|H5gb zuCRqrhIl<6#^~#a-PaxA`J!+c`-$*-Zi>d67p1?@heV4q>&zT&C zVf;c=1g2}x&%fAr-pLs}VlH^xEo#!!(`RL77V_9xSrH2Pc*w~`;rj2VXu_hAM7#1q zX#kQSU~oy48Gv30j0!n9IqIZ8Ksi1J6vQ3YVd5YSQvc_xuXljx*=D%RBprpcnYe2G zghD#>AyfD z^BedXO@}>myKD{M>GR(#z8(9w+Sy@JJ!o6Z+JD22kM2|yU~hXk$l~Yc*R0n1c6SO0 z@eM9ieEj@dJ~s+C>F{U+VaNo5IFEqHZEbBmY4s7t{^uWRM(Ma~rm#~`q|O%|F1z(` zbDNXXj@O?jUBDpz{{6dw|H~csx`P;CM@uzd3g*UA=z$w_znt0Uxh`pcodV8xdCt$y zK5|;Ad3!$r3aJO+fLz_&jEw;A6!-SB_2%pD?w&{q*p~3?Rov_`AV}vg&J+WwJAFvZ zr>CbJuie(mOfxd9Eb|;O0kX^8&9J+QqU(@k3V{h|<&y~|z6IDXKl!7G$)1xQ0T5kO zbR<3jMEITe2&7~a_nPMwpM-@UzsvY@SN#0ro7&Bh`?#CMrFY*g)ah{3TIOHx`MNdr zc30=Ght4e4y+_8Bjh04wFGGB@(lWA-`z`t9XNFT|n^Hp9r^`dM(DBYiW)elq{I8B3 ze%(F~*B8DQ-i(Zl$e>`2;%`tay%HhTKH#dyolSAsd-ZrJltSdnAi8{9_%X_8V@aWT z$=KzAPc@?fd26x6yw`yEs``!(p(8g>7J^Bme%Wxz6n?z0@!wlYd$`ykef2*14M>DL zWq_L_kzh5?@jw|Jks+!sEqpF{6k9n#7SQ{$7ZfNOTifzGM`Z}PtP(?FTcr@qDCE1Sg z#fSu-dUV(#cKT<1I1f$aIi&o43GjeBm~-3`wLaSsyx7t6F_2w4JVpF>Y~VT-Q*m{|O@j*y3%voAmu-t%P|*B0 zoQCbv4C)EmkC)x0_qZDA)L-T15i4n%W1ecFBz)$v-(5ZP$~cb;cE}VkW=tk#TX=4R z`ae1{Mmo()!tcSGkL;2iq;o;(&?BPU_t82Jr3HS2jfjjyq@hvaMpXymqkZgb>ePRM zaI>tpFm1VK#J}?A(rSHJv10CgsrWGQB_g#fAYG|H0Q(~^Lm>+ad6_JWnP5=GDp9>l zR3asTpqC4;ORD2hz0%4gI)~_doHTmmFjttp5iyYg)%~|@nWhzk- zJ+vsfHxw(T&@*t@G{K#fDc9C6`C0}`?y~W4WV4qZRFE3B?1j=_#^j1x!w9$XV$OF< zEm$JvW*S!u;IulT*<_0r?)hAwLwxwT_p$YZ+p@jC=6a<~mpEYY&vj@@h>G3OH0i8+>RF-8A_Rq}!4E&iF+SNH0X?Kasx?$@e%fA_)(~m@9?MyrHY2E4@+D6GhgdY%l1R_os`~(Rh3C&oj=t2_^^T6(0>qTQbhBbhz6Srn;B|m zLFS<3{LbHNn3RuGg}o0(gj;RZtYx~9dw~0eUx8_Nv}A`C{SBE0Oo;@Fta91@b?m2m z0TtsucZp0!0yWBA>Ba)uo^x&pko%gjM*+IWV&-$5+07&6Otwe)mvx$A1oC<;3A0J7 zu-2@S8lfCWSqDvIi|odnH5P2v5^5`AAy2-TGZoR6bu!*ngq8r_cL0`eY&u8xAE8ft ziro!2C=Y`8_=~m#(MGnn#2p;qq&0>O7ewx~bYNEbL=b6C8wZQg&BftN>YT{Gv7)K> zxvH6=h?mwYpZ8C1|2hsO;TM7|qET6}d6I@-9WMdLc8hw3n#y68B!iPezu*_ZGZB9% zP|e8$<>FA}*l4|q(x5{XoQ7-~-+ltU@n+!yGUfvbXuyK)mI zkdOK#iE8rA3AT#;gErEy37;63RFq7@-|goUiz>-My2{eri89M7KyvV_s}~GWUn8Ba zMNwBwsfD`Y%q#Gm==Df$&N5-NB>S`WWs~0ad;dUml=^}_2KX%T3A7cnpd#36Pck^b~v!bhe%6Q^-oqlza&FKr~_~@>hR=f(%ao8LhRI z8aH^rjI;SFuS)GXF_t6VDIU#5AMh>&LBnF%ue$Kwby~{#|FsbI^)g(XnVx7reO^>T zttJFSfGCS<4;zuicqP5&%W8hohY6H>ad5AN!WD6ghqgjtthXydPP*sCb$;Bif3#pVTK*C1^>_^?qM43DZ7iCzHpKF<_iO4J%*p|He#UeklWU*ue znR8eqMjt#$MCaLaMV0m=2PY-nEYLB{Y>tXi6IH6>Xk_Oi?Y2= z_=#Eg@d_<<%ljmUK5etp>zCmD%Sq(Z+jOV!!+nbI#&X`Id6a;530N9H_lZ<;z~UO9 z*mu9UX%yJatgdXX##uZHaK z)K*oQ7^;6u<&5;vx`O;n5G@*rF%Sk(C|=u2KLQ17R^;XN=L=ynu1yPqzxker--kI+ zlB)EUz5z=*yqiWn(0oTweUsv|bhu>@Pb}+}z=g8~SDv%^?k`oM>0CCG)xAF!ijV6V zNmChY4Z>L)Y5qSZW|g|x>cXoI<9EV@LgH2SQuC#8U!}|i4fRZd(YU)1Yc{+aD=U$E zX)rV8%(t|tQn`>s!Biih*ZP9Ds4kfe*=pS82^E;(Qn+;*9_YlKJ6U~o&6$pdcz!GZ zsuj?pqk58BgC9L`Q4@82PfarZT>RHb{Zc;H|1k0d&Xa~o??<d)dB)1*))l9B!Z8CN|VKHpPSo175J{%pb!xf5dnyj)c3T3^!Ya&kkt;5 zpzrHWNR{M3P!mW;?S(usH;GL#-pX%nU0Q$%jg5^3n8G4J5rBM{mHKS}st;`c;V~49 zH6f|*^18E<9vVIM>hYSn;hcPm9D?B_i^BIN+#VBCw7=luC2q3a?dUtD)Vl+dU9S4O>QKtThz@T_pCf$1TKYtmG(|8@usq%Nb z_Z99wd^LFfSJtijK#F#IZ}HRwGYtq81TW})O%dpcY#9>(IcNtUU}z|8t~6@L%ilHU z!-FZKL!+c)ADKkt+G>G=bQ55FIm1;iFM77VFJi!=mj7yFLs1VP-jev&QV=>)*}l?Ib7fHE&u zY0}69VvYJ%PzW>sP5i$(0uq2x03Aa6it&|rc&*j89Y`i%>bzCKo%~q8ITu*u<$k`d zt*Ke&x*c$rW%n}zuG-}AHca?=8=%6<1Elq_NxxnoPplAg3=?Y=W1G?F<l?`b07i}Gj%95yy~H)bBN5=dYN zi{R=-rd2rWW$$VjMfi0E;LCr1081!df0)Gb|4rYG(XF~%<9Uls*kk8p_i_QjpU5ARc zb_CRtHYci9T;WkP`xFaYwNfU>AK zvs1qh8JV)TKLl8>x3>s+ISy9+!NRsZ{JDJco$iB<0v?x!x&40QjNfh6S|_vnYl{RN zQ2AkSpWv|CcAla2V~M}-p=pJ!*!w@N8N6Pn@$>OH^gOoOu4&<+YIUFgJn`sxJYKA7 zSY!d>vzTzzV%L#4^as;S;f_n1q zMfOA1-nGm$uSFx>n=L@QbHX5xbb5mdig!Ywr@nG*LO{OO)l46%u4~Cgy}o*P|zeTWKrAb+<3kS z?lQg6=OR8ZY~6kg6zFnGw;kEz_57+`oqwMd-`}!WfBcrVr4+jP(i3L zugeH^XD8F4lJ=;+;K5G&{mtrP;iF-K$;&%c*pRC)u-ep#lo9bGRbzp?_7N24euU(| z*DtQ;e>6+Q_gYUeEJ+&|Fb=Y0ZwBc9`0RRFqGmItVGLTF)WlfOxB!)$;WD6pee?PW zUTlt)Xs!lBDe8|*uyzy_4;K&3SR~z3FN{~CFD}K!ej|#CwbSOi#L!LMW z)Yn8x9QX=U(K>d{%GTll>B&ywn!uVHMi?K)Ov%3V+a8lhI?sSf4&i~@7z#C%Ek2X) zhFBn7*BL^&_Ur3)&#N6OhmSLuiEKJpnYX$lz<(L45e#>x?`b|t1E9=bD7S4}* z>M(J_LgCu-))!*Q7_rbeHxs|PKNi@O;z^G#CTvOpcSHwyQFV>j7lPb1U|(^+wl!GK zdEm_6pl4g-7wTi?PVGp#a(I;)M0;TltP*Xq?eI}=y z~Hqi%x8UVRS}mkLb;E)?5WT63HR$yvXevbkm)NwzZ+KS)c;D&iu1L&@;Z z`^i1S#z4kD)Hl8Qle&ob%c~yyXQ*4OPBjmEZhcX%QePXy$ACJd%L!39)Z=P#Nl5jz z_Me)$Ttv1OG7)qfC9mY<=dn3MLgr?=5W$m6H0w=LHMa|B8(*p=p2B#W1J zruawz9T#4|b+YiyFTjLpgn%;hszy8b7h(X>QuUZ7{j+Y65kISO_&A_am9KykAJ!|nO4u)XQ~RpzTfI5;+H z9SC2Mu)iHNfr{M-$T>6T7*v8!Xl;}``n%>3fLDHNklkS4^>B!4Z zD#Nu`^rYC)&o4ir|9M(I2fIGVD4s#s9~Be-H~{`3g8}x1D{kEX;pwcSqU_$UPj`c) zbc6KJ-O>yVO6Sl>NH+*bNhsYN(nzP2Gz={wAguxt(!Pi9^IPxphYOcHFmunj&wZV1 zfA+q-w>Rx=wZK}@hEsC_tb zbWh3fh{=_>M$YqT=a(4z85Ap3u}Rc05|hDw85;BCnXg2q@}c=N z!&Ph>+00%uRS9@iRP4dz$;#<`sQN0pZ)b&!$OxGpZ7luKngany-RlJR?r?X4^JL`8)Y{AOhn(?p%cP;{&n2P+%WZ4C}roPSMN3|Fu38 zu!O)QZTv_)UmT6ZQ|OwSCLoM#kAHY(Ecb83a^Js9GDt zwP79F8IZ04JKkzHN%{VfQKK5l>x`SC<x=ZEw6Ag?m={zoo@(-~lw1$d4Q58Wxn zlX#N0+ra636(}EPQ{wlTyPy{jbUwmFjeN;~*1X_gpmo0lVxdT5!kxq&H~|E04n%?8 z4KSnbTps|gJP>$(%QdpWISBOpA05jY8n}+M(!mloRxg?w8(-~B<)*S|_yfzWyOD%o zKjQEIlMNkdzDt2~!g}ZHZJSB(w)t3SVx*mnAmEx?#_6RZ6iGC~ODqR%wJB_Q6{ZdTlLROG{%BV8jqb{zr#alcNqgk+!Mgz@DWH}Ak5&G_ zG^WCu`y+{mR@~<&&~RE_?Wi(W*_3IC9Wdoo=P||7q~O&yt~|pFadU8xx#Qm}-=6tY zoFoN410cDAyADW)KxuXb0J_uC$As;+mX>t>fPjFdI`iW}QZ~S!*H%@@Weg+!1{V(? z4h(r3sP`+`OUh5XOLFE;qhS0MM)T~Hv*El!hy90F!fkG$9r0FT&VkkQ&xRRb&Sv)0 zy8pcy(E@L73p8dPQJ({E^=+cMc}~J<9{{9Fc2b;L+7T__LZ2ihwLGUPih*{1W9j#69TEc%CQw6x=Ei^JbPD)Qt_Pq{<5?WvrWq2Ur(+4Z5hLM|qT zhK9Pj#E*+CW8_2cpD&z`oc0vNyvvs_riwnyb0IrByJ0~j@X9^s1`gx1RNGdBTp5GGioBWW*tG1{ft8wA`1;`d@QY3rg9ez1(`@kedePtKe zUxOtqGa93`7oQPpEaE>JBtBUYk_+^>Z=*vLJM1#Sb=sn}~z7Tx{f!HCu zp`b#B=7(OdPOxJ}YfJg_aeh479LDOXCpO{)B+ajX2^OX4)|T5>XX*@B#Wk09hq=9b zKlgH>-<*hz>TcjYOS6tUS}C|iWc#8uy;&2X0^jE(=tUO6dBqkt`9=7M1GyJk6`>ag zPb3ZsNb>k6Xq!%Rx7f`eV2g*ORBBPI?wZ`c7H9mN4m*cgfzSpcYy4BLzLP9hX-DQ3 zLgxfFdb1X&qGv4gGu=fF*`EF4V(GepPJM+;PvC}7?3cy-MeK>h(5!`8rWtBR9jeE1 z*k#d@6nPOp!?0$KHmn_5!!m{~>fYnVnp*D4y8#4=84cr)bNP(xiqV%YiG$^Y`TPcgUYlQDlUr2 z8+x_+zRccg@4R$Bkh0>GW5KI%do9m~5M6Rffx@GXKw$NacrLm`)-OD#s=g9Wp^lXR z-Wmf;x(~+%Y+hN2Ul41h4i3CDc_N)vAvnwus?=jwO4>0x6-|b8%Q`1lr1X|FW=Gs> z!RdR<3fH?=TX_y7i&Y6O^I5yN87%WLT>WU;FQzjW2^N2QCL|Y74p)gr?8Xk$so!QB zgYF*$3EM}y)vF}y0O32k83{WF*Dq6tI%JE_HwCF^-f+kggJQOImfb5gx`a1GT|A|J-9psUm!r&!#VE=!_D_Oas&Z3c!Z){w1ytrM)fJ!Vnv-9RPe1yU zT%0|Bc9f9mJ|Ha~oJb-A2zq5`n$Vbt1YB453clxV;HEvE( zNsFpM32$Cc<&A7T!(f2|{tmRLK?p(hB=xl&^AC#0tuV1Kyc@+UbgnYox*4K4f0&Bp zEtiTq(-|L7-VWJQNX|T)3aq4qjMqc?tch!>Kd^kFW59PypvzvGuh`r07OoXIWDi#u zaH4^06MkJj6*@Q2*^JI8i_oGo?eGNa_AwHJWz(|g$p{+-?`Jg>YFy7l(Qm@4PL1Xz zV-OHz^HSR(WGG=>eNaQKn_WV6={cs9C61GY!Mu{o{SF%w`HsfBW|Mf7R9lwa4mazp zZS%u|$nZ9+qFI9%g`kQ%RR%{e;-`thR~#8T_mR9sMyeytAC6IJV#xfiSbUXB4f4Wx z+s$I^{O;2~+DbOJRk@_WU;eB1vz-a&$jSMlgpz))p-ofQ^k!PH#lcm(zz2m`wz#sj z?D1s8;JgnRoJx9y;4JmwpqcM*NT=+zBJy_WF29Jk>KX_0$&f&a+9>O?qf3v6Grt2j z7g`3s$h9wFm(A+L(u5XKr36oq#}_7?*)&wWn&Y62gR0o~xcn$XSv?qzd1XZGW_JJm zlJjDLN$*LAOXLsoi_iPs?SsBKH8r&e%k#`9{abAc;T!#*4`3#|T;vqylQ#TGl9xuh zy1Fc>oAk#$W?Zgp{r6a9?9#Q~ksoT5F1_s17Y%4FQT^ieH4J#k*`ZX~!%BkZbMT78 zOz-Zn9!f>bvd*BS86??EaP>UEuJ}zH- zJak zaWZOJN|$+($4~-Upd}&n zZzlHIO=Loyz7BR`C1Z2wK*1%|(weRdxjzDED&V_-mFj7IVv7I~=w{-Wms#1YM1jSQD8pgB!bo=PcUyk-BVQ5?5zCjy@^@E@nxgNkG?_w~0i*8F&D7U=fR zl_tMtF(GciI)MeYe7Zft10)+zr-*Qpv$iJDN}Eml)B%&4gx{Zd3W4{}jQKsb6h6Ds z;3j!4vuftF`JQfpwE?);hwJ=**MM{aBH=mw0u-hPu_qkTlbOc@xnkYhkVFv_?O+8T15x8(7)s*(`gI6!Xqp2? z@k8&Ot-^E^HrXEs@0i11zq)UKcXD!Yn3$OO2Rtsbk*4)+5wi|2_QW{kz5j5)N$an` zD|9sNbNut?-O6-uD@divzyE3f;*%@2uxpN}cMyOB0VYP8m{1(pIx2B4{0XZ}GF-Z3 z)|W8eSc#>!TsH0lix?HO=b2v`QCg@@S%XRCCR29ZfK8@qg2yO~2s}n&Fe0a#J)U|I zZD-od_aBCZ1HlDccjIPbVq`9zjrHE;_T79#G^1T>Wpsw~a)T~ZcjGGP7U*J&;|km5&IEDd@& zMJ`Z5p1mzd-`jrf%<BKtJeUA`vdz4k))JKfmB9};l zkg=tgo*DpJ19DOiV77t5`>E5T%k*WEfv{A>{K90|alzlq%g2(qxOf}fUmZXMYjs^; zU0Ly4_g)IR9ykBJzuzbN6L@Vut@}J8#;JgG2M%Gte1f-S3YMmXH#O_PE%J^&h2XOm z)p4#2aT}Swy{r>U?ucWY(u*|c7_S36V=9grOM%y51mxjRput(l$w#8AwhK>H*cdDn z_xinh&zjW1PRRq=5MG++Ax(jP~wZ1=F<31pRa`DDP>UV4}>{oqqPovCRwg6 zDhfw~+*PFzB26_bH87mjZa52#?@5&D&>1lv2@XW)2WXZ>&HqzPWcU;9&Nu6XR4Pqx`W^h6*j<`Yf^xNLPe+3pZwd@^cBaF;$INp-DId)@}w-zDantt|@wOmLc>Z1FoxW)Mq0qN)(4FTRX= z_hP_cI4>==RUOZu+{XYD7Cm>ECe60;I#M_w+3MB(k`_*O9dJ?LQPbYO$q=*YUc1_K zeHFyT9LFXRL8kZ*%D}0QDze70Y5L%22=$>U2*4NSPiSwxEO6fdb(^t`-N)HC68)XU z{NIm*dqq$k7NVz6{Pcv~xOetS<<$JHzpeULvb}p`p%VwJi@^N{vKR(YknnE4hiVoF zWN?WJ1Wt07+zf~5y}M-El!-&XfRYb&MYAl;%>Ur*t)h-!g2}0S)ET)aVs;oVJ43R= zt0JHx8p1MU7sGjGd~|H{Cr732g#O|RP_JdnH`G4MmZ1CPD-!+2&X*0{ZqD0n#7R>q z=;v;&r6c|-I@ZanzEH&5%U{JvqYK~^)U$+PE`AIDmr+$zgfuWeQH}HMrAeG4J~?kF za^+|F=b`+FLIeeDF0lF#*@NR_S`qgG*V&4oiU>Z+Z27pN>gprF`LDG&eJDiFt49}S z9LZ&nH2Mm6B1RdEsFgE7Z0yE1`rfyURaM4ZSqsS_+9(q+Tt z1Q&Wd)}T*bl#*yaam;2hT9hz~T9TOb3#Tsee$-4idV&Hje**LRP$VTZc2-v{42e~b z+Ni#_*L>r*6&D~J-Mx8jnpVP)(SNUf!k_wiPa2DejJCgK$QHf@PjFskoMC#t$1SiQ zKkG~)xOc1z!{yL|qBV0Bmk%qSu+4f2ug-03xRt;%4D1Xn_5N%}7Tw(5uCO;VIYvea z{?2~E(h^R6a{KfD2jVJuV`s34)X=Z%pqhM%=dd<7M$W=mw2CV?eU*7Yp~uObRc85O ze!q+{`%87;lcKr4vWXwF;}$PSk}FH$s(Bl5a(F+P%~7~1LIo9hL!5%E2 zrV{av@FlH;uX{+yzmR`_Lqe`L-<+W1swg1^n9Dl~Wk(5zi@1N6(VN}aNP3n=&1-?+ zNDFZw$N-Tm!VWWZ7dFy4bdl#lx0fD0u`XXh9}HXvhqr7RgCAGppas3Xw9akt=%!4Z zmiX*vR^g4VoW)QJUY@nASSIgz@x@R?(>vJevZoueUfE zf@Y~;Y&iBMTO1lLCB$oA+f!@#xNn_DorF_%3DKoMjP0GlR|{|1B8ExITP|M$ zj4GGIA}MsMH%ZtRE^%DYD2`%V7086FDC~~8054SM4Q=q%RIa$}XLW)Gob)-UXvBQR z*3v+S@8^^pYaSIM40M5ijy5*kGm)sWd}l1CYK?R|`v&Yg0#=RzgkLFs8fmYMlNZiQ zuDeCan3fE}f#DdAp=jIoT`@}tJ?RSsIh2ZepK$7Fq2tpLhj)~jg}P+8&eX+Rzs8;= zwBDQ%%;{HycpLB(|M$5x*E_`xbj)CDPglPuVQ))gF;~eVcEe|p$>S1dk#uQfslz|d zY1`FJkEEB)un?C)9VyIBwZlo-Yx6AUO#-bWyb)o=QQJD~ickGy!s}*VQpWMvmZ^!c z%Tt~v{+_(XD2sHonYcE5uUoPd?Zb- zi08H2`w5(tpMnB=rRu+A9g1Ec#?L-S30nMF+i*?!)fm;$X2iolb1Y|e9?6+s^nzwM zvq$xN_h)>L?gm1|(|2EIF(`1Bvbo?Tk@xwg!OhIS*m;8?N@m{{^N@y;0Z+XS!C5PD$$1oY! zocw`IjMD1hJu#zNlW45;j4f^Y-imY+SDiIUY+Y#sAkEY9Mytfm@uU8%Gwzk?S>ex( z#IH~TQkX_)0-mYuUfC?`>*0ua{2a^Aa16Ek2D;js z8n``+*myDi?Yh#Lgz81Vd9U2kNBAPWY#51RFiRla{7SP>f~=~b;d%uTGP9W4px99O zKy2-?Y_X7dR{PDqR{Eyz_h=k-=!+M(Up=RxKSP01#o#@F$@=qKHx(?H6*pR!8Ly7= zPkW|$PT=l2A)}HWel?}`J8B58nAPa!U{z98EtRm%e!Xx=uk}Wc6sf&z)G@xkB!*4c z{MXMCFDUsY-%KuFw9DSeh6b4ziS^CgCkwWh?v(84Wbs$D;|$R`80jy(#XYR!m7nr- zd@Iqk)ZWMrpTo3i9u=@ zrNM46`4Ww>RZ&zQFaO!mWq1RxMqy#T$D&t9w8XmT0?M&gbA49$YnI$<9ex)z1}DBJ z9wQNdHL0IeReeKf+tW5Rz2D7tYkW@cg-0uuQx}vqZA+9d(p7bR7IMv+FZnBmK0>QT z-15ihcG9nvpqD$L)>7#duY4cVbpYJ=W2R8q_4v*u|(nL$6c0i-Vj+FH!9MO$P9^`EICrYerV;tvRY@QIvfG!?n2(=mG{$zh1(!6 zvJlr&?kz|&ki}0V*MC+^S8zwLv!IJ|gk)q0>!hen25u@wP4Qn4TQ>K-!c7@!qRpf_ zbovjsv7uNtR1G|1xZ>(U4J#vtTbsW~O5F(g!gk#Yzu5nVPdcN{Oi9`7cjlL2t;--M zABiKicdR*FU5Bc@-N%*RYpqCYP#;N;U84L6sX@-+;zx4yn9-+{XNqGiY~_!LL|ppX zO;FrEfB43L-iuOzUEBEzlW`>PJkwHM+T$ELh?PSdL=tpPnBwu2HV9sSX!#~d{2*;R zk#>_4nUwqGRr_?1E07eyL1zg#f`G3j;QnIC4WOIADm4f6&v41Z+DaU>cq^en6_zNZ zZX2)GxoOe89B|k^1_`}Vf5E*f`S&aB{l2n@v?g>QBNV2Gi8@y>7`1@<_LjxrJ+tC$ z*uItn@tmq3YFa{8s>6+#hRS!)i)shn&}6*DDTL3-3jYf8>q$Gf2PsIlUlHA!N1)+` zmwP;k9e;Ru05(nF?eg(@{7(X$^}xrLxh!TNvkX@RdEs=+ zNi|chO`%d&mPbN@?f31qg81(^FC1-hcj&QaGCtnuS`vQ`{0ynun)~VPz->;l6DLbG zzy&2}8Skt6D?v2Y=Tqq)H3Q4hzQ;!H<}+}AiQcZ5*+>8bR;y?-ye{V%|UL2d2di@yq1LXGjR4l2Le1$%8q-Kxxpe!XKU!cYE};R&AsyZv+Jtkx~) z2-u)HLE5d0WtfnLJk22P@|BH}IMPJma&1FwPK^}^L;_J_Cs~3{z=k)RL>qEc`)Mjm z5Dbtwf1%_)Otw)Ao|q04E@OSmCB5%A1xSZq4^xuDjVc4$;>q-IQdWSkBB&T+;dGLN zF>Dg9Mp}5kKpCGt6Nj}gL1-(=2YHLrjd@TTgZ4u*$#k$o#CpMiIBK{;)&r(=b~>mf z@_V_ss!FQxa|KBDO7c(F*1w3|PLy;6ixBQk!{P+5fc`tB{pWGHVsAZl^*ZG5YkbM` z8DIx~HOBnmWzfX}Fb0nTwbp-9a7pG9a4Dj<<4c_MfdFdn>$`=zVDE#uQb9q%M_cr- zPaBE%h$QB%&J?>Pk3aMj{CoPJy7pblpENH$Cj~v8$`kWHeo?gtc=elDt-vh+G!K@- z6oZ29fkE&wYYRw@lqB$nQO2Z#OYj7_J1>{+2H2tu%8L{xhuOy$0<`V{JP-{Qbh$FK zY1n(S0A369(){0rxyQk63bnI;R>ZQy5jzY6kGe0Of|(=yNhOkKJ{vbVd`3I)9CDi?R7g-j5CJl z0*lF0uft(KT3>P}FV%6soYnky7*_4q)%r)yxk}sdd8s1b>?%q!BmbbG(LXDd_$sl0 zFAsFxRS_e7Hc^i@AT5Ub%pZOuInd^3Wb4=lwX(&+$P{Y#r%SFqHp3r5% zpa)?J_KZpP-1L*2UG~#?z%zb$KCjga?jrB6$Q_v#(3B>cT&EdJ5hsB#^^mWV<)ouo z0G$RU4_GCqb`WdZlt+I#fGvg(^h0hxg;0&0#~y}bqXE;=*ss&S#WCp0n7SEp=@7z(FD)LDsk zBTSlm(Qw%d%eQnnlBL23J&RM942AC!pTOqTIgJS8>Px?>%(U_r4z9&_$n8V2{A`+x zcbTB)e_BnK?$KRk zd1!IKvfXI1p9T+u;D5IpNtA-BsGv`YLyN>)Ri?dZ*n$#4Y62O6!5E_aaWI1GE1Lk=ZJl29wGY) z)yq{A4IX8<<%et`yKXUS-coJr#k;Td1Tt{wC8#`$O^Wb*WG8RE6AgzPgD_^_40BPH(r?ITiF9n3-mG1tDbf!UnxP z216CBfn#C%;pcP_+s#q$gVThThQO0DZff*%$keLD3j!0~3|oJVcS>3j2AkE}$tO43 zxV0W2Sasw6_iIAo`AESCY0l^?ZkD(l)5t*CU1N0O5Q~^#Eu(% z#)~#-#oml3G$?nwOF&pClPRs|u2NmHJD)|Uy017Bj~g&=5w&nMjHq{lQ+s_%8xR#| zVfD}dWxEzpJT)b@pf!=4u?tWD;D5xvyU*^urh?Nn|9Xspna_Xl0+sD!fdQ^ky~PIjO}%&Hy$%A#Ocj1v2g}&? zg#&*S-x2=qoMzO}gjE=E$XnHav-k}vxIz!&6U`w8lXt%h_-rcpjlLf2&9WhSMCK<& zjQ?6`+6zOc0npW^Vb7l@&z+o|yUyp-%mKgzo~3}p<4N2GX*nP>!@5t;z+fszR3LFX zmYCH*UmxTHv8Xfx7BN**3JX=av^$amQD(PmvJa(VyQ^|jV-FEa$k>c2qT?-nXA zzs41(44L2?A@2cG%-F=P=kr~pjZ6JM6nepof7dyrV$iOaCzk{vF3?!TWd)WAQ3(_Dy z`9bwMbdZbX57f4{Tc=9q<4P7VilEOj@V3D7Rx9NPcv3P)O-=U#rReE$FnI-DM}XAfxi(ApZe&^1UC3H{Ia;1|m2F zGAELP&x^rI*(*uaj4N_jX|x3qmf{?y-TvMris1RQ2;*s4$S4(HPtd*T3~+Z0FD2Iz z9khBb=_$D=p#ghnSutB&@&4=HAfOU2&o~m&`IU&(roDspb@4A#9G<4&tJ& z`)wuyt0a?KgJs7TjYLZ~{uFyuG%{lc_?BkdFddZ7bR^%rFMRsBzo$p)$E)aYH>65d z>#{Lgx(3pEMJRl3?oWBhO*u&H*d9r8b9Eh_-dn1DA#6Di354Fq$_*6S1jy%qcE(4N zX#WAR^YSs=^zS9et?)R;BX7Q;Ru}4L8x(Oh+p&yPRKy7kWX&hFenM%cQD9R_fIO;1HqIOV-@OHW)K?FRC4Hk=?tl+Qj#5k9=lXd>fXy!$+RLqmr7zOPBP5VtCb z@GZQ#uI|(QwfU!-AdBs7Ey=&;JkGxYi#^w@siba`o zuB03P{}juSFANL^wiTO(oHI)Zq&75YQuj zduxoD&$WMtjVk(vpJ!`Ek?>jD+Vb+UFAz&=OD z@~MY(>c!jN_-y$0Hi1SZ!c0Bliu910-$Hm#MF`%bh!hT%_Sid8TA>LL`!mu<{AS|a zsy5)ja&D&aEnt24Q(RFNV_F~K4?=!F(CjY=DkqWazrH)ouc73J#1-ND`+xI4OUM-m zQ6)FXoA{G2WNJaZa@&2Pb%m%;DUkLI$&ccpC z)uEL5)bH_;=RSxFc!3D}ML7H`h#mr6#h*ary`PcC=gXj^(s^cI;2iaUWoCGTlURlg zNy|Vi2vf?um^5hgu*42dD9^AvRB@EO{)*6F3RSl*YM-wsyV`%6u+XHKuCbTigXK`< zmGyx(w-^_>P(Xz!T2lxOvoFaMe`j_pxZeLE3AH%;&E@+^Vqert&UUX#EKB^H0wyyJO2!P+T9IRwD9lwY&s9>Id0H=TE%m zYda9p-AyOjIm#2_ZFB105rg5=L5#e@g+vhqdoIox8`Tqw zMPt-yQ2Nf#;MuwI)~4Wh6(OStvg7J6;|L;y=q9#X7wjs5bjo5>#3}A63rr( zv?i|?;r#m3kOp)N0p9RpID%rEghHvWYr*f@V9nbzOHOVIx`M7#ZV7R#ik+L>`{#9w zDx4ZsYZzDK)Jpe~A`3IKQO^sTc!%+Fzg(9qIg1ygIn8eTIl4Wp2=65+;$O|STd$QI zs>M%3ogsXHO4$}2vnksrA_zP77bC8A{Z_@UsB6GnwGGA|NHU@lqdy0g`O;FGx@B1l zD^8Ocf9;8v7CoemJdLe1F5ONSWwL~~9d;*M6b79((zlF3XLz|H5u)wF%wMQaCFn&* zgVKeB#YX(&wBy}8&J*Gk1T@O`b86}GW9RyeUwIZNq{v&zJ;(_tp0elbO6&6Mgeo)d zn>S5k45!S=?n+uL!4V56!p)>&winb3eaCEF*vrk#mrpgq5pi>J6tP7oMT7Pyq9&5^)&Kt=s*> z39CO_kh+n;cza6LwIsV;dp09gwL2WE2ZB1EW41nDAu(an_(U|5h(Wr<&FInlzEB1i z7mN8YSHg&T2VL--_hv?_Lrxg;g8PPwti0_rndr5+mly}xpBx#!XLF|P`PI(@F^t6% zPszMu7QERupnDTBQ|f!*>GyCrj_|ToK4YycZmecK0Febv497Q9Cv7|YzYR?UX@hBc$zt;(aKtl;f5oL?q3U;%a zE#<=x-%)&6jVMjm<3+hmEPiU<@+sw5`9gj{V+Etmv)(ZdY5lVSd}wL?V6dwbA8gA! z!Br?9qX@0MiakO6t{EpsUyzpTV1r043YOt%=wXe&)nZL&av+{OGew~`>R(~+oTJu) zRdceXf}@EK9Gjv<*<(Gr<7enK9hF$T`w?$s-wQYhy?m`V=~o1QQ?~7;BQ1lvvk>ZN z#_gQGuOK=KDHwj)d)` zse>1X={RzJ@lO-!OWFE<-VO;TTPuo25c?J5zq7NE=QEhwnka(sEOJ`JTg;inVM9!F zDC>AXBB7~sTwEtfsUYABiP0<2TJ68ce4rVOlE^U@W*)N;lS@Eo5DS=VLn|<2Lyps2 zBxlg@&Y{U-Ra4?)DnQ_dGA`|Q&=yI`)neERyq}$kha|*`qfjMsw0*Tx{3$rEY^Tt0 zZO8etR#_voXa+{wTN64s#G5+FG)E5M%&7h~dl>knhdbPnGaDx1*Q_i!&YQt7Op^DJ zD0zmVhYCTr@>4cF+D=7s0SYRU?{>x0mcl;{on8I!ro2_apj1oqmc@_HQ|->t;|sms zIY~r*Q=`9$*JBO(QK;aakWTZSX35OF~P|KBi-1 z#9;rq{5wzxMZ5J-!nVlXW+Yngm&CT|u~HSdtqNH1U4>TkCnm_5C{rItwcYPyTb6k{ z3wFM6djij-&9yFfieEHXo`E$c6eciM1_z_u79O*saPo7c&~(9N>M*gOb_iY@SWzDi zn)bi-D}`xzpZwzBpi|J7%BWTVvA52Zg!^2@IPgWz@0l72O3w9dbNa$O#)Vdr@lUn) z{%J0@>f|IQ{qtIuu-C(7>2CPFD;EU9^ProZ#1J5U?A{%#!f17mPguc z#p{TTS$&3Ql4K+pjcz{6z-fc;D|Pr#6lXtJL1)q z=Zxd@od_?h|LoVu9&^a1H~Z*oE$}M1y&=Ld(D3ab%P{!Bhg~R^y0xPIewc0=4Amil zY13G1r5Ds%{6o`6^}goCVmx3)7@xvYE5afzqk3Ng{w*x1nz+wK% zIdU^1yAUVj``%o(32d;CskUEL)Xny}tyi)5yr4+B-2^|eWBAQc^+89^;tR4k_m+=M z!K*o*F2u*`<=O?9`#DLRNjl`7Et#RmWa~)=Byy|;PcqcDsl;}1q#JP}DqpNLKbtdo zH>NMNK|}pDQm5+&U7B=7iHF==cVJyf+(ILkyxzEj>8;C$xykj9eLuvYO=(uE640d~T4 zx=82a&b6B7ua~3c>S*E%Iltsg^7%LGrl$0e(21xL8+|Dd?)=B$l|{qUF>+j8E){u> zN)AKarrJiuu|aUv7mh5eUvmpoVDiNh@EO04zwwiG7Zx}BgXysfbtCZ7bz@~e$Pm__ zURJa}cj(V{>uCoK6cEM&{;aKa0r8c9F%vuQFL)e613=x!qyN{hHJ@~gX=LUdUO?2S zsGJMU(VDq1PTDBq~JNnj1?uL3AKS^pw1Yn&Zsa`jry;+3ng1!45sBg%jUE0c(MI%1;XJx16|sk} z3`rNoKh+luECI2KV1_`sVk8)&2igonz|97=w`V=58TBpRy_xhaR<9RPrcuURnHwe` zH+uP&+|DeEB7u}O3Ei{15W|L@b*{`Qya2F>A0=w6~x2 zppIUVahjFY5|o%(5mS)a6XAu0dwaBL7qDCzI??N?#Oa{znxsUqJ7pa+a}G7Ht1-TV z{c>PN%Z6F}$iOSICRd}Z1${WskB8WPNdv8EhhD})Pl6hCL|ohsM@E4rZL;h!pKG!_ znPb4r0^$~kM!n!@JI>t+#^;zYMn%i9Ve%}uc~}GU*Wtpwf}^G&x!I(g5#zIqS-ULP z1#)G~_V?pDgX+HR{Z)V3KQDTGR6tV}MCwa|@#{4#@m`?uzS#Sbd+{fh^k}F==M($M zhX4#m;Y;inxT5|?wrhg8%QKZMLNkN~>%))$xd@E!oQXvh?d|Pg>4Q8H*V_|Z~asn9Ur0~W>!%mboKgFwJ`Bked>+|w-jmiRJQ3s4CYM5o* z;X!s_h`2F~cM&6NsWV^2Vdm6U<#Yj+LeKBy)_fro%Fr8@ewV@({SglQzwX z5UfNh#zp4;Rb+bt8`jl0=to+DOU{eH(>?#PYICkst-7j;MKfn~wg@rHIcxW77T5T9 zW+UmkJDj;(^S$>RN=97Yu&?D!6q-VJn!F~Pj9tA4zr#Sc=5zW~VxRRV3uc4ViEkau z9FNgy)A+)(VJuu|c0s6eth=k@Im49M1d72^&P+I*-<5qZ_bukaRZ@U?bQ+8`1)kM1 zhBDx?12ncTIJ5D+tpK<-zwH;$%Kr#pY0y-%LQeY=q(yw|0?pzt@#H-yeb?tjke5la z5mx{iEK?HV*LV?MWrJ)=b>ue(KzjXo_!&;wW{=L3D9DRufL4P~-5E4DWAf-6y@x~M z{o1>B;*zBMBO$@ADW`-37k_y>g5jBJPe;I%tAQyg%_(wzn^7P(*2n%!a0|5F`I7!9 zv;Xb=cMsxb4E6LNf`Tq9jXOhN)-TX|fK3(N1vloYOj$MV)bFGz@;$S7pJnQ&-nUa$ zf;F4TzUSY}kr1mk3ST2)q!fe)P<^7L=so{dcBAX5SM^sK1&l;ue_id}GoU?nizuYx z_nOaoZc1#0IXVWV1=4P!5HR!>X-h;3#D{lub^=Vdm<{Au`2(>L82PS8D>^!E8ppZU zfMa&5W3Evp<^1yUoBvTQ@F)Us8T1n;Z1}%epd}O@F&8irk&xmin(%D!Y9}s!lt^<{ zDz7R>4kv2H?C(M7g>{lbTCRLx2HGJqJLH*IsY7am_?xl}JQ4bA5wg5*r}@0}t94mR zC}bL(OTgsXj6*d__GZ`zQy*jCKq%A52BU{SXgF|g{`)!o;Cywm3G}7ML|&k>Jho?8 zL;kRWFwQ|mGSl;K0mr7Gmk2sqG~jd~+w zg;eB#Ldz>;PYEK^ml35>D8wiyI0uPT#a|PgY;)=jF z2k?M9kic74RRsp50f#4;G<^psbo&G{hgIN0)zjDa2GVZpr%zzoo5klC!W*%24~r%n zA=3iYKb#uRQz_=%&pauI`IXqnmCb|AWj_^YIN zZq%%181@DJXWuapEx1kOHv*Uemz;QzGd5%-)})_H^1~2~Lm>~mBOtqdFBE;tD-5O= zW$+@NsglAIfx4L^735E%2%Oa*pw|%wJN;|(WHi!nnXGU(&)AT-gv0}5`4I9z^yJ+~ zW0F#N;0=LzjY2njOigmb*sHyMSuIFc@OrkGs^6~aQ@#oVzX$kh%Z4=G%OML!|EZG- zD<$U0l~oNOm=nQA0#EP9oL1J5Vy@Ou20y^KVwjlSs6%ZrwTUr3fr5+A?25rkr6fcOM0 zR%-e5X~TCr0SMHza`msr`(es;YbqX3GZBm{zu845xPp7Q#|R)D^8S%{UY~ld^OpRBg&5nSh>nX3*VG_b zH|(|3VKQ!`LRx*hz#$${9fQ8_UX)M~dkH{gbC1vB>~ru_fi{{?yBO<)dRKA>IlAI{4k z%eR##dto7=tJ&T#-X?#zCd;*xJ4zI`Q6>>movXqP@Ry%>V_JmqSEqWc#u*p z9-UNK)+KRR{2NuX_&#--MV=}wV1><~Hq6YLFR}?U2fGQTZb3RN8Tm*%fE|k!-Mt@$ zDbqz`z+r;ES`r;gpYOeX7zY-tR*yN`B;2H7T!VX4?b?7GZRgaYTS)#;RW}3Hk`61g zoNw&X8yjww9n!0DYbn>RIes?S*NmkyzqxHUOINdgR9UL0ayXq)I_`4coP|fPBf_!? zi^({*FIm8cl76_km8uIAct@QopYOddJP;Y_q?(42;OxgjjI*jnu~%EFG1)_-{S5G6>yb9MnN_9ngys*vk{$261M3y7caY zUNqC2M1DX=T0o?%l1+O<%9#5-*~()+*+Q0|O0&$bGBptrHq5_Dm{&oPWhl5;MuZrg zK-Q!4|Cl-psI0cIThk@oDM)vBcXvriH%NnkbV_%3cS#8n0@5vwbeD94co+Zq$Gz7v z9EWibh5hZl*81K#=QGuHB(tOod&?`+@aYYR*n3u)b1KVcT%_t41n%*J@z9pd&&Azo z%L4;cj=0V-9-q??4+bi*vL+u0zYx0B@0jcR?Ehl7Y#uc(d(N(&KCxv+VZN_opQ|K( zE9*o)9C<&he@41&J_1jYTDAna+!JCcZP-k&wbh9<$5xQ{g*wtQrw0RhdSts~3Kyvl z`d%ORqgtVQ(kQv?4;f|#c8@E>RQoi z4P8W|+FnwbVq?5aMO5YX(NC3UoxCKAUXx+6uKAofiVnZqt;+q7Pn=(WQ=4R)fvAbstec7VQ9D{&w zhjX4oH`dJ=7lmZb&d`pUwl*khvojR zv7L*^Rm<)VXo+IRjVqL-l0dU9B{)?sUpxg__3zl^@qQ6E~O$fb~AW8hE0l8sLI^B zcZsJ4vVpLEEF{^cD;uWaS(Mc1fpbRxBUxn;2L9lZKnHv}*fAvpDXL#Iqg&BG#0D(E z+i{FVo(jT@%cwGm#3IfKSfh4QCb(xbys^fm<4+ue;4&#!O-jmub4{B5id}VOfMZQr zb;)Sw5|cZ2d8dP8fqhj;i1bmMt4X@#s;+m|fw0g;6MnJ?7A0$b3wUZ}HKXVx;wR|v z?WW0;m3>j9<}8T_*v4IOHgW8M%~2dUiHD5jwi9aK){eF%5*q1`kp4Pg(Z`2>*tW}Y zuS9YGI_!vjfkXbc6iy@uEa6%(B8P&liK(*}!QHf@Mq7=;-ui`J?g58egs|f$iT3T$UD_x_E_sB4V_ayD&q_h{Ngg%1l1W56Y!qWZ-q(qfEuoo?Ypwd|8h%}ppH@)W zEXf?Ze|y-4y*UmQpb@Gci+z72udnm;J6-no?(bu|YFU8bK`G_bq)I96nLQvbE>~)b zI}nko?hPhXOVtpWu=|FG$VwcL*T`|D-gKHqM>2*S%Fj{KOZgSsZf7|2kt|E3kI4OOgOr&~4g71ctut7U3O_o3=InwS|fYE=`sXx{S@< znrI3_j(`N4EOb53_*1q=S{Hwcqb585 z6+5jApWH$ST`g>GM$# zZGkga#VSD9AR#cE^l1ZGw#;&GO|DQHk}%$pumB;$eanVASau^=aUlAUP9?^oI@U!; z)eOdr04XSNQ|=7iyUawEeX=Lrg86XcK9e|@MPDq3Ai7-SbL5Oa^&&t0+54#>Q=k3u z;5!JcCt5Lok{|D5uLq<_#`a50R76mt#LI^FtfvfAX4MqNhc=?p-_`c}x+|uoHvzxZ zeU0Nkzo>L+8>Y%Oj9Mt&mEU4^EH%MmdUSO-dHls>8tLGa6TSe9s^;9KS$ z|AFS0f^8<}gi|AYVgKo0mudBzyL)JAN|VRglc&N6n{{Gg84 zI5YR|+pbB#NNPoblUbD+_^F|wM#T|tO{^M^gOFp7wyBS^Ly5+>M5)mcqUe8!6@bdi zlBZi)Gd|Jxz5vQ*TpSYeV8d$JZkKCTUP~qEc+}gnSCRnJxx!3bzmi>vuFf1ivqbuQ z1l|i`Qo8<4c}gY;S%NWcR^2cB$0bgO@(UT35WNV8iem?apBgS$C~7R+1YE?dLoP}+ z-Fvfh?JcM_r;dc%PBGP3=D<(SM`rY4=cUd8rcsI)S+{2JM~nh%`LwkJ!X^vX!?r@s z0f9sVv+KU`+_L%KRLmk2N3&`L{o*X5m0OFnj1Trq$AebJ^!xC>1^U_l;^A4%7LXk< zo3*ON4>uM>(L>l`7RHUdQBn$}kh@jld+uvgp2$l(bHi=SAm@;PvrnT)CB0dz{*5Mq zAskUZr+@<88X@-a_c_k_bC^(8F>;d~S2hLGZTle5{TX?d8mv*0kzaB70FzNdmN6Mh zn|+#ti?qb7Sp$h$m>d)5OP0!_0O?IM<)y86bpy|h-j7>hB38U-pD+q`bZ&x^G`IuMy6$ah%-Sb%-7G4tARDCT zOVEnGVc55bdHoZ0?lMJ0tWIu-NXY!;fU?x|?sJICm}>E;Dt2FOL?z*uzf-U@RougyfX$X>JZbwc$FQQxV{-3`dt>?;rmE(>8?CFPv?nRH`$tG;9%G9(9=-BL@Ab|Si zieZ~DuqGZ5JQa5Apz(0|B+W zT+S*-`BMdpN%^6c50@ImxT*EzYdh;Ikz-~_6RFm%`&&8|(b zH)azj85UvY5gyFLl7bzmd-)G%__%I(qD(o(iW2=aBlO|R)$m4bMfFm;-OT6OhFufHNdbGlZbor$8CcZvqm=ZWV-_fdW9#Zz`i&9!4fItryn!at?(YqB}$7SXzK zRH0s?{GDh11RAvE9+T|-x#bck+WuWEXXm{*+^XbflWrkVw81ol!2E&Z`c#jgU&g~c zDQBum@Js0*0c%uAdRV26{W5w{Fz!3p2r{B^@r3H-e8{l>W75LDV0TQFeN>-+eDEEUc@GYs9}l0zH^x z!Xz}&+3sH-Y=yY6KcVSTn9-t?6MiKtYFz8fFUSiG40N8l#``#-IwVI+x?S$W9g>A? zK-gHa#}azr8)|}g2UqijzJa_Zw13Hnwx4v_<+4@)Em;mbRQU!SRTy`oq){$W>G7gf zWcZe5iBj&Xns5T;QZ@_|LPIg5PJMn&4GN9zh9|PE<+VnQ&!?}G*T25J&X52J-Fb^_ z6x37!XM|z|y-3oqASe}Qcwb8?vgpwDum`dvEg*ExPDDiX7ba3F2#H8kOI*LnxF-nA zCV)i}%s#W%t&yBc+_L&VSlxS2#RohipP?IgNk$RPSB~k;$rf zrN$NddA-L7hHPj*8GSnNb7se}b-F4avWe~3#`mhsr~oK(65=yNvKZC@ z?p@=4p1&Vxng;ZYw=0->&gw<%7+lXIX%}ff!6+Tr;z1zB1URUdKp#7pGRnvd0=NA6 zE9)S6SdO+8k2mm!?Ta%?1enBtSH7vax%0gDjdz;Gx1ILf4{-h06x8ik#<(cuct1h5 z668T%tExa%;LXt-D5=L@u8M2C{!U+=wye(6bsGl*VaePiw?LO4Yra~=)i=Nhg}td; zCWkkm>z{a{@c5MU;w$&B%jfz;)2n+E%@1(efh`xkr>%K}M8Y~W9o%U5z`rg6GC*J? zH3DX-uap*_%{NBpNs^=}DeT_Y*2J`E+Xplu1QiL!oZ&hj?2dow?~9_F3irn~-M$HC zaRf3et>jyhhK=F^ULvjLig&8m{E!?Y?)DaJ&10ZT5(`dgLg=bd8I^Gx2TaFnK;Pq0 zWtCh0?Ck7D$XskJD)Hi1fbV3KeJ!cOXaTYb>C1UIZ<%? zfm4wNZVH54TtKV$)=Dgxj~BgmMB>mmU$TBWB9@x|FS7%D$IkJ6V;LN;T$3X8+Pj2i zfC2>nly&UUY4^XE|8SBU^(rUIV7&@>wm$3)eFNs)psfMSxu=R1xgI~h8i)MH0{vsY9nu?SJ3r#8-E$J4?sb^g^J#9R( zocBulAD+|v#N&q$$wUOJ&(;sLAuyeK0T^Qp;I_%70D@>jl1CILc@r6*+k+YR5-|yDeFFc;-Cn8%vp?caq1+=!Jf&b*Uwx+y22DkhFB6L>f z=fi0E>=)}v|J@J1=3T%I2MQ-Z#dsKn4)~z^zMlouCs4}K{|{bAhgC6y9rhF{BTnSy z9v~DGDQ#?Rfy+70>EQSOcK5M%0CO;J^9?|)rVD-Mo(RkOU-Axf} z@W1aP&CJRwq6JlBrr1)GBL4(kUuV3)q<0500+n@juYgWYK<-%qEd(IjkVyHOaZF_~ zG6XFI=EI3m%ZdkFo*OtLN5r5DFC_9+#^GR51XI7tzb{W` z+r)#4)I}C}OnN_4mBAGllu%>9YUAXG5caUf73kfkA1dml(-;?TxYlnkTpyezo)^|R-fXYbT@V~$r zdw6i*32tssO2N0e3b^yIcn0+#p~?+^>AVmUY}_(EJ>B54I|8P6;4xj{Is@$nlyaWo zYv2_D@J#|~prq-%=6seb&)!nX1?ld9Xb~G?I$(1G8x}u5f3DA^T(zTit-;dt^ac19 zY7INvTUt`VsEXZnZwy2&YQce_|EBZ>MDyO@d|Yk6c{NHqI{?2&k}cX1a*nI|fP7<_ z&F%4zK8LN&_z(8n(%&47>34mh?D;G^$=sR}5-EqX>O8t{zMr=GE&RPbYhU-OIqq)t z@cnjG1L=51e101Xd3J(-ecK}D_({7fMPOfDKnKg27?iE$`M*3Uq%uB$I>8R7O>wt1 z@U*zkZfy?K`P~4Kl0F^W#CTOt;PL7FddDA08kF685~yHKz{`3r`2|Ma0kKVjPn73EuT*UZe9bl zjH)D>|8IpN6O&vbXi)S3F%Ym<1BlWqdgrxzP8MIlgVEEeb+F-b;6zqKX#2P934k~O zzv=cs4ERRd4@IRj+4w5ufuj*#*Lf&N1>}L29sis6{-H;flet2+v*jS< zssH|i``qh4NA%jU@_*||!a&{x2v^R+YMj4iCt2M}BqYCZbuQUBbJ&8`ORNjYriMqmQ!% z%6kEg4FISv(q#|R1r0$g52St5JYno??AJQ@A`4%GM!>Yspj~}%d@S&E(pW_M2#WTU za`V{-IL4`dGV3)R)c2uod+S2_v1A0t*(ZBb9_*RPm&Ou2oz)m{nRc>`HK-p<7!E?gF-T5=2PFW= zb-Iu+&}v8sUYB9%CHw3@afSBDt9aW+|GLV%MU)@yTK|24){9C4i7&wu%vU7XPLhfr z5HGnM*H&g`g1N{7WaL0#n>Q%MEp$x+DBnh)FBmLg04QVzo<+b(2Dj<}fI^3btF;t2 z&2nZyC7hm~8iF$&VE!SfjfBB)4vs9yz+|ID#Vq`nRjK>%9oM4!wz;kbJjdXCx?y8) z|1;4RDAhhrDjD8~bfE0!l{5YCU+6Qo>YhnA-gtbin`TLli{gcM1vdAM zxqV$`gQ)iAMo$01konz@K#E7$_(uRZe*jw2Pv>aXV&`{RE0}6z}zRC7G9egRc3UoW!Pp< zz8#tty>5~|DtlublOTFhro5#?;_wSR+mWYShj474L&n8$^PZ>nP6$1iKh`E_t_yAp zb17NnYFy0B(&GvuA6udYYBv{Pkr~zhxWDc4wWMnW+D*{PbNjMZazZT;!( zz$Ty?zxHa)d(P`xZ5AYXeGRd?$UN>t4|&b{gPg0Qqa!K1If5bmV!QkC>l;2$`dalr z-ZhjN`17X_arj5SB0$jQQ`j$MD@T1yZ1gV0-4Xbe9*}-VrAxBrV#R2DVqDyJ76pzq z-XH`4_>Zqkh3gm_qYFTmSL?T)YUDj)qW~6D+-IUwl}EwI-k6HPXo9P_fA?|VAo>sZ zBH4a}gVGDD&97qcK05Usa+3Ah!=hnWE&xlyllnNlJUia-7IJn?l8sbVYB&S!(ii*NQq|pv_=7VrS52324Om#08a%W~x{cm1iGscGWcU;x;L)$X zhN6fZzL|i%dgX6*ZLMLO%PxppuLGM4C_M8=eFBFh?K;E1V9$dqs|792zWV~}n|vpW znwwn!0R(O=Fw!6fuV(5I*n_md!77n*@5dbgt-FK25_~Sid<;wL60juQce24g3gX*B zE&%<`2Y!Qmr0v7yE^jjt%ZK<);Q7fG@$YIm2J0c%#Xf+pZz9usmiB|fI-gyJ#R3q$ zodHG+w>}h}rk0jVL-FmR3m=8Ao8=9;dR%gscYp#jNA^>~ZuvWf4@^Af}F(Xag7n_uRRjM2NC29{$g?GHhc z3B+~zu%oxX84DyTDlE$G1zpV$u?Rdw)M-mj50QL|SxLxpq#vr-Gfv&J%|axhl~?3o z&JR|!d-rW?DkyB6VVj_d95VwH))Nji1B&9@<7LPtOw8WzV-uvk$L~54yKK$n%WDWD zmb5l4NWFOPVU+eG6rKE&O3h}C;V+KSXhXZ5-U+H0V_YRse%RI^^hpu177N(UIC~V1 zIfSCtB*Wt$vG)+cki2hDo-s#p%9kKpC~gm!`zx$nxtv(oum~f`Pbd;y2&)_AM}pK6 zDnAS9rl)?ql_lrLHi06qIwi(g%DmH4z5b&5rXHsW(?o(M07(-kGZ@0^!yt+t%njQb zgB77$J}nz>qT2y_CJ`ePOp2Pa1?yM`WjDdy&UKrOTV3>}os=|#ZJ}=IJ4Fp4C0ewQ z`y*tL0w6yTQKF#ZV9Ua4Y9ZZO!uQioGE%xJC{U1nns?h9TIRDbGcTs;yYQ^6pYY|a z(+o|JQhR=Axh+y&A6i*hD4RgGWPanu9LCvK&izxx?A^SKkZ*T5{b80wv=QO<*m3;O z)(nki@pP)vUUhtub#pqkPV)Xmy)^zf><8+WI_Il>F$lL}uJ5)2t8(3l!oPU)r zIH3vC+hqmgx5Nskbt9-34l?Gs+>Db(_ldGY)ks6QYkBAl`W(2k{v01mO#SRJA-kN0 zS;Cjcx4vJn?kAwa+otWkvpG-Wzfvztt>kc6iNbSPAW^j+d-@xlstZ^uC zt}8%9@5##q>0#uCXZJAnm7ZhzFbxD~0#g%ghp(cmqE!PzFa?cL_6yms!=MlE*JZCP zsC_>~I1JNacId@n4Ezp_uGE~Y8u4H|Ad9W%=MFbA-ipjpFoPpomK?7NRJ5B;8`FLB z;_|3yIl`F*w@lF?vYDDsvR?uj7PA@cuf=mZXKP?NnW=>6(e43haoJeR&mLIlY2vNW z=rbJm<~AdZv|8cgrVtInHjTWb^N6PMFF|hlPz;lm z-(K==v0IEhpS`VghS8`_1$_W@nNxxVP)}kjV7qz{sY!xgkl{L*`!q;r`?#tPc0w6s z%+OWQaob#Wu+W6JAU6IWQ}NFQInH!)Rf>OfC@6eDn5QkIkbK{K!WiNghQnIV>^eF1 zkg3c?7Skj9$%Sus$4FB$g*LDM!NRYZk5L-7JbmqUF=eNi?pxHzTF7#H=t%d#E?177 z6ZX>7aC=Jm{Jw>n2V3Ze@^izS0l9mF?QAMz{A=M-H-k%-EF0eDhfIhLbCAi6AAeu$ z20%wu110TA7BS@7$=W%+_!<20R7tuw(--^Wrn9Vq1CnDFblN?9K|FPiL17Bgawu9b zz9}X6ZK5==n4ape-B;4Bv-^~7w~`oA&g-fvoQ@QxxkF~tv+ULgF+ZqXJxcSw?LT90 z5XV?R{;}3le_FuTxREIYTt+mxQsJ@CTz)#~=Pj$aIV^(whk9j+0)oIMnhdVoOFqnk zPL-@GI$0VkHRn?KXixP;{V}Szf@BCTv$T7*&6!f9y5fc+Zo{m6ra4G+LW|jrbxyA6 zn;ok?YH^ZD+7p4$v^Duk*Qs1MLlds3G)HEopd(nj>&zshaDfcp60!K6^e7Za zvOEs<*dMl$@sKqRLg*#=~!Vo@RGDSWmY4yi9~*$r2qzJqD8}`^8q7tY8aK{Bb;g#!7gPcBUAY=QzeMkJY_SP)Y<%c9^owoFb7Fi_RC|T(2{)-e+hq}|p_gc)P&AT} zm)IZ`HAY^Fc9ym`If!R=1u8tERqYvZOb5^$@4%u80s^A%Kk5ClCj7H6)q4HF{$fg} zx{dulKN_JDla~5GqExtpy=JPSBvz-kxvg4znDAPOQ&KZXn3Dx>8sdv)`kqvf&C#%I z_}7;}Ui*?H1MQDnjG=Zg8qi0J!NelFj7T|*jz}|){Pj)m7YD-}!oDD}^uVRZTFqgL z*W1@JL`qE?GFo^>3lErM7cSFxvn4cysr|<0Oq*T*8I*t6;XBK2nBS1dlV+<$t1%{F z%_KkDZP-etXqI7IVQjA197BgaGA6?&7=b4ox65h^*=Rc<8vJD*Bx2Yn}kp4?{6dNZ6XFlJCd4~jsUcj+-4z4O{eq2Yq@nVVhN_L6p zeN-2TT-9X>)rYvohMn2gZ;R*?qCg86>HCcN{%;qLLL6JbpWVU`GsQE8$igWC;)6YQ z{2HA|Ta0#I^(^)UR*o8%rrpY7Or_dL`to$1!r?6{7dg!gX{w^O_o4!eLx{L&UsJ+t zEl!cBt3pz~d8#QpV$Jwm){{FrS!i41&|~3b=n2;ubhwT#vx~_bTs{!k*G(+TPTx)HruL58 zD|}irq zrRy%M*3K3mcqDUQV52!3a>1sGJk9aB-=`wqiG_8jui=0cH=&1f9@$jmX%LEw6Emnr zyBVdU8Ss^<;wLN#`^Si<-q6VFOE)GTWK}oYVKhTWeA~Gr89PBvya{JmuF1yF$^kB36(rL9uE9kjvOQJ|7Z)c4+I!%V0QI!nOBa`zuH zpYWYhWwaw$K+v)(l^7o*n0d_LCI4Vdg-S0$)}tW6mZqX0mTC&DOq|ZZhVFw<6{=DD z2W4ndBmpL!$#fb)&GAEV$4>LX(udsHFV-P}aNUZpbX-oc{Mo7eZi+%u^5m(c3g{43 zl*U@~WXc5JNWG0Y%i2M7<5+ANrfj@p$+(0!NY?nj-df=xd-!yP7<`z_w8>AMOQ>i> z_wD+LUo&d{c4^?SY;E5Yuh^VB)mLe?JYeY@HireYfkHD=RNUg3)CD8xNwUmHw~6Pt z_5{Jc7N$B!zlsCO!Vl)z{j%xY4A!CIG}sblr1->-;;{ZBgUb$lll+Sb_BoRuT0BiL~buo z&JN~Vnf&hbg){}WRcxCI*Cw8I%$91|Zppiis1y8rlUsV2&Xs^q1Nc(jz#R{i%C5(` zy0^|hF``opsPFFXuF8^lNnvFY%R?V>W7dlm63qdmGtJ1)3smfZz6c<6ji&*nGT?Os6{WGN;K$M8GNSYBCT3~nQcTJ8%vXFm2{ggMw`w# z$(tCFkJ4ze^*J8EL=5!4d<}t0j_|w4N(?EmlUljt(5)=Peb4pmNn6kzo^hDuKsdyq zT&kE6bTGUWLRUD0brpo_&!zj?_{lbNRs9XO0<0UWQtmn9#F_Xw;{=S_T5=mBUH!mM&hGo@CJ%s$+?Y1G z)!10hiztc^%T^<#$%@uSFtFZ@pZzHE%=+=zAd|^Bs?6}L8Qk2w@hxb@Qq&rH#1`k~ z`VT79pjG`#b?yb@1~*;J2Vfn7)yd=!XE6QVBkp4djz8N|XN|7`YXFcHeLzD(od2^K zvB(3UewY;f18waF4W|7GGH)OLp85X+L8O?%10Y)VG5LUX14u>%KfvJd15gV9x35qs z|JQ4^3P?!o?d{ofe+DbZ_K!OtbAyN5*)Je?8U)u`?U#Q2r#*vuc|vN7$y(5q0_rRn zx&eF)2rAqABLDcZmR44xXEvSP@Erz#_6(L21K_Y&=zei`GW~kF;Qx04^f5}$z4p$3 z0iTD4L*@mh1u#Zw!!z_W0m~F%6awKeCMISIDZFvec?GmM07r_OyZdx>`{d|^)X9vH zQp*?WULNg5X+kB6qT9MIN(get^5rs7|Gd5j_neBAs{~%x1*e@@j8SK z7Hx01E>uy-+e z*p9Y!xot2*dqlG2V*G;{XKuS{+!_gniAGqZeAIs!xCjZ!6wdsx6i9*ercaB zUZvia7Hum;uv~5NowN@ugfcY)7W@w|uOlKPbYgw{=DZD7*{lCAR0bOMsJ4kcnj!YE zUZv)G%RIn7Or(6(nJKNH_9g_*?5(X|>sXk<_-<-9bI8;*|IEq7B_;fWYe2 ze}V5@2=aWO9R&hyLhPfp^$*029TOaWm7dK*P@cGzaRLB%s4cMNZI1=iK`%CnxW)0Z ze6!;eyb%<$xrPX?DTNVD>h?LHsvUJR9B=o2t81{c7ibY;EOHl!*rb5E_px>Lc2+}W z)p?MFG7<9G4bit>Mj*&YVS9}#oOAITju^Y4A z^dgpuU_v6$v3LRg((wpD673$Z4_{UA4zH_MQYbhV1o~}7&;VPRFxX0$>|6dL?}42Y z49RC-C$&IB?{|)Nom1-O=(@TDe5_vG^K|GKd^RX?C-!3?5(6`cn`%MhtR#OqCu1*m zJ&r)=_c7xs-;awN_gR`@3XKJu@J?z6oD_+wg|Y71a&XJaXYr-l#D?A=f^GJ}Kwtke z0JMU(9N5MQkaz+;ovsQ^B_&dmxOemzlv|3ofUR~q1a0-zm6kU8M($3lep1#%Z}bSM zH;OA*E2biGF2JV0Ie$UhLLI)yM-M(QZ%9{gQl(H{StAjf-Z=A6N%F0RV`dF--n~YO zX!3j#ow1Pl{#^CmT+}M_+$#uAJx~(P$oZ)!Rrdb9-W3}P^vUjfdDVe{d;&skee4fF z2F&KN!<}FNWJpIF8@@kHGljIEIBCD_)<-I0FbxzQy$#n^@1mY!Ru=Gk`n?X0DgUE< z0*dHsW8~v;o!#dG5vqlS1)$3k{h7;x-y;U1iQq|npXXFlUe@t}IB+J+l4f$Ju#AO5)T5!*df>-qwZU>asZ{RUX01cD^V0Q=q7tq%)fEs^%aEPV{Dqo>O5IGt&ZD9B!9W?NYQ70m|iC z`eWqPuj;pppGNFyZLwx>Ic9yte^+s<$txQ)OpH{Jsel9XtBatkB1iUs1Javh_dL{< z`3K)PF{gF>{KSvI56b2}&^K+kcMG0|55R*GzCEqB4fN2LP12WF)nRe`wfK|oad-}6-ij)2eoIlw;yMXI~M?P$p!cfV32Ryf#HMJ*iYj8}sn0FQM9 zJg+=JLLM7uW7u~~w0OY8=Mj21nOK2!m+SE=ArNU7o;N6Uf5yk6i$ui&-lOlatTBmt z(s*x*%ay7BXU>0r?pqL9iW)SdXI#SI%UgY>AZrBFsH-LcnKbvhq_}gBe%I@xNkin0W>HgF5 z8<=)tDF*pYez!WZIQ#IuHOt&P;5&IGAp=S+JRooa{wHzt3*g0X{kTg_#TD8Fhx&^= zfX*93Jo99@0)XzY8IY!20hb3rP!|LQ1c3M`NzBmg@kh_L88|Qj%=Rl-hYAZ#fmr5U z`}nE*X%(#9yWlHd)_^Psum=FQm&0r0dwnqNWSb&E0*K*X-cxw;g7(>{i32{<8@}(P zB9`X?reUPtk<%7s;IiIQ+wQfk>;UB^`7JduLe7{3$&r*Ls~SgVc-5~F37g`lNPK>9 zk{wpp zE?um`t+Y8tY}Ji5JxI!@zfgA8s$va65!C#GV@UzRp1@uj_j3vLABp|VYph@QZ!!O7 z$ULSufW$Ea5J3qff?+ZMGvW*JSGc;-{bg&iWFxe?#KVT`krt+~4 zVifc;(=+PRd}zY|{(}=erjWKJXnq4FalEI{1OSDWKcQQTTX`~%sD0sFw)rLfK2wM3 z4U%L7^mBl!8YQ7TA#xc@Idrd^mnuUEzE&WaT0tU86Rx9l(k*6rBDcK0m@?BT!;R&; zXtDVG@_c#WsCkXXGDJ2wG--9iqo|M`&q^-wZ|x{|9c~QqA~W;hCkE^qgu%%fPv;I;x2fHyZb}IupKamMZ0Mhw+if2?UkmKrHFUunHu?FiN>|l8d<5@ zBeT{aWMY;~yP@e^Ma%M`L>e%`$=tTx+}B)>PSV!;@&<65zuz{!%eUniNMY^|yML(A zO`OrXR`QhJyEKS<1BbTf#-C6?oPx$W#zqObWbXkkx6X}gdnHTA@eT&NdywL0eCcP` z6E2h)!h@Sms7P@P2W)nPO#Ql4(=zM1WuJ*2C1=~%BV&{S-4&v9ONMpZsTK*SKLgZ_ zg&U3^Z^FVAzOcW6{g|VNQ?Jd9lf|eq3qul}y#|S}TM$XDKu14+Up%Z{2(td?iSugj zN^RsBS8K_lsgWo~Sc|oar8)jwDk<2R)nku7hS^CCxWUpr7|g6SeU*&YRe&TEmgPiB zcTo4sfvH!k?gUR2`0k&z(7vAk5?IdweM!b3af7#%rW8Vp{%h>3M->L7v*nWI5 z&H02XslL|za6{1?!F;ZTT~ou&*1c51CWmU>=_P|X?m(GXfiX)H)YwLvv0`%qT3fs5E`h( z=|Q6v(S$-r_dmZ;Ymdo?jD1^+j2wkshat7oZoB)!{8Nc@b}tvyu_XJGtc$EUn_eSgAd$ZRETgnVXPo zKenZTw;EO|8e?S7>w*E9FrPt&*@PzX?qe;FprlUAmp%3bjJ;oS%wiV2+w(_cKgal! zDCv-L^cuQ3A#(EJ_Uckgn1Wb?MR$|;*d(DXl(!*=M1{sJRKM_Kwy^1NTf-PlaYiC% z!e*4llvYm|DE^@jkvvaloUMK2_!IFI`nBQ`e@oA%)~la&PyNkRqNF>AD2>vifp}Ix zMV_A%a+?9B`o|g)x0CPA0&%}z0SCmO4r{$+@XDy;&(Ay>frT>^ z(06ioas-fVb(Q^Ub?aOC#L7$$YF3fIGI(ohTzytWr*POpA>vg+>GJN7>zyBmx4iYC z#vp=qYALTRpkGQ*HAO!WxnOtZFA$UnxgBUY8a^^oHxZa$%{8Ft3F<^;4lIbn{Xr9r z+1)KWL@ai$q^90%3`(P_yi#H{9WGVwUCDPcQ+Jj7UZN{Ej=%FRfxQzZbn<4b6lWxV zM70DAD*U&w^2lf^^W)y7X0)M|xl`XZF#7*4b0r8+`MmKfJ*kkNaq>o}0O%e!x3`yc z9CO@o=ATrlEHAG5yjy2zMl}_m#LaM9b=?OwvNk@)dtZJ|dwll-MIOyXyz$*jCF;kR=Zy zd%GgSgno7+uE(v3MI>PklXa3zglFQit=B|sjv$LuQ_tF1;)GN#60J|Bd6b`VyAl;M z!y>1psrh2UEu=2)^DbK*AZ)xnbre&#r-*GLU&zny>$M9{k*}Q1uM#3q+P&E=wyDDcuKH&}uWOG{pZna72P)M6k~1{8QrNP#hE^V#$Mc*Cw1# zyT+~4e2ZOE=29-$Z8;wC2c)ZFg&z+<@f(6{ z5N$SLNU2DA!ZCa?wY7!YOp%3sr~=i1W&%8aIwPtOvZC*gmYg1EL^DT;`$Wya7MBnI zT^jA9)py=tj?Y1i<+gV9X3=}rn@sfr!v?Hsr_)`?BUs^H+uz2 zGhpywt12f^#_6aS45n6hpkuJ_(?SzY;Cj6Vj<)K?#9dz9a2#S^=`usKuG&a6PEGPN zXULvyNv?QJP|GbX)2&&vtlhQcCjGGfB=)r5v>tX(LS>AWO_*4gO|&DeA%kN%CJG{b z1?%>pXjYNG&?@pC=mlwNZ6$i=FPS{m7A?a6;&^S0XzlLNGl8)u6F@rBqws>V7Lp=@ z;LZ`lC5`PmZZVZPQgrF7pyZ%xQp2e;Pn%Dz^&lp%`j4z5LQ%I!@CXSrMhv1Z3{Tl_ zM)WdxYkU`F>rd&qE`R$h;fR_2R%o(V{hOC{*x%9r(0ap^yMwn)R^W^kf|L((0A0g- zJd^9c`e;zrTv1yK_rZ5K&JXRZPf-IZ6kq0snWXv)rl&ITp=|vob%7qisI}ApJ0*Q` zZ6;O;T_t@1_Waha=M~(zg`SuO41prnFUEWu=*gl^0_^npb`j>;-hV7XAEgOU2jsck zOcx0nFKseE^%nMeS!+8H1HTw(3h6@=zBdL%e_+lHdUW~i<{8h#*D^Y3$#oLo5HN*) z|C?ExyOhR(o&JEnA&V6h?8a7883+@k^E*X{6$V>LFOU`rHn6y`A`tyYvhi{N1>GUH z7)~&`S5z-HlnBH~c!loIcfcUL=Rjn8hA|F!@y8QcZN84(VLuX=rS6ojy_x=`l`3)E z&-5uPE%Hk1SZD|p6$sus2i+T?%(w|O)jDMH7El-dHXvVpt08ZzrP`0Uyt`U^A(;>v z`A^i(%~q>eu3FN}`1I680ddpM)xp8R%j*H~gYvJR{^GG1(sq;U!Asvm)Vs*DaH-Pg zl9?+opp2DLGDGf(YL=G;pvntcW}2aNNlQ0N9hV?f!DY56$VDnEnIIz^I?F51A#Nd% z+DBJ(eN5!nRdaUw`7HPA&2Sk3v4)7!N>gEZpc^*{`*`1Ge2x@+Fr;4q;p7l7&xu*x zmXuHl9-1}J*^ZBm9b5@N)=Tt_jL3gqh5HAXP!(8)x|4U{k4({ZwYOK2=)Tw1Ci@JG zcbuVRvUE@ZQgIr;zbi9Y8|+HaeV_}{n5$4Xh!j4KWz||&WQ{DFk8zmtrHgYQz@Don zm6Q9ZE2!ip)o-#PQ|4zLEvdA^`5<4Co(jniYIk2&?*(#R=i_NV?8UTbs>VEv8b zKMa1*5TAueE>`#RES%y!n1#aWmP|8y&YyS7$X8ww5zVgBqIqbePW+2|S z=xr!{c)st3nEOD{;Pv9}whrAtSVEuQhf+}&wrC=W^DMYqG zY(KZswzp-OMY9eXk*Z9oYu*0;_9sbKwo;5!pz}Ed9(B2uIKUfn0fDERqoN3XQVcKD^PF5pRD~l&5C-u*?Z+#qFe@}IEb=7VGbxK|VV@h7zlnyFVXP<%@ zhl057P03aw+s`+}K_0p>GhJhLU(=87Zihs_7)_fc9=_J|k2o_YUI02c%3{O&QSjb6EA zt3|sCW47&R98}ym)#22%IYw<*H8;Sl(_KX)K|zYsL`o!L9Bi|3%MrFj<`E+LtX=X= zgJ#YsPx{VJ`f-sF{!~;%XdxIp=i))Yl#TM#OOS4yK&kw+9{5)|l>wjAynp}xvuDrn zGf-B3^dz+vl`CEMYeh>dsVrbT@g|h3TG%np7Le4U5mm56q=;UrxT;WvQMpbd=zsJr zjx}PbCmK(N5%kDEVqbKoqGDfY<`{M#*w3Fo&j)tqrOGpF|4A0~vJ%qADCIHmSGH){ zIrb94$){bK!(aXukyhru4y5!b7$54DuKx4j&^kA-O!EjQ7t*1Tu^XaP`M^`!bscI_|K znoIgqCK1t@xc7YlL$SQ~g@#B4Eqc0o5ce4Hk|$JXw#;ZMTY@p$RZvP)t9CKv7Hp?< zEC#BC(XpziI3S9L2%#lsNl#d@X{}nd8`8>8vtMhQ6jK}RT8Ucq8gyUEV`|A6&jPO6 z%LS>q2z7u8X^T^=s)td^yych_vt@#&M42@#gifPotkS4$ff`D0_(U8qo`AaNYZVp$ zi#?fY#S?RV-{U|F&jbn8Nq(x0M?)-HLSM;JPSdZ5UMaJI49c&>)H)HZn*+vB(gQ?h z^)uSyk}4#dF2$ITCu*=Dr*T#uu2PlxLn}(uX_P9_O%=!St@etFL!$UkKF#U>fZlE> zaSxN!fR-8Aq6Q_#B?WiE0r-{fGOgCWbd67RfOP$JAKf5{C7l38EEK6xRj5<57^MKU z3yWaZcYdON17z)05iTjk2AsyIDg|unUg|kT2=%a{;_&zj+!|*)9?HqL00000NkvXX Hu0mjfq*gGm literal 0 HcmV?d00001 diff --git a/img/2copy.png b/img/2copy.png new file mode 100644 index 0000000000000000000000000000000000000000..93c4353dfb898a0e599bb1c71a9075371cb9caa2 GIT binary patch literal 5971 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 literal 0 HcmV?d00001 diff --git a/img/3paste.png b/img/3paste.png new file mode 100644 index 0000000000000000000000000000000000000000..11c1449277fa034658a00d8b64bf9b13450beba7 GIT binary patch literal 7077 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 LK%+wKQP_U~l#At+ literal 0 HcmV?d00001 diff --git a/img/4pastedone.png b/img/4pastedone.png new file mode 100644 index 0000000000000000000000000000000000000000..321b7533d33dd0838b57f51400276b40a3449a46 GIT binary patch literal 7734 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 Date: Sun, 13 Apr 2025 23:11:29 +0200 Subject: [PATCH 31/40] add limitation --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cf8d712..b8384c5 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@  # Timestamp Changer -Timestamps Changer is a lightweight Bash and PowerShell-based utility that integrates directly into the Windows File Explorer context menu, enabling you to **copy** and **paste** file and folder timestamps with ease. +Timestamps Changer is a lightweight Bash and PowerShell-based script that integrates directly into the Windows File Explorer context menu, enabling you to **copy** and **paste** file and folder timestamps with ease. -This tool is especially useful when you need to preserve or replicate Date Created and Date Modified values across files or folders – ideal for organizing backups, restoring files, or syncing metadata. +This solution is especially useful when you need to preserve or replicate Date Created and Date Modified values across files or folders – ideal for organizing backups, restoring files, or syncing metadata. ### Features @@ -106,5 +106,9 @@ Paste (confirmation) Paste (done) ![Copy](img/4pastedone.png) +### Limitation + +This script is designed to work with **only one selected file or folder at a time**. While it does appear in the context menu when multiple items are selected, it will be executed **independently for each item**. This can lead to unexpected behavior. For accurate and predictable results, always use it with a single selection. + ### References From bf6d5a91ba8ca0de763bae3c509f9e7247ca204e Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sun, 13 Apr 2025 23:13:10 +0200 Subject: [PATCH 32/40] add references --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index b8384c5..4395f76 100644 --- a/README.md +++ b/README.md @@ -112,3 +112,8 @@ This script is designed to work with **only one selected file or folder at a tim ### References + + + + + From 0efd7b20cf6fe9b7e2815bbe65cd197c5e590133 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sun, 13 Apr 2025 23:13:28 +0200 Subject: [PATCH 33/40] final minor script updates --- tsch.sh | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/tsch.sh b/tsch.sh index 2b1111f..7174b86 100644 --- a/tsch.sh +++ b/tsch.sh @@ -6,8 +6,8 @@ version="0.1.0" bashPath="C:\Program Files\Git\usr\bin\bash.exe" scriptPath="$(cygpath -w "$(pwd)")\tsch.sh" iconPath="$(cygpath -w "$(pwd)")\tsch.ico" -fRootKey='HKEY_CLASSES_ROOT\*\shell\TimestampChanger' -dRootKey='HKEY_CLASSES_ROOT\Directory\shell\TimestampChanger' +fRootKey="HKEY_CLASSES_ROOT\*\shell\TimestampChanger" +dRootKey="HKEY_CLASSES_ROOT\Directory\shell\TimestampChanger" clip_file="$HOME/.tsch" datetime_format="yyyy-MM-dd HH:mm:ss" @@ -79,8 +79,8 @@ function install_internal() { add_menu_root "$1" "Timestamp Changer" "$iconPath" add_menu_item "$itemPath\\010CopyDateCreatedModified" "Copy" "copy" add_menu_item "$itemPath\\020PasteDateCreatedModified" "Paste" "paste" - add_menu_item "$itemPath\\030PasteDateCreated" "Paste 'Date created'" "pastedc" - add_menu_item "$itemPath\\040PasteDateModified" "Paste 'Date modified'" "pastedm" + add_menu_item "$itemPath\\030PasteDateCreated" "Paste 'Date Created'" "pastedc" + add_menu_item "$itemPath\\040PasteDateModified" "Paste 'Date Modified'" "pastedm" } function add_menu_root() { @@ -114,12 +114,14 @@ function uninstall_internal() { function copy { dc="$(powershell.exe -Command '(Get-Item '\"$1\"').CreationTime.ToString('\"$datetime_format\"')')" dm="$(powershell.exe -Command '(Get-Item '\"$1\"').LastWriteTime.ToString('\"$datetime_format\"')')" - echo "File: $1" - echo "DateCreated: $dc" - echo "DateModified: $dm" + echo "File/Folder: $1" + echo "---" + echo "Date Created: $dc" + echo "Date Modified: $dm" echo "$dc" > "$clip_file" echo "$dm" >> "$clip_file" + echo "---" echo "Timestamps copied" } @@ -129,13 +131,13 @@ function pastedc { dm_old="$(powershell.exe -Command '(Get-Item '\"$1\"').LastWriteTime.ToString('\"$datetime_format\"')')" dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") - echo "File: $1" + echo "File/Folder: $1" echo "---" - highlight_diff "DateCreated: " "$dc_old" "$dc_new" + highlight_diff "Date Created: " "$dc_old" "$dc_new" echo "---" - highlight_diff "DateModified:" "$dm_old" "$dm_old" + highlight_diff "Date Modified:" "$dm_old" "$dm_old" echo "---" - read -p "Apply changes? (y/n) " yn + read -p "Apply changes? (y/N) " yn if [ "${yn,,}" = "y" ] then powershell.exe -Command "(Get-Item '$1').CreationTime=[datetime]::ParseExact('$dc_new', '$datetime_format', \$null)" @@ -151,13 +153,13 @@ function pastedm { dm_old="$(powershell.exe -Command '(Get-Item '\"$1\"').LastWriteTime.ToString('\"$datetime_format\"')')" dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") - echo "File: $1" + echo "File/Folder: $1" echo "---" - highlight_diff "DateCreated: " "$dc_old" "$dc_old" + highlight_diff "Date Created: " "$dc_old" "$dc_old" echo "---" - highlight_diff "DateModified:" "$dm_old" "$dm_new" + highlight_diff "Date Modified:" "$dm_old" "$dm_new" echo "---" - read -p "Apply changes? (y/n) " yn + read -p "Apply changes? (y/N) " yn if [ "${yn,,}" = "y" ] then powershell.exe -Command "(Get-Item '$1').LastWriteTime=[datetime]::ParseExact('$dm_new', '$datetime_format', \$null)" @@ -173,13 +175,13 @@ function paste { dm_old="$(powershell.exe -Command '(Get-Item '\"$1\"').LastWriteTime.ToString('\"$datetime_format\"')')" dc_new=$(sed -n '1p' "$clip_file") dm_new=$(sed -n '2p' "$clip_file") - echo "File: $1" + echo "File/Folder: $1" echo "---" - highlight_diff "DateCreated: " "$dc_old" "$dc_new" + highlight_diff "Date Created: " "$dc_old" "$dc_new" echo "---" - highlight_diff "DateModified:" "$dm_old" "$dm_new" + highlight_diff "Date Modified:" "$dm_old" "$dm_new" echo "---" - read -p "Apply changes? (y/n) " yn + read -p "Apply changes? (y/N) " yn if [ "${yn,,}" = "y" ] then powershell.exe -Command "(Get-Item '$1').CreationTime=[datetime]::ParseExact('$dc_new', '$datetime_format', \$null)" From 2f7004e65bc01b8d646d5807d98ed1847c736188 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sun, 13 Apr 2025 23:19:49 +0200 Subject: [PATCH 34/40] add disclaimer --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 4395f76..44d2c50 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,11 @@ Paste (done) This script is designed to work with **only one selected file or folder at a time**. While it does appear in the context menu when multiple items are selected, it will be executed **independently for each item**. This can lead to unexpected behavior. For accurate and predictable results, always use it with a single selection. +### Disclaimer + +This script is provided **as-is**, without any warranties or guarantees of fitness for a particular purpose. It was created solely for educational and experimental use, and I do **not** intend to actively support or maintain it. While it should work reliably in most cases, use it at your own risk. +In the future, I plan to develop a more robust and user-friendly version written entirely in PowerShell for a more native Windows experience. + ### References From c145446e7cbb0adfb2ef9fd55aeb0d5ccdcbbdc1 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sun, 13 Apr 2025 23:21:37 +0200 Subject: [PATCH 35/40] v1 --- README.md | 2 +- tsch.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 44d2c50..a89da6c 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ Bash and then choose the option `i` ```text - Timestamp Changer (0.1.0) + Timestamp Changer (1.0.0) [i] Install [u] Uninstall diff --git a/tsch.sh b/tsch.sh index 7174b86..995b481 100644 --- a/tsch.sh +++ b/tsch.sh @@ -2,7 +2,7 @@ ##### constants homepage="https://github.com/jurakovic/timestamp-changer" -version="0.1.0" +version="1.0.0" bashPath="C:\Program Files\Git\usr\bin\bash.exe" scriptPath="$(cygpath -w "$(pwd)")\tsch.sh" iconPath="$(cygpath -w "$(pwd)")\tsch.ico" From 7a62dd8d4142f3743eb682333e87f8632ef4a408 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Sun, 13 Apr 2025 23:51:56 +0200 Subject: [PATCH 36/40] readme updates and fixes --- README.md | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index a89da6c..a75097c 100644 --- a/README.md +++ b/README.md @@ -11,14 +11,6 @@ This solution is especially useful when you need to preserve or replicate Date C Adds convenient right-click options for both files and folders: - - ![ContextMenu](img/1contextmenu.png) #### Copy Mode @@ -41,16 +33,17 @@ This saves the timestamps to a temporary location ("clipboard"). Right-click on another file or folder and choose: `Paste` – to apply both timestamps -`Paste 'Date Created'` – to apply only the creation date -`Paste 'Date Modified'` – to apply only the modified date +`Paste 'Date Created'` – to apply only the Date Created +`Paste 'Date Modified'` – to apply only the Date Modified -Each entry starts Bash terminal and runs the `tsch.sh` script with the appropriate parameters (example screenshots below). +Each entry starts Bash terminal and runs the [`tsch.sh`](tsch.sh) script with the appropriate parameters (example screenshots below). ### Requirements -Windows 10/11 (Tested only on Windows 11 24H2) -PowerShell 5.1 or later -Bash +- Windows 10/11 (tested on Windows 11 24H2) +- PowerShell 5.1 or later +- Bash (recommended: Git for Windows) +- Administrator privileges (required for installation) > **Bash on Windows** can be installed in several ways, including: > - [Git for Windows](https://gitforwindows.org) (comes with the MSYS2 runtime – [Git for Windows flavor](https://github.com/git-for-windows/build-extra/blob/main/ReleaseNotes.md)) @@ -59,20 +52,20 @@ Bash > - [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) > > The recommended way is to use **Git for Windows** (MSYS2) as it provides a lightweight and user-friendly environment for running Bash scripts on Windows. -> This repository is designed to work with the Git for Windows (MSYS2). It works with the official MSYS2 runtime too, but it doesnt't work with Cygwin or WSL. It could work with some minor modifications, but I don't plan to do it. +> This script is designed to work with Git for Windows and the official MSYS2 runtime. It doesn't work with Cygwin or WSL. It could work with some minor modifications, and while I don't plan to do it myself, feel free to update it to suit your own needs. ### Installation -1. Clone or download the repository to your local machine. +1. Clone the repository. ```bash git clone https://github.com/jurakovic/timestamp-changer.git ``` -2. Open a Bash terminal with admin privileges. -3. Navigate to the directory where you cloned or downloaded the repository. +2. Open an elevated Bash terminal ('Run as Administrator'). +3. Navigate to the directory where you cloned the repository. ```bash cd timestamp-changer ``` -4. Add the context menu entries. It can be done in two ways. +4. Add the context menu entries. This can be done in two ways. Run the `tsch.sh` script ```bash ./tsch.sh @@ -113,8 +106,13 @@ This script is designed to work with **only one selected file or folder at a tim ### Disclaimer This script is provided **as-is**, without any warranties or guarantees of fitness for a particular purpose. It was created solely for educational and experimental use, and I do **not** intend to actively support or maintain it. While it should work reliably in most cases, use it at your own risk. + +### Future Plans + In the future, I plan to develop a more robust and user-friendly version written entirely in PowerShell for a more native Windows experience. +--- + ### References From 40ac8926a7a7e4be1b610ea9ed180cacc111db6d Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Mon, 14 Apr 2025 00:09:47 +0200 Subject: [PATCH 37/40] rename to tscp --- README.md | 18 +++++++++--------- img/1contextmenu.png | Bin 54248 -> 54223 bytes tsch.ico => tscp.ico | Bin tsch.sh => tscp.sh | 16 ++++++++-------- 4 files changed, 17 insertions(+), 17 deletions(-) rename tsch.ico => tscp.ico (100%) rename tsch.sh => tscp.sh (94%) diff --git a/README.md b/README.md index a75097c..79da8fc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@  -# Timestamp Changer +# Timestamp Copy -Timestamps Changer is a lightweight Bash and PowerShell-based script that integrates directly into the Windows File Explorer context menu, enabling you to **copy** and **paste** file and folder timestamps with ease. +Timestamps Copy is a lightweight Bash and PowerShell-based script that integrates directly into the Windows File Explorer context menu, enabling you to **copy** and **paste** file and folder timestamps with ease. This solution is especially useful when you need to preserve or replicate Date Created and Date Modified values across files or folders – ideal for organizing backups, restoring files, or syncing metadata. @@ -36,7 +36,7 @@ Right-click on another file or folder and choose: `Paste 'Date Created'` – to apply only the Date Created `Paste 'Date Modified'` – to apply only the Date Modified -Each entry starts Bash terminal and runs the [`tsch.sh`](tsch.sh) script with the appropriate parameters (example screenshots below). +Each entry starts Bash terminal and runs the [`tscp.sh`](tscp.sh) script with the appropriate parameters (example screenshots below). ### Requirements @@ -58,22 +58,22 @@ Each entry starts Bash terminal and runs the [`tsch.sh`](tsch.sh) script with th 1. Clone the repository. ```bash - git clone https://github.com/jurakovic/timestamp-changer.git + git clone https://github.com/jurakovic/tscp.git ``` 2. Open an elevated Bash terminal ('Run as Administrator'). 3. Navigate to the directory where you cloned the repository. ```bash - cd timestamp-changer + cd tscp ``` 4. Add the context menu entries. This can be done in two ways. - Run the `tsch.sh` script + Run the `tscp.sh` script ```bash - ./tsch.sh + ./tscp.sh ``` and then choose the option `i` ```text - Timestamp Changer (1.0.0) + Timestamp Copy (1.0.0) [i] Install [u] Uninstall @@ -85,7 +85,7 @@ Each entry starts Bash terminal and runs the [`tsch.sh`](tsch.sh) script with th or run the script with the `-i` option to install it directly: ```bash - ./tsch.sh -i + ./tscp.sh -i ``` ### Screenshots diff --git a/img/1contextmenu.png b/img/1contextmenu.png index 517dbde8abffa7ffd9590b10c87ecb6cde9e67d7..284e106aab8ddb15ee097a06189e9062bdc68c9c 100644 GIT binary patch literal 54223 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 DxjHl) literal 54248 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 Hu0mjfq*gGm diff --git a/tsch.ico b/tscp.ico similarity index 100% rename from tsch.ico rename to tscp.ico diff --git a/tsch.sh b/tscp.sh similarity index 94% rename from tsch.sh rename to tscp.sh index 995b481..18700b1 100644 --- a/tsch.sh +++ b/tscp.sh @@ -1,14 +1,14 @@ #!/bin/bash ##### constants -homepage="https://github.com/jurakovic/timestamp-changer" +homepage="https://github.com/jurakovic/tscp" version="1.0.0" bashPath="C:\Program Files\Git\usr\bin\bash.exe" -scriptPath="$(cygpath -w "$(pwd)")\tsch.sh" -iconPath="$(cygpath -w "$(pwd)")\tsch.ico" -fRootKey="HKEY_CLASSES_ROOT\*\shell\TimestampChanger" -dRootKey="HKEY_CLASSES_ROOT\Directory\shell\TimestampChanger" -clip_file="$HOME/.tsch" +scriptPath="$(cygpath -w "$(pwd)")\tscp.sh" +iconPath="$(cygpath -w "$(pwd)")\tscp.ico" +fRootKey="HKEY_CLASSES_ROOT\*\shell\TimestampCopy" +dRootKey="HKEY_CLASSES_ROOT\Directory\shell\TimestampCopy" +clip_file="$HOME/.tscp" datetime_format="yyyy-MM-dd HH:mm:ss" function main() { @@ -35,7 +35,7 @@ function show_menu() { set +e clear echo - echo -e "Timestamp Changer ($version)" + echo -e "Timestamp Copy ($version)" echo " " echo " [i] Install " echo " [u] Uninstall " @@ -76,7 +76,7 @@ function install() { function install_internal() { itemPath="$1\\shell" - add_menu_root "$1" "Timestamp Changer" "$iconPath" + add_menu_root "$1" "Timestamp Copy" "$iconPath" add_menu_item "$itemPath\\010CopyDateCreatedModified" "Copy" "copy" add_menu_item "$itemPath\\020PasteDateCreatedModified" "Paste" "paste" add_menu_item "$itemPath\\030PasteDateCreated" "Paste 'Date Created'" "pastedc" From 915753fd1f6c839b88379344bb74dd43773ea5ed Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Mon, 14 Apr 2025 00:50:36 +0200 Subject: [PATCH 38/40] rename repo only --- README.md | 4 ++-- tscp.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 79da8fc..f295980 100644 --- a/README.md +++ b/README.md @@ -58,12 +58,12 @@ Each entry starts Bash terminal and runs the [`tscp.sh`](tscp.sh) script with th 1. Clone the repository. ```bash - git clone https://github.com/jurakovic/tscp.git + git clone https://github.com/jurakovic/timestamp-copy.git ``` 2. Open an elevated Bash terminal ('Run as Administrator'). 3. Navigate to the directory where you cloned the repository. ```bash - cd tscp + cd timestamp-copy ``` 4. Add the context menu entries. This can be done in two ways. Run the `tscp.sh` script diff --git a/tscp.sh b/tscp.sh index 18700b1..ed2ca04 100644 --- a/tscp.sh +++ b/tscp.sh @@ -1,7 +1,7 @@ #!/bin/bash ##### constants -homepage="https://github.com/jurakovic/tscp" +homepage="https://github.com/jurakovic/timestamp-copy" version="1.0.0" bashPath="C:\Program Files\Git\usr\bin\bash.exe" scriptPath="$(cygpath -w "$(pwd)")\tscp.sh" From da160ca7b9be762cf72702406bbfedf1c25afb8e Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Mon, 14 Apr 2025 21:22:42 +0200 Subject: [PATCH 39/40] update readme --- README.md | 17 +++++++---------- img/3paste.png | Bin 7077 -> 0 bytes img/{1contextmenu.png => contextmenu.png} | Bin img/{2copy.png => copy.png} | Bin img/{4pastedone.png => paste.png} | Bin 5 files changed, 7 insertions(+), 10 deletions(-) delete mode 100644 img/3paste.png rename img/{1contextmenu.png => contextmenu.png} (100%) rename img/{2copy.png => copy.png} (100%) rename img/{4pastedone.png => paste.png} (100%) diff --git a/README.md b/README.md index f295980..c32aade 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ This solution is especially useful when you need to preserve or replicate Date C Adds convenient right-click options for both files and folders: -![ContextMenu](img/1contextmenu.png) +![ContextMenu](img/contextmenu.png) #### Copy Mode @@ -45,13 +45,13 @@ Each entry starts Bash terminal and runs the [`tscp.sh`](tscp.sh) script with th - Bash (recommended: Git for Windows) - Administrator privileges (required for installation) -> **Bash on Windows** can be installed in several ways, including: +> **Bash** can be installed on Windows in several ways, including: > - [Git for Windows](https://gitforwindows.org) (comes with the MSYS2 runtime – [Git for Windows flavor](https://github.com/git-for-windows/build-extra/blob/main/ReleaseNotes.md)) > - [MSYS2](https://www.msys2.org) > - [Cygwin](https://cygwin.com) > - [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) -> -> The recommended way is to use **Git for Windows** (MSYS2) as it provides a lightweight and user-friendly environment for running Bash scripts on Windows. +> +> The recommended way is to use **Git for Windows** as it provides a lightweight and user-friendly environment for running Bash scripts on Windows. > This script is designed to work with Git for Windows and the official MSYS2 runtime. It doesn't work with Cygwin or WSL. It could work with some minor modifications, and while I don't plan to do it myself, feel free to update it to suit your own needs. ### Installation @@ -91,13 +91,10 @@ Each entry starts Bash terminal and runs the [`tscp.sh`](tscp.sh) script with th ### Screenshots Copy -![Copy](img/2copy.png) +![Copy](img/copy.png) -Paste (confirmation) -![Copy](img/3paste.png) - -Paste (done) -![Copy](img/4pastedone.png) +Paste +![Copy](img/paste.png) ### Limitation diff --git a/img/3paste.png b/img/3paste.png deleted file mode 100644 index 11c1449277fa034658a00d8b64bf9b13450beba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7077 zcmdUUcR1Y7xA1DwyG51|MBP=R1W}>}L6l{M5UZC+^d(B7FA}1xP9o74S-neS5f+IW zy_e`jR*7~u-{0>(_ulXOeV_OK`_A*sGiOelGv}O{&&+&~_YJgZsX$Z!0DxBKu7)uH zKnw!_h#(Xs1dPy<(tAQf(@CrIOyo;czJn+goMPz#CUjkI5|0iKp-_WwWz2l4Gqn;Yu6wU2qPmSGcz*? z1mfrCr=_J;Qc?ng!SwX>3=9my!ongVBJJ(%mzS5ly}iD^zBV>C>FMbU3kyX>Mbp#M zwY9a|+uO^_%P}!A!^6XBYHD~qesFLwHa1pEOY7+9sIahbc6RpGty=;D0^Ho(?Ck6m z6cpj%;cz%yMn*#JvYuCL z5PU)T^sa?B06>TRQ;AZ+bQ}aEyN@Q!$K;8lkH4*#1K_@`i-(Vxfu`wo88JyQsnZsc zIs#9f15C$JM@IxeLFkYHKtyB!A_AmKs2u->2@wJa5t00bCnms>M8p6FLi>PFU7|_< z!n+dSKZVAh2=Idt$p38rHYk8VN+bu65;!HKZb}fn`Ipu|Ba*%Om!=c~{HG8T^b-HY zX)J$>0R3A^QbOVnb!S7Ay{nIa23%Fu(YRxZu-?vjX}Khu+dWa&{N25Ba(3qM&@YTK zGhM4Tqkxu3zS`GqCHQ@>;%zu zQ2WUut`dOIx?47Pv6I(!W!{3P@(mE-M<@?MKmbEWr!_g}4<8Szs}CacNIwowOq>iE z63?%1Z3V3e67Bg|VcL$*<=W5JXxHlJ&bZ$79*@I=Pk~cR7xPvm3`Bb9-HXoli!5Aw z$fos`y=fTyJS!A0moe9zMs!;)6&89n+kTwYcQgvoGg-p#hJlhE)Jp;F| z*PQDy!XsgigzsSdm_K_=>COqw{#%d-<98IVzuh_`5?oCYJG$Q%4NKs^VFs@?-hMwB zqIGyqngBfkf)BU8oE^T%V`SYV-+dN?hlRoA$K{q9#|`N$>eq_QI0e8#woMJ~MWIcn z!M#to@1Sim-oOs={<|ZejFLE!m+Q^eNjJ22bFP`GRrpQVPBH8GHs&ndSU-ZDCSt;K zOFOj-OBZX3G`K#o>7@gIZoGw`cb?Fr7j5C&0?j#eGw%;6Wk_4!56deAjPEH=Y<}74 z0hW2I*~|%c?G-i>Aadkx2F9{U>?&6?76U2k(YndpPc-;RpXaV zJil7Zdv(W}qa=ItASL_YrW3*Ls(gcvCY>Z74bhp3Qoi+i(OWlszJyfa zmKitTgOtZQ5#nZR(cB@&3o7flP$<$Y4nLe=6MDX6=!_Y=0WrI*@$PFv*RRc%sLP;t z@#D%ermgP}E`CJdlV+7Sx$CF2AJ%ea)|DHd zGAz~x3tJIo%^<5B6NI3el(v&i)(niO3*;42?9fZWW1Gp$*O(G=eqlXwmQyh2t?wda z9X@f*_{(=~2xAPeayiS#ANnULWmJ|^MAVg$4^m(=7h)^98zWr!Y-9ARV{Pr?IL#%n zeAp497-n<1B8aF}w#EEDJyjZW7_p!5j|Fk}-P=+6!Ro812I+!@K4~{$!);JO zxqT-${jd5~Y-{*_(1Mg|B0K30lV07bxVJ6oHy^{_DRbx9n9}`%iBMD3BPt^IC1B+<}+PMzoJX^ z!wn&5hTZ<2|B&so^TTzWwALaIlUU7?5g?cEHOvo+HW<0rbem1yT5tnwo+tuam3J^r zIpkMqsO~eEzO^F{-}XdNq*r zlSSE6(S?ycMie6pjvTIpN`$$a$Cr}nwZh%SrDXyGdk7f?Q7R1IQk%1~zy8xqUBdV0Y~IsrcUA_prH;qfXR0p3N>aguI%!s`_AV zceeHPRHbeJ+;wrbGB?+Hx-^U+M}4S1P`Mx@pI=vnFp$NN*&tcc8 z7^pRf;4g#-#7J#qYVL`!q`V<{2onMiVFWk75zjuD{%RYav;Q{FbV`23Z#CH&$frWt z5(vQ zQhN)76ms?@?cBeZ$740M%On(siw9UY!x9`+tSUR~U$7O(b|v*E9cnd8xeV&RS1yLe zuy$@`Cp#_1O*Zm-s34)Kx+Oh5os#5L=9aO;!|ORWPdHt%AWxaPN^{$)k8#G&L{jQU zne~*3V_T>Lmih)39gBGNcCwKnZe82PQlX;uo_R>;s(6?a8TVIbsdDSc9%6CbVlX-m zx_tG{cDF`hdJYG+R98tAeelReo`t-)3s%11qxR744OI@AbqW;TbEzG==$2oErmY?N>R56@nEh-DH#ALcvb&Kq|t6Zlz0?HPEOMWleyqN<{G zp3k4|1L3uWWa5s$J_pOL@*>nzy(CRB@ic*XQRss>OqOk`uHbC6gzu=Hg>bp8b%UF- zmp|=Yi6|d4mbaUjjB&XB&;&LXu+e?RtGHX1jzMe|VpcXkEL}w66vQiA%A#eHJym|> z(yM!Nmkdv3Z*&X-b7?}&TTN4?()W5sP8j>9H?>IB&aWI!!rU=GbmKYMIvg2ZjCc8V zbY^wJ)m>GE!shO3&ALK`dBP`tOyiN9ulFt^zQkH zrX#|PBc64DPvA!17QLxRZ{&;XP8autiPU)lD`30B_gkonTX=IBJD)OR#_WYuQhD1v zwvUO zTA&(@lF6X%cFYyyTf_IKNlmSRFJAuURDN8LL8+rF%n~|O+r2fM2xY_BBZ+w-72e9F z-NOZ?kc=e50fC@JpGdXQRraBX6Um7nSNJ-&G_e1nH3itU3LEjL06KDmoa}mBS_q z)csf?m%((&yFFYEs0c}4iM;QRW5wMj9X+(LZi#(1)u$RCe7qGTZ3--5*$8cPHXhA% zsWwzMQ-$R4htXRj{4K|z;!q@isKHjZs?tEca^3Xz^DiM#j(BmixPc!Q`fy!-Ey1>r;U{yeXpe^U4;@}Be-c~J>r)#twqhYFx*K})>C_=^f0hQ7ZUK+ z9pmL24}?G7XLsw3zWUH}B4RV~9rP(&A2!lyvL-Y2_(5eU{8bYb;5RJnRJu~V zQ$Jh86IZ9CxrH9POUt%$l0M1N)InJbQ{SWoLDN^G*oUwvWuU>3Plxu1guT+vSDENR%*(Q;odVB2)jgT-H`?wgFGgMo{ALbqn7HcjQ zf_UojPvS4jZcM6xv$d&zx;Tq9WLVP6&d^3 zT~lN1RGOudSVTO}qZlr`dEyCzUOU|p2wt(mq z)SGQ4WbeDf`j!Z|Fln1YrJK`K{m>tARGWN9e$L>h~?Z~FW>`{Pvn0;Rs6Fk5nPEaCUa}A z4_+dXm_dot^4!j5i33XV&9PXI*#ACn#YYeR(qWXD;N?6_eW#5Af zT&lu~#v?jiV=^IWmZT)o(q!`1T%blxA|Wk5bz`Uz*rAHJXhB=w!(n2anc65>lz31U zn4K`uX^asY>CenW+*jxn5Hd3vS-z+7scPm4#Y=Z%duMy_fP?QxN$vtZ!Et0sKI{F) z-qJiRp;z(O6m;a4@vX9~mXIc{qma|%bc`dsTxBefjMkw~cvJ%0fT_u2uLbsIS79 zU;(&EX5TRgGZvqDZ{IeK@}d6$t35MgW2ytoY-*0v1On2*zmbCfOEdKy>SlV^Kbjw$ z+_0?ob7#Sf23T>ul@rQU8S`OMJ1 z7QG?u3NL|}q!l|Z#PGjoRu|piuVg>9niW&FnyWhfdGYf%iAnIAZ=s6C$O2G?T$OaA z6{J^wW=r1JaAo>oCc3Xd7&oN}gMe|_TKbSw=&0slA1)7C@#Q9bM&c0jUSNxP!uL|| zBtS9`r}ZkcaT~b#SX5t3WqSHytXV{6gx8LkzN}+V(};eoV-Dm=yu-$CA9ECUh#%+R z(wV$Wc3cw1SnYguX3bJG#nSoRzZ^2!uy&v?Zv$an*)9m?oT3T!X*ECzqAK)4{5Ru2 zuWcyujp5I7kFmX-XRE)hUzXP);_+Q5fla~MuceVsp&$Af6lERDx2XC}cxt`<4Gh01 z3)#iP{J-nIJ?T#B@1%J8ERSk#erVa1EADAalNH3{30oY;;r6rNipX>b17^7$#<< z0@AU`;&!Wy+)l4NZI`Zy&Eq3^41N-(2l@TDhH@7}bN+LuXc)A~)?|@ga(pAq_7n9Q z|5t|1+JzXIr3E&bx+-^09rV~pOLTu?^q9%FXN%rRdTr+N-Zq0*FxDKeV97x)5>vl7 z^@6zs$08DjUUQVnA2;3I-+0JKYtZ^(YK9u#D(jB9at2{>He=936ItZjjEZ{B4x%%R z_wrlj*H-oS2Hc+VjJbU#++6DmStcRe^wi4A)v`4(UM3+$e=XIktvaR=Eg;t0Y`X%f zchVd@b>Fi0m@w9S(XcTPR!)jVDL%~-+W2+Wv>Y0soN*PC&E~I;{vIW2mRtQcK3^^a znI@D)I}Atey<|HS?fq$GG*hwu0XqQ(}g>Tpd)KBr*4hQT#{ zYj1KfMj*DL!VS&Et%H6Wm_W3Ou_nAnmt-sV3QBuQEHGz!eB+Sn+mG0B?%kd%Pb6od zu(%foetGZPitC62{KjT+&&W2b)Wv?^x&`tz*Fag5PffrCH;&aUCgbS4{ty31$I@Z< z@tBfc?Kj-)=EJ@CN&$z5?;gAqUfTiF5@NRW2~Mlt{>3uf3@@8KYVQ@RH|kL7CUF9r z*=q_&hfVlExL3Hk60exnay=oVFa49ITmohfmS3brRo++$;tlCJVBj)k!v;Q%z!J~* z{J&nJ{%>c-zn-c7fv7mA4qSu;JP!Q~$hsn@ferifUqwgL LK%+wKQP_U~l#At+ diff --git a/img/1contextmenu.png b/img/contextmenu.png similarity index 100% rename from img/1contextmenu.png rename to img/contextmenu.png diff --git a/img/2copy.png b/img/copy.png similarity index 100% rename from img/2copy.png rename to img/copy.png diff --git a/img/4pastedone.png b/img/paste.png similarity index 100% rename from img/4pastedone.png rename to img/paste.png From 6abe0e0e940180ec1ce2c3c6d2bccb5e943c4290 Mon Sep 17 00:00:00 2001 From: jurakovic <17744091+jurakovic@users.noreply.github.com> Date: Mon, 14 Apr 2025 21:24:46 +0200 Subject: [PATCH 40/40] add help -? cli option --- tscp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tscp.sh b/tscp.sh index ed2ca04..919aeb2 100644 --- a/tscp.sh +++ b/tscp.sh @@ -18,7 +18,7 @@ function main() { -i|--install) install ;; -u|--uninstall) uninstall ;; -v|--version) echo "$version" ;; - -h|--help) echo "For help visit $homepage" ;; + -h|--help|-?) echo "For help visit $homepage" ;; esac elif [ "$#" -eq 2 ] # context menu commands then